diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-12-28 03:47:02 -0500 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-12-28 03:47:02 -0500 |
| commit | a9acc8cb4574ce8f1792fbfa9bd93985a6b47f87 (patch) | |
| tree | d31ec81c7dec180d4f744950e8d504b18c3aa761 /src/analyze.cpp | |
| parent | dc26dec8e0c86c42485842eb3949edfe816f0e55 (diff) | |
| download | zig-a9acc8cb4574ce8f1792fbfa9bd93985a6b47f87.tar.gz zig-a9acc8cb4574ce8f1792fbfa9bd93985a6b47f87.zip | |
IR: error for returning from defer expression
also fix peer type resolution for pure error mixed with error union
Diffstat (limited to 'src/analyze.cpp')
| -rw-r--r-- | src/analyze.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index d19bc56143..2e3df10a81 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -163,6 +163,13 @@ ScopeDefer *create_defer_scope(AstNode *node, Scope *parent) { return scope; } +ScopeDeferExpr *create_defer_expr_scope(AstNode *node, Scope *parent) { + assert(node->type == NodeTypeDefer); + ScopeDeferExpr *scope = allocate<ScopeDeferExpr>(1); + init_scope(&scope->base, ScopeIdDeferExpr, node, parent); + return scope; +} + Scope *create_var_scope(AstNode *node, Scope *parent, VariableTableEntry *var) { ScopeVarDecl *scope = allocate<ScopeVarDecl>(1); init_scope(&scope->base, ScopeIdVarDecl, node, parent); @@ -2183,6 +2190,7 @@ FnTableEntry *scope_get_fn_if_root(Scope *scope) { return nullptr; case ScopeIdDecls: case ScopeIdDefer: + case ScopeIdDeferExpr: case ScopeIdVarDecl: case ScopeIdCImport: case ScopeIdLoop: |
