]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Move throw statement checking to ThrowStatement.check
authorJürg Billeter <j@bitron.ch>
Fri, 7 Nov 2008 09:30:32 +0000 (09:30 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Fri, 7 Nov 2008 09:30:32 +0000 (09:30 +0000)
2008-11-07  Jürg Billeter  <j@bitron.ch>

* vala/valasemanticanalyzer.vala:
* vala/valathrowstatement.vala:

Move throw statement checking to ThrowStatement.check

svn path=/trunk/; revision=1997

ChangeLog
vala/valasemanticanalyzer.vala
vala/valathrowstatement.vala

index 731ed19ac483c0f096e596721d07c442ace0bd71..e2edcebc9429c631fc9b5a651a205af975ac15bd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-11-07  Jürg Billeter  <j@bitron.ch>
+
+       * vala/valasemanticanalyzer.vala:
+       * vala/valathrowstatement.vala:
+
+       Move throw statement checking to ThrowStatement.check
+
 2008-11-07  Jürg Billeter  <j@bitron.ch>
 
        * vala/valareturnstatement.vala:
index 5a481a9622792528ad812b8c0e94f5151920cfac..c19b97549de5752caf268263638ec04416c40d9f 100644 (file)
@@ -729,15 +729,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
        }
 
        public override void visit_throw_statement (ThrowStatement stmt) {
-               stmt.error_expression.target_type = new ErrorType (null, null, stmt.source_reference);
-               stmt.error_expression.target_type.value_owned = true;
-
-               stmt.accept_children (this);
-
-               var error_type = stmt.error_expression.value_type.copy ();
-               error_type.source_reference = stmt.source_reference;
-
-               stmt.add_error_type (error_type);
+               stmt.check (this);
        }
 
        public override void visit_try_statement (TryStatement stmt) {
index 867c2780a4bf471863d2c2b6516a3fd47c5c76aa..d1f8a9f0d84154744cffc9d38276153953639238 100644 (file)
@@ -72,4 +72,24 @@ public class Vala.ThrowStatement : CodeNode, Statement {
                        error_expression = new_node;
                }
        }
+
+       public override bool check (SemanticAnalyzer analyzer) {
+               if (checked) {
+                       return !error;
+               }
+
+               checked = true;
+
+               error_expression.target_type = new ErrorType (null, null, source_reference);
+               error_expression.target_type.value_owned = true;
+
+               accept_children (analyzer);
+
+               var error_type = error_expression.value_type.copy ();
+               error_type.source_reference = source_reference;
+
+               add_error_type (error_type);
+
+               return !error;
+       }
 }