| ... | ... | @@ -1757,6 +1757,32 @@ static ZigType *analyze_fn_type(CodeGen *g, AstNode *proto_node, Scope *child_sc |
| 1757 | 1757 | return g->builtin_types.entry_invalid; |
| 1758 | 1758 | } |
| 1759 | 1759 | |
| 1760 | switch (specified_return_type->id) { |
| 1761 | case ZigTypeIdInvalid: |
| 1762 | zig_unreachable(); |
| 1763 | |
| 1764 | case ZigTypeIdUndefined: |
| 1765 | case ZigTypeIdNull: |
| 1766 | case ZigTypeIdArgTuple: |
| 1767 | add_node_error(g, fn_proto->return_type, |
| 1768 | buf_sprintf("return type '%s' not allowed", buf_ptr(&specified_return_type->name))); |
| 1769 | return g->builtin_types.entry_invalid; |
| 1770 | |
| 1771 | case ZigTypeIdOpaque: |
| 1772 | { |
| 1773 | ErrorMsg* msg = add_node_error(g, fn_proto->return_type, |
| 1774 | buf_sprintf("opaque return type '%s' not allowed", buf_ptr(&specified_return_type->name))); |
| 1775 | Tld *tld = find_decl(g, &fn_entry->fndef_scope->base, &specified_return_type->name); |
| 1776 | if (tld != nullptr) { |
| 1777 | add_error_note(g, msg, tld->source_node, buf_sprintf("declared here")); |
| 1778 | } |
| 1779 | return g->builtin_types.entry_invalid; |
| 1780 | } |
| 1781 | |
| 1782 | default: |
| 1783 | break; |
| 1784 | } |
| 1785 | |
| 1760 | 1786 | if (fn_proto->auto_err_set) { |
| 1761 | 1787 | ZigType *inferred_err_set_type = get_auto_err_set_type(g, fn_entry); |
| 1762 | 1788 | if ((err = type_resolve(g, specified_return_type, ResolveStatusSizeKnown))) |
| ... | ... | @@ -1782,15 +1808,11 @@ static ZigType *analyze_fn_type(CodeGen *g, AstNode *proto_node, Scope *child_sc |
| 1782 | 1808 | |
| 1783 | 1809 | switch (fn_type_id.return_type->id) { |
| 1784 | 1810 | case ZigTypeIdInvalid: |
| 1785 | | zig_unreachable(); |
| 1786 | | |
| 1787 | 1811 | case ZigTypeIdUndefined: |
| 1788 | 1812 | case ZigTypeIdNull: |
| 1789 | 1813 | case ZigTypeIdArgTuple: |
| 1790 | 1814 | case ZigTypeIdOpaque: |
| 1791 | | add_node_error(g, fn_proto->return_type, |
| 1792 | | buf_sprintf("return type '%s' not allowed", buf_ptr(&fn_type_id.return_type->name))); |
| 1793 | | return g->builtin_types.entry_invalid; |
| 1815 | zig_unreachable(); |
| 1794 | 1816 | |
| 1795 | 1817 | case ZigTypeIdComptimeFloat: |
| 1796 | 1818 | case ZigTypeIdComptimeInt: |