Commit eafb8e8572
Changed files (2)
src
test
cases
src/analyze.cpp
@@ -1184,7 +1184,7 @@ ZigType *get_fn_type(CodeGen *g, FnTypeId *fn_type_id) {
gen_param_info->src_index = i;
gen_param_info->gen_index = SIZE_MAX;
- if ((err = ensure_complete_type(g, type_entry)))
+ if ((err = type_resolve(g, type_entry, ResolveStatusZeroBitsKnown)))
return g->builtin_types.entry_invalid;
if (is_c_abi)
test/cases/misc.zig
@@ -699,3 +699,18 @@ test "equality compare fn ptrs" {
var a = emptyFn;
assert(a == a);
}
+
+test "self reference through fn ptr field" {
+ const S = struct {
+ const A = struct {
+ f: fn (A) u8,
+ };
+
+ fn foo(a: A) u8 {
+ return 12;
+ }
+ };
+ var a: S.A = undefined;
+ a.f = S.foo;
+ assert(a.f(a) == 12);
+}