aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-04-18 22:21:54 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-04-18 22:21:54 -0400
commit06909ceaab8ecb33d1f41049870797a3ae721610 (patch)
tree921bdc2b695512725e60e028521cef2d386c93da /src/analyze.cpp
parentca4341f7ba845e7af3c6f2be52cd60c51ec6d68f (diff)
downloadzig-06909ceaab8ecb33d1f41049870797a3ae721610.tar.gz
zig-06909ceaab8ecb33d1f41049870797a3ae721610.zip
support break in suspend blocks
* you can label suspend blocks * labeled break supports suspend blocks See #803
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index ca18208ba9..d142b86326 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -156,6 +156,14 @@ ScopeLoop *create_loop_scope(AstNode *node, Scope *parent) {
return scope;
}
+ScopeSuspend *create_suspend_scope(AstNode *node, Scope *parent) {
+ assert(node->type == NodeTypeSuspend);
+ ScopeSuspend *scope = allocate<ScopeSuspend>(1);
+ init_scope(&scope->base, ScopeIdSuspend, node, parent);
+ scope->name = node->data.suspend.name;
+ return scope;
+}
+
ScopeFnDef *create_fndef_scope(AstNode *node, Scope *parent, FnTableEntry *fn_entry) {
ScopeFnDef *scope = allocate<ScopeFnDef>(1);
init_scope(&scope->base, ScopeIdFnDef, node, parent);
@@ -3616,6 +3624,7 @@ FnTableEntry *scope_get_fn_if_root(Scope *scope) {
case ScopeIdVarDecl:
case ScopeIdCImport:
case ScopeIdLoop:
+ case ScopeIdSuspend:
case ScopeIdCompTime:
case ScopeIdCoroPrelude:
scope = scope->parent;