diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-04-06 14:02:29 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-04-06 14:02:29 -0700 |
| commit | 22ef416d4de6e37fbe8428351c4043e5acc3c818 (patch) | |
| tree | db228f9651d9f6503c3c3dc015641f34fb332f8d /src | |
| parent | 67152f729431d58a9cd140498d50c1e9d795c34b (diff) | |
| download | zig-22ef416d4de6e37fbe8428351c4043e5acc3c818.tar.gz zig-22ef416d4de6e37fbe8428351c4043e5acc3c818.zip | |
fix generics not using ast clone
Diffstat (limited to 'src')
| -rw-r--r-- | src/analyze.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index beffacc456..99f1dac3c4 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -4675,13 +4675,15 @@ static TypeTableEntry *analyze_generic_fn_call(CodeGen *g, ImportTableEntry *imp // make a type from the generic parameters supplied assert(decl_node->type == NodeTypeFnProto); - AstNode *impl_decl_node = ast_clone_subtree(decl_node); + AstNode *impl_fn_def_node = ast_clone_subtree(decl_node->data.fn_proto.fn_def_node); + AstNode *impl_decl_node = impl_fn_def_node->data.fn_def.fn_proto; + impl_decl_node->data.fn_proto.fn_def_node = impl_fn_def_node; - preview_fn_proto_instance(g, import, decl_node, child_context); + preview_fn_proto_instance(g, import, impl_decl_node, child_context); g->generic_table.put(generic_fn_type_id, impl_decl_node); - FnTableEntry *fn_table_entry = decl_node->data.fn_proto.fn_table_entry; + FnTableEntry *fn_table_entry = impl_decl_node->data.fn_proto.fn_table_entry; return resolve_expr_const_val_as_fn(g, node, fn_table_entry); } |
