aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2017-06-29 20:56:18 +0100
committerGinger Bill <bill@gingerbill.org>2017-06-29 20:56:18 +0100
commit69f7382eec47cf5c60ba013c49bcc2a5f7f6a279 (patch)
treec7fa91f6500c48ac4b65c856878b700d7c6a183f /src/parser.cpp
parent7e3293fc20592bf978b3cb9ceeeb0d88590b2909 (diff)
Implicit parametric polymorphic procedures
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index 7368b81e8..69b77bf2f 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -632,6 +632,10 @@ AstNode *clone_ast_node(gbAllocator a, AstNode *node) {
case AstNode_Undef: break;
case AstNode_BasicLit: break;
case AstNode_BasicDirective: break;
+
+ case AstNode_PolyType:
+ n->PolyType.type = clone_ast_node(a, n->PolyType.type);
+ break;
case AstNode_Ellipsis:
n->Ellipsis.expr = clone_ast_node(a, n->Ellipsis.expr);
break;
@@ -3259,8 +3263,10 @@ u32 check_field_prefixes(AstFile *f, isize name_count, u32 allowed_flags, u32 se
syntax_error(f->curr_token, "`#c_vararg` is not allowed within this field list");
set_flags &= ~FieldFlag_c_vararg;
}
- if ((allowed_flags&FieldFlag_dollar) == 0 && (set_flags&FieldFlag_dollar)) {
- syntax_error(f->curr_token, "`$` is only allowed within procedures");
+ // if ((allowed_flags&FieldFlag_dollar) == 0 && (set_flags&FieldFlag_dollar)) {
+ if ((set_flags&FieldFlag_dollar)) {
+ // syntax_error(f->curr_token, "`$` is only allowed within procedures");
+ syntax_error(f->curr_token, "`$` is not yet supported");
set_flags &= ~FieldFlag_dollar;
}
return set_flags;