aboutsummaryrefslogtreecommitdiff
path: root/src/stage1/parser.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-10-07 16:58:50 -0400
committerGitHub <noreply@github.com>2020-10-07 16:58:50 -0400
commit95a37373e9f576854956c2909cc128b5b6388ec6 (patch)
tree647f62398f1afbc0546d223b05203e6c69372ba2 /src/stage1/parser.cpp
parent3c43eeceab70f78939401b68811f152a7f29b191 (diff)
parentbf4bfe54ac13512d7553a7be83ae19e908e9c294 (diff)
downloadzig-95a37373e9f576854956c2909cc128b5b6388ec6.tar.gz
zig-95a37373e9f576854956c2909cc128b5b6388ec6.zip
Merge pull request #6421 from tadeokondrak/opaque-syntax
Add opaque syntax that allows declarations
Diffstat (limited to 'src/stage1/parser.cpp')
-rw-r--r--src/stage1/parser.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/stage1/parser.cpp b/src/stage1/parser.cpp
index 1253baf9ea..219f767a9c 100644
--- a/src/stage1/parser.cpp
+++ b/src/stage1/parser.cpp
@@ -2920,6 +2920,7 @@ static AstNode *ast_parse_container_decl_auto(ParseContext *pc) {
// <- KEYWORD_struct
// / KEYWORD_enum (LPAREN Expr RPAREN)?
// / KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)?
+// / KEYWORD_opaque
static AstNode *ast_parse_container_decl_type(ParseContext *pc) {
Token *first = eat_token_if(pc, TokenIdKeywordStruct);
if (first != nullptr) {
@@ -2929,6 +2930,14 @@ static AstNode *ast_parse_container_decl_type(ParseContext *pc) {
return res;
}
+ first = eat_token_if(pc, TokenIdKeywordOpaque);
+ if (first != nullptr) {
+ AstNode *res = ast_create_node(pc, NodeTypeContainerDecl, first);
+ res->data.container_decl.init_arg_expr = nullptr;
+ res->data.container_decl.kind = ContainerKindOpaque;
+ return res;
+ }
+
first = eat_token_if(pc, TokenIdKeywordEnum);
if (first != nullptr) {
AstNode *init_arg_expr = nullptr;