summaryrefslogtreecommitdiff
path: root/vala/valaconstructor.vala
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2008-11-07 10:31:16 +0000
committerJürg Billeter <juergbi@src.gnome.org>2008-11-07 10:31:16 +0000
commit920935d9e2927e6d83fb65af22916e011da6c958 (patch)
treed7c36391e82ca13c7bca8b20bed2e0f4528dac88 /vala/valaconstructor.vala
parenta81a3482c8d1f449c1bbeb9c7038c9b19e5698e7 (diff)
downloadvala-920935d9e2927e6d83fb65af22916e011da6c958.tar.gz
Move member checking to code nodes
2008-11-07 Jürg Billeter <j@bitron.ch> * vala/valaconstant.vala: * vala/valaconstructor.vala: * vala/valacreationmethod.vala: * vala/valadestructor.vala: * vala/valafield.vala: * vala/valaformalparameter.vala: * vala/valaproperty.vala: * vala/valapropertyaccessor.vala: * vala/valasemanticanalyzer.vala: * vala/valasignal.vala: Move member checking to code nodes svn path=/trunk/; revision=2000
Diffstat (limited to 'vala/valaconstructor.vala')
-rw-r--r--vala/valaconstructor.vala24
1 files changed, 24 insertions, 0 deletions
diff --git a/vala/valaconstructor.vala b/vala/valaconstructor.vala
index 6e0c476c0..a9de8a818 100644
--- a/vala/valaconstructor.vala
+++ b/vala/valaconstructor.vala
@@ -60,4 +60,28 @@ public class Vala.Constructor : Symbol {
body.accept (visitor);
}
}
+
+ public override bool check (SemanticAnalyzer analyzer) {
+ if (checked) {
+ return !error;
+ }
+
+ checked = true;
+
+ this_parameter = new FormalParameter ("this", new ObjectType (analyzer.current_class));
+ scope.add (this_parameter.name, this_parameter);
+
+ owner = analyzer.current_symbol.scope;
+ analyzer.current_symbol = this;
+
+ accept_children (analyzer);
+
+ foreach (DataType body_error_type in body.get_error_types ()) {
+ Report.warning (body_error_type.source_reference, "unhandled error `%s'".printf (body_error_type.to_string()));
+ }
+
+ analyzer.current_symbol = analyzer.current_symbol.parent_symbol;
+
+ return !error;
+ }
}