diff options
author | Jürg Billeter <j@bitron.ch> | 2008-11-07 10:31:16 +0000 |
---|---|---|
committer | Jürg Billeter <juergbi@src.gnome.org> | 2008-11-07 10:31:16 +0000 |
commit | 920935d9e2927e6d83fb65af22916e011da6c958 (patch) | |
tree | d7c36391e82ca13c7bca8b20bed2e0f4528dac88 /vala/valaconstructor.vala | |
parent | a81a3482c8d1f449c1bbeb9c7038c9b19e5698e7 (diff) | |
download | vala-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.vala | 24 |
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; + } } |