summaryrefslogtreecommitdiff
path: root/vala/valacreationmethod.vala
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2008-11-17 20:26:54 +0000
committerJürg Billeter <juergbi@src.gnome.org>2008-11-17 20:26:54 +0000
commitcef4b11b334ae1e5f4831ea3e458eda1f99f5cea (patch)
tree34be7de412d02b3bf1092d118078aa7780336b37 /vala/valacreationmethod.vala
parent5b1e48e50ee4c27fbdacd4a4f1f3317dc0f6cda7 (diff)
downloadvala-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.vala14
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) {