summaryrefslogtreecommitdiff
path: root/vala/valathrowstatement.vala
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2008-11-07 09:30:32 +0000
committerJürg Billeter <juergbi@src.gnome.org>2008-11-07 09:30:32 +0000
commit9aefdf7ab94928f2cd6b4ad65f374f02fff739f4 (patch)
tree1b067e45dd20b85743549d0aee2b688912b71388 /vala/valathrowstatement.vala
parentda89ecc15c743406bc6f4f2a6c9017742336586e (diff)
downloadvala-9aefdf7ab94928f2cd6b4ad65f374f02fff739f4.tar.gz
Move throw statement checking to ThrowStatement.check
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
Diffstat (limited to 'vala/valathrowstatement.vala')
-rw-r--r--vala/valathrowstatement.vala20
1 files changed, 20 insertions, 0 deletions
diff --git a/vala/valathrowstatement.vala b/vala/valathrowstatement.vala
index 867c2780a..d1f8a9f0d 100644
--- a/vala/valathrowstatement.vala
+++ b/vala/valathrowstatement.vala
@@ -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;
+ }
}