diff options
| author | Jimmi HC <jhc@liab.dk> | 2018-05-30 10:30:09 +0200 |
|---|---|---|
| committer | Jimmi HC <jhc@liab.dk> | 2018-05-30 10:30:09 +0200 |
| commit | 2b3af4ef6b79b8fe178656b069f837eff82ae8c3 (patch) | |
| tree | ed74baa113045d386bd21d71259160f0f0d1994f | |
| parent | b0eebfa560b7c05859a535bf46abd8b9cf9306b3 (diff) | |
| download | zig-2b3af4ef6b79b8fe178656b069f837eff82ae8c3.tar.gz zig-2b3af4ef6b79b8fe178656b069f837eff82ae8c3.zip | |
fixed #1009
ir_make_type_info_defs already calls resolve_top_level_decl on all Tld
when building the def array. This means, that there is no reason that
analyze_fn_body is nessesary, as the fn type should have already been
resolved completly. The only thing analyze_fn_body does here, is cause
problems with generic functions.
| -rw-r--r-- | src/ir.cpp | 4 | ||||
| -rw-r--r-- | test/cases/type_info.zig | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/ir.cpp b/src/ir.cpp index 440063d58d..5d182fe9b0 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -15982,10 +15982,6 @@ static void ir_make_type_info_defs(IrAnalyze *ira, ConstExprValue *out_val, Scop FnTableEntry *fn_entry = ((TldFn *)curr_entry->value)->fn_entry; assert(!fn_entry->is_test); - analyze_fn_body(ira->codegen, fn_entry); - if (fn_entry->anal_state == FnAnalStateInvalid) - return; - AstNodeFnProto *fn_node = (AstNodeFnProto *)(fn_entry->proto_node); ConstExprValue *fn_def_val = create_const_vals(1); diff --git a/test/cases/type_info.zig b/test/cases/type_info.zig index eee5d1f2ca..05266feb9c 100644 --- a/test/cases/type_info.zig +++ b/test/cases/type_info.zig @@ -233,3 +233,10 @@ fn testFunction() void { fn foo(comptime a: usize, b: bool, args: ...) usize { return 0; } + +test "typeInfo with comptime parameter in struct fn def" { + const S = struct { + pub fn func(comptime x: f32) void {} + }; + comptime var info = @typeInfo(S); +} |
