[vala] Fix generic type resolution with nested generic types in base types
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [vala] Fix generic type resolution with nested generic types in base types
- Date: Sun, 11 Oct 2009 20:54:19 +0000 (UTC)
commit 48db33faa9cb0cbf9f4604130f793122548cc8e7
Author: Jürg Billeter <j bitron ch>
Date: Sun Oct 11 22:52:48 2009 +0200
Fix generic type resolution with nested generic types in base types
vala/valasemanticanalyzer.vala | 17 ++---------------
1 files changed, 2 insertions(+), 15 deletions(-)
---
diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala
index 103344b..1b746dc 100644
--- a/vala/valasemanticanalyzer.vala
+++ b/vala/valasemanticanalyzer.vala
@@ -533,21 +533,8 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
instance_base_type = new ObjectType ((Interface) base_type.data_type);
}
foreach (DataType type_arg in base_type.get_type_arguments ()) {
- if (type_arg.type_parameter != null) {
- // link to type argument of derived type
- int param_index = instance_type.data_type.get_type_parameter_index (type_arg.type_parameter.name);
- if (param_index == -1) {
- Report.error (node_reference.source_reference, "internal error: unknown type parameter %s".printf (type_arg.type_parameter.name));
- node_reference.error = true;
- return null;
- }
- if (instance_type.get_type_arguments ().size <= param_index) {
- Report.error (node_reference.source_reference, "internal error: missing type argument for type parameter `%s' in `%s'".printf (type_arg.type_parameter.get_full_name (), instance_type.to_string ()));
- node_reference.error = true;
- return null;
- }
- type_arg = instance_type.get_type_arguments ().get (param_index);
- }
+ // resolve type argument specified in base type (possibly recursively for nested generic types)
+ type_arg = type_arg.get_actual_type (instance_type, null, node_reference);
instance_base_type.add_type_argument (type_arg);
}
return instance_base_type;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]