diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-07-18 21:15:16 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-07-18 21:15:16 -0700 |
| commit | c597ba32d930df0c2d5be846f3b14a19a5c440c5 (patch) | |
| tree | e3d8ade8a28a9b3d9366bbf3471cc590b385224a /src | |
| parent | 3145ae561dadc22105997483fe2330fb96a5c8dd (diff) | |
| download | zig-c597ba32d930df0c2d5be846f3b14a19a5c440c5.tar.gz zig-c597ba32d930df0c2d5be846f3b14a19a5c440c5.zip | |
Sema: fix return type of generic function is function pointer
also that's one less standalone test and one more behavior test.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Sema.zig | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index afc0cc5988..a88b29cd10 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -8550,8 +8550,22 @@ fn resolveGenericBody( const err = err: { // Make sure any nested param instructions don't clobber our work. const prev_params = block.params; + const prev_no_partial_func_type = sema.no_partial_func_ty; + const prev_generic_owner = sema.generic_owner; + const prev_generic_call_src = sema.generic_call_src; + const prev_generic_call_decl = sema.generic_call_decl; block.params = .{}; - defer block.params = prev_params; + sema.no_partial_func_ty = true; + sema.generic_owner = .none; + sema.generic_call_src = .unneeded; + sema.generic_call_decl = .none; + defer { + block.params = prev_params; + sema.no_partial_func_ty = prev_no_partial_func_type; + sema.generic_owner = prev_generic_owner; + sema.generic_call_src = prev_generic_call_src; + sema.generic_call_decl = prev_generic_call_decl; + } const uncasted = sema.resolveBody(block, body, func_inst) catch |err| break :err err; const result = sema.coerce(block, dest_ty, uncasted, src) catch |err| break :err err; |
