From e335207c353efec94963e273d2fc3294afc860e0 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 26 Nov 2017 18:27:38 +0800 Subject: HIR From AST - Fix logic that auto-applies ! to loops --- src/hir/from_ast_expr.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/hir/from_ast_expr.cpp b/src/hir/from_ast_expr.cpp index ef20f08d..6daf49c3 100644 --- a/src/hir/from_ast_expr.cpp +++ b/src/hir/from_ast_expr.cpp @@ -339,13 +339,9 @@ struct LowerHIR_ExprNode_Visitor: {} void visit(::HIR::ExprNode_Loop& node) override { - if( node.m_label != "" ) { - this->name_stack.push_back( &node.m_label ); - } + this->name_stack.push_back( &node.m_label ); ::HIR::ExprVisitorDef::visit(node); - if( node.m_label != "" ) { - this->name_stack.pop_back( ); - } + this->name_stack.pop_back( ); } void visit(::HIR::ExprNode_LoopControl& node) override { ::HIR::ExprVisitorDef::visit(node); @@ -355,10 +351,10 @@ struct LowerHIR_ExprNode_Visitor: else { for( auto it = this->name_stack.rbegin(); it != this->name_stack.rend(); ++ it ) { - if( node.m_label == **it ) + if( node.m_label == "" || node.m_label == **it ) return ; } - if( node.m_label == this->top_label ) { + if( node.m_label == "" || node.m_label == this->top_label ) { this->top_is_broken = true; } else { -- cgit v1.2.3