From a9acc8cb4574ce8f1792fbfa9bd93985a6b47f87 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 28 Dec 2016 03:47:02 -0500 Subject: IR: error for returning from defer expression also fix peer type resolution for pure error mixed with error union --- src/analyze.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/analyze.cpp') 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(1); + init_scope(&scope->base, ScopeIdDeferExpr, node, parent); + return scope; +} + Scope *create_var_scope(AstNode *node, Scope *parent, VariableTableEntry *var) { ScopeVarDecl *scope = allocate(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: -- cgit v1.2.3