diff options
author | Jürg Billeter <j@bitron.ch> | 2008-11-09 22:43:27 +0000 |
---|---|---|
committer | Jürg Billeter <juergbi@src.gnome.org> | 2008-11-09 22:43:27 +0000 |
commit | 40668a3951bba2462d7d164f1c9b6a05715040b4 (patch) | |
tree | 33e979f24a959655bcf6d9e73d1bffc08fdf3f2a /vala | |
parent | e13a4cc57ade4a8ff77798f2b9ee3ce8b16ae6c2 (diff) | |
download | vala-40668a3951bba2462d7d164f1c9b6a05715040b4.tar.gz |
Ensure attributes of field, property, parameter, and return types are
2008-11-09 Jürg Billeter <j@bitron.ch>
* vala/valacreationmethod.vala:
* vala/valadelegate.vala:
* vala/valadelegatetype.vala:
* vala/valaenum.vala:
* vala/valafield.vala:
* vala/valaformalparameter.vala:
* vala/valamethod.vala:
* vala/valaproperty.vala:
* vala/valastruct.vala:
* vala/valavaluetype.vala:
Ensure attributes of field, property, parameter, and return types
are processed before querying C header filenames
svn path=/trunk/; revision=2006
Diffstat (limited to 'vala')
-rw-r--r-- | vala/valacreationmethod.vala | 7 | ||||
-rw-r--r-- | vala/valadelegate.vala | 8 | ||||
-rw-r--r-- | vala/valadelegatetype.vala | 4 | ||||
-rw-r--r-- | vala/valaenum.vala | 8 | ||||
-rw-r--r-- | vala/valafield.vala | 2 | ||||
-rw-r--r-- | vala/valaformalparameter.vala | 4 | ||||
-rw-r--r-- | vala/valamethod.vala | 2 | ||||
-rw-r--r-- | vala/valaproperty.vala | 4 | ||||
-rw-r--r-- | vala/valastruct.vala | 12 | ||||
-rw-r--r-- | vala/valavaluetype.vala | 4 |
10 files changed, 49 insertions, 6 deletions
diff --git a/vala/valacreationmethod.vala b/vala/valacreationmethod.vala index b99224cec..f7dfe265d 100644 --- a/vala/valacreationmethod.vala +++ b/vala/valacreationmethod.vala @@ -131,13 +131,16 @@ public class Vala.CreationMethod : Method { return false; } + var old_symbol = analyzer.current_symbol; + var old_return_type = analyzer.current_return_type; + analyzer.current_symbol = this; analyzer.current_return_type = return_type; accept_children (analyzer); - analyzer.current_symbol = analyzer.current_symbol.parent_symbol; - analyzer.current_return_type = null; + analyzer.current_symbol = old_symbol; + analyzer.current_return_type = old_return_type; if (analyzer.current_symbol.parent_symbol is Method) { /* lambda expressions produce nested methods */ diff --git a/vala/valadelegate.vala b/vala/valadelegate.vala index 57596c9b1..25973d6f8 100644 --- a/vala/valadelegate.vala +++ b/vala/valadelegate.vala @@ -337,8 +337,16 @@ public class Vala.Delegate : TypeSymbol { process_attributes (); + var old_source_file = analyzer.current_source_file; + + if (source_reference != null) { + analyzer.current_source_file = source_reference.file; + } + accept_children (analyzer); + analyzer.current_source_file = old_source_file; + return !error; } } diff --git a/vala/valadelegatetype.vala b/vala/valadelegatetype.vala index 3b113473c..40035d9f7 100644 --- a/vala/valadelegatetype.vala +++ b/vala/valadelegatetype.vala @@ -70,4 +70,8 @@ public class Vala.DelegateType : DataType { public override string? get_type_id () { return "G_TYPE_POINTER"; } + + public override bool check (SemanticAnalyzer analyzer) { + return delegate_symbol.check (analyzer); + } } diff --git a/vala/valaenum.vala b/vala/valaenum.vala index aa80454d0..526cd4dac 100644 --- a/vala/valaenum.vala +++ b/vala/valaenum.vala @@ -307,8 +307,16 @@ public class Vala.Enum : TypeSymbol { process_attributes (); + var old_source_file = analyzer.current_source_file; + + if (source_reference != null) { + analyzer.current_source_file = source_reference.file; + } + accept_children (analyzer); + analyzer.current_source_file = old_source_file; + return !error; } } diff --git a/vala/valafield.vala b/vala/valafield.vala index 251cd5b07..9feb2826a 100644 --- a/vala/valafield.vala +++ b/vala/valafield.vala @@ -203,6 +203,8 @@ public class Vala.Field : Member, Lockable { checked = true; + field_type.check (analyzer); + process_attributes (); if (initializer != null) { diff --git a/vala/valaformalparameter.vala b/vala/valaformalparameter.vala index 36103789b..b5733945c 100644 --- a/vala/valaformalparameter.vala +++ b/vala/valaformalparameter.vala @@ -184,6 +184,10 @@ public class Vala.FormalParameter : Symbol { } analyzer.current_symbol = parent_symbol; + if (parameter_type != null) { + parameter_type.check (analyzer); + } + accept_children (analyzer); if (analyzer.context.non_null && default_expression != null) { diff --git a/vala/valamethod.vala b/vala/valamethod.vala index d9bb2fd63..c6f3e2b53 100644 --- a/vala/valamethod.vala +++ b/vala/valamethod.vala @@ -652,6 +652,8 @@ public class Vala.Method : Member { analyzer.current_symbol = this; analyzer.current_return_type = return_type; + return_type.check (analyzer); + var init_attr = get_attribute ("ModuleInit"); if (init_attr != null) { source_reference.file.context.module_init_method = this; diff --git a/vala/valaproperty.vala b/vala/valaproperty.vala index 2026a7b21..3dc081174 100644 --- a/vala/valaproperty.vala +++ b/vala/valaproperty.vala @@ -421,8 +421,8 @@ public class Vala.Property : Member, Lockable { } analyzer.current_symbol = this; - property_type.accept (analyzer); - + property_type.check (analyzer); + if (get_accessor != null) { get_accessor.accept (analyzer); } diff --git a/vala/valastruct.vala b/vala/valastruct.vala index bb2252fbb..4b2c208d6 100644 --- a/vala/valastruct.vala +++ b/vala/valastruct.vala @@ -615,6 +615,13 @@ public class Vala.Struct : TypeSymbol { process_attributes (); + var old_source_file = analyzer.current_source_file; + var old_symbol = analyzer.current_symbol; + var old_struct = analyzer.current_struct; + + if (source_reference != null) { + analyzer.current_source_file = source_reference.file; + } analyzer.current_symbol = this; analyzer.current_struct = this; @@ -624,8 +631,9 @@ public class Vala.Struct : TypeSymbol { Report.error (source_reference, "structs cannot be empty"); } - analyzer.current_symbol = analyzer.current_symbol.parent_symbol; - analyzer.current_struct = null; + analyzer.current_source_file = old_source_file; + analyzer.current_symbol = old_symbol; + analyzer.current_struct = old_struct; return !error; } diff --git a/vala/valavaluetype.vala b/vala/valavaluetype.vala index 87741d4ed..08df08205 100644 --- a/vala/valavaluetype.vala +++ b/vala/valavaluetype.vala @@ -77,4 +77,8 @@ public class Vala.ValueType : DataType { return false; } + + public override bool check (SemanticAnalyzer analyzer) { + return type_symbol.check (analyzer); + } } |