aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2018-06-03 10:51:43 +0100
committergingerBill <bill@gingerbill.org>2018-06-03 10:51:43 +0100
commit398109ac841cb8c405b54da529837800ed8cddd1 (patch)
treecc19289df5a606674e61ee0d22385aa4174ff92c /src/parser.cpp
parent12b870ba6671854a3de8605f8dd8f36d1de90c6a (diff)
Remove need for __llvm_core
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index 98e3bc3c9..2aeb98706 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -1318,7 +1318,7 @@ bool is_semicolon_optional_for_node(AstFile *f, AstNode *s) {
case AstNode_BitFieldType:
return true;
case AstNode_ProcLit:
- return s->ProcLit.body != nullptr;
+ return true;
case AstNode_PackageDecl:
case AstNode_ImportDecl:
@@ -2410,6 +2410,8 @@ AstNode *parse_foreign_block(AstFile *f, Token token) {
AstNode *foreign_library = nullptr;
if (f->curr_token.kind == Token_export) {
foreign_library = ast_implicit(f, expect_token(f, Token_export));
+ } else if (f->curr_token.kind == Token_OpenBrace) {
+ foreign_library = ast_ident(f, blank_token);
} else {
foreign_library = parse_ident(f);
}
@@ -2421,19 +2423,16 @@ AstNode *parse_foreign_block(AstFile *f, Token token) {
defer (f->in_foreign_block = prev_in_foreign_block);
f->in_foreign_block = true;
- if (f->curr_token.kind != Token_OpenBrace) {
- parse_foreign_block_decl(f, &decls);
- } else {
- open = expect_token(f, Token_OpenBrace);
- while (f->curr_token.kind != Token_CloseBrace &&
- f->curr_token.kind != Token_EOF) {
- parse_foreign_block_decl(f, &decls);
- }
+ open = expect_token(f, Token_OpenBrace);
- close = expect_token(f, Token_CloseBrace);
+ while (f->curr_token.kind != Token_CloseBrace &&
+ f->curr_token.kind != Token_EOF) {
+ parse_foreign_block_decl(f, &decls);
}
+ close = expect_token(f, Token_CloseBrace);
+
AstNode *decl = ast_foreign_block_decl(f, token, foreign_library, open, close, decls, docs);
expect_semicolon(f, decl);
return decl;
@@ -3512,6 +3511,7 @@ AstNode *parse_foreign_decl(AstFile *f) {
switch (f->curr_token.kind) {
case Token_export:
case Token_Ident:
+ case Token_OpenBrace:
return parse_foreign_block(f, token);
case Token_import: {