diff options
Diffstat (limited to 'vala')
-rw-r--r-- | vala/valacfgbuilder.vala | 8 | ||||
-rw-r--r-- | vala/valaforstatement.vala | 14 | ||||
-rw-r--r-- | vala/valasemanticanalyzer.vala | 4 |
3 files changed, 17 insertions, 9 deletions
diff --git a/vala/valacfgbuilder.vala b/vala/valacfgbuilder.vala index 184b84714..165b1c99b 100644 --- a/vala/valacfgbuilder.vala +++ b/vala/valacfgbuilder.vala @@ -356,9 +356,13 @@ public class Vala.CFGBuilder : CodeVisitor { var condition_block = new BasicBlock (); current_block.connect (condition_block); current_block = condition_block; - current_block.add_node (stmt.condition); + if (stmt.condition != null) { + current_block.add_node (stmt.condition); + } - handle_errors (stmt.condition); + if (stmt.condition != null) { + handle_errors (stmt.condition); + } // loop block current_block = new BasicBlock (); diff --git a/vala/valaforstatement.vala b/vala/valaforstatement.vala index 68676e0d1..245b5140f 100644 --- a/vala/valaforstatement.vala +++ b/vala/valaforstatement.vala @@ -30,13 +30,15 @@ public class Vala.ForStatement : CodeNode, Statement { /** * Specifies the loop condition. */ - public Expression! condition { + public Expression? condition { get { return _condition; } set construct { _condition = value; - _condition.parent_node = this; + if (_condition != null) { + _condition.parent_node = this; + } } } @@ -118,9 +120,11 @@ public class Vala.ForStatement : CodeNode, Statement { visitor.visit_end_full_expression (init_expr); } - condition.accept (visitor); - - visitor.visit_end_full_expression (condition); + if (condition != null) { + condition.accept (visitor); + + visitor.visit_end_full_expression (condition); + } foreach (Expression it_expr in iterator) { it_expr.accept (visitor); diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index fbb6f0fa6..78001c5b2 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -915,13 +915,13 @@ public class Vala.SemanticAnalyzer : CodeVisitor { public override void visit_for_statement (ForStatement! stmt) { stmt.accept_children (this); - if (stmt.condition.error) { + if (stmt.condition != null && stmt.condition.error) { /* if there was an error in the condition, skip this check */ stmt.error = true; return; } - if (!stmt.condition.static_type.compatible (bool_type)) { + if (stmt.condition != null && !stmt.condition.static_type.compatible (bool_type)) { stmt.error = true; Report.error (stmt.condition.source_reference, "Condition must be boolean"); return; |