diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-04-13 12:28:07 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-04-13 12:28:07 -0700 |
| commit | 83a59c4d077ead78a8c0ccecf8d4f7970309bf76 (patch) | |
| tree | 956c3b56719601a2c2d437515641166929154960 /src/parser.cpp | |
| parent | 3f9632bb404584db872ed8e2318f770cde8b16ee (diff) | |
| download | zig-83a59c4d077ead78a8c0ccecf8d4f7970309bf76.tar.gz zig-83a59c4d077ead78a8c0ccecf8d4f7970309bf76.zip | |
fix evaluating generic functions in wrong context
Diffstat (limited to 'src/parser.cpp')
| -rw-r--r-- | src/parser.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index 3c9bdaa78c..650a7e614d 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -3036,15 +3036,21 @@ AstNode *ast_clone_subtree(AstNode *old_node, uint32_t *next_node_index) { // none break; case NodeTypePrefixOpExpr: - clone_subtree_field(&new_node->data.prefix_op_expr.primary_expr, old_node->data.prefix_op_expr.primary_expr, next_node_index); + clone_subtree_field(&new_node->data.prefix_op_expr.primary_expr, + old_node->data.prefix_op_expr.primary_expr, next_node_index); break; case NodeTypeFnCallExpr: - clone_subtree_field(&new_node->data.fn_call_expr.fn_ref_expr, old_node->data.fn_call_expr.fn_ref_expr, next_node_index); - clone_subtree_list(&new_node->data.fn_call_expr.params, &old_node->data.fn_call_expr.params, next_node_index); + assert(!old_node->data.fn_call_expr.resolved_expr.has_global_const); + clone_subtree_field(&new_node->data.fn_call_expr.fn_ref_expr, + old_node->data.fn_call_expr.fn_ref_expr, next_node_index); + clone_subtree_list(&new_node->data.fn_call_expr.params, + &old_node->data.fn_call_expr.params, next_node_index); break; case NodeTypeArrayAccessExpr: - clone_subtree_field(&new_node->data.array_access_expr.array_ref_expr, old_node->data.array_access_expr.array_ref_expr, next_node_index); - clone_subtree_field(&new_node->data.array_access_expr.subscript, old_node->data.array_access_expr.subscript, next_node_index); + clone_subtree_field(&new_node->data.array_access_expr.array_ref_expr, + old_node->data.array_access_expr.array_ref_expr, next_node_index); + clone_subtree_field(&new_node->data.array_access_expr.subscript, + old_node->data.array_access_expr.subscript, next_node_index); break; case NodeTypeSliceExpr: clone_subtree_field(&new_node->data.slice_expr.array_ref_expr, old_node->data.slice_expr.array_ref_expr, next_node_index); |
