diff options
author | Jürg Billeter <j@bitron.ch> | 2008-11-17 20:26:54 +0000 |
---|---|---|
committer | Jürg Billeter <juergbi@src.gnome.org> | 2008-11-17 20:26:54 +0000 |
commit | cef4b11b334ae1e5f4831ea3e458eda1f99f5cea (patch) | |
tree | 34be7de412d02b3bf1092d118078aa7780336b37 /vala/valacreationmethod.vala | |
parent | 5b1e48e50ee4c27fbdacd4a4f1f3317dc0f6cda7 (diff) | |
download | vala-cef4b11b334ae1e5f4831ea3e458eda1f99f5cea.tar.gz |
Ensure that members are checked when accessing them, fixes bug 561018
2008-11-17 Jürg Billeter <j@bitron.ch>
* vala/valacatchclause.vala:
* vala/valacreationmethod.vala:
* vala/valafield.vala:
* vala/valaforeachstatement.vala:
* vala/valamemberaccess.vala:
* vala/valamethod.vala:
Ensure that members are checked when accessing them,
fixes bug 561018
svn path=/trunk/; revision=2025
Diffstat (limited to 'vala/valacreationmethod.vala')
-rw-r--r-- | vala/valacreationmethod.vala | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/vala/valacreationmethod.vala b/vala/valacreationmethod.vala index 3f183cd0e..d404b2a31 100644 --- a/vala/valacreationmethod.vala +++ b/vala/valacreationmethod.vala @@ -131,10 +131,21 @@ public class Vala.CreationMethod : Method { return false; } + var old_source_file = analyzer.current_source_file; var old_symbol = analyzer.current_symbol; + var old_class = analyzer.current_class; + var old_struct = analyzer.current_struct; var old_return_type = analyzer.current_return_type; + if (source_reference != null) { + analyzer.current_source_file = source_reference.file; + } analyzer.current_symbol = this; + if (parent_symbol is Class) { + analyzer.current_class = (Class) parent_symbol; + } else if (parent_symbol is Struct) { + analyzer.current_struct = (Struct) parent_symbol; + } analyzer.current_return_type = return_type; foreach (FormalParameter param in get_parameters()) { @@ -149,7 +160,10 @@ public class Vala.CreationMethod : Method { body.check (analyzer); } + analyzer.current_source_file = old_source_file; analyzer.current_symbol = old_symbol; + analyzer.current_class = old_class; + analyzer.current_struct = old_struct; analyzer.current_return_type = old_return_type; if (analyzer.current_symbol.parent_symbol is Method) { |