From 2b3af4ef6b79b8fe178656b069f837eff82ae8c3 Mon Sep 17 00:00:00 2001 From: Jimmi HC Date: Wed, 30 May 2018 10:30:09 +0200 Subject: [PATCH] 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. --- src/ir.cpp | 4 ---- 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); +}