vala r2399 - in trunk: . vala
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r2399 - in trunk: . vala
- Date: Sat, 24 Jan 2009 16:24:47 +0000 (UTC)
Author: juergbi
Date: Sat Jan 24 16:24:46 2009
New Revision: 2399
URL: http://svn.gnome.org/viewvc/vala?rev=2399&view=rev
Log:
2009-01-24 JÃrg Billeter <j bitron ch>
* vala/valaclass.vala:
Fix type of implicit `this' parameter when using generics
Modified:
trunk/ChangeLog
trunk/vala/valaclass.vala
Modified: trunk/vala/valaclass.vala
==============================================================================
--- trunk/vala/valaclass.vala (original)
+++ trunk/vala/valaclass.vala Sat Jan 24 16:24:46 2009
@@ -191,7 +191,7 @@
if (_destructor.this_parameter != null) {
_destructor.scope.remove (_destructor.this_parameter.name);
}
- _destructor.this_parameter = new FormalParameter ("this", new ObjectType (this));
+ _destructor.this_parameter = new FormalParameter ("this", get_this_type ());
_destructor.scope.add (_destructor.this_parameter.name, _destructor.this_parameter);
}
}
@@ -292,6 +292,16 @@
return new ReadOnlyList<Constant> (constants);
}
+ ObjectType get_this_type () {
+ var result = new ObjectType (this);
+ foreach (var type_parameter in get_type_parameters ()) {
+ var type_arg = new GenericType (type_parameter);
+ type_arg.value_owned = true;
+ result.add_type_argument (type_arg);
+ }
+ return result;
+ }
+
/**
* Adds the specified method as a member to this class.
*
@@ -302,7 +312,7 @@
if (m.this_parameter != null) {
m.scope.remove (m.this_parameter.name);
}
- m.this_parameter = new FormalParameter ("this", new ObjectType (this));
+ m.this_parameter = new FormalParameter ("this", get_this_type ());
m.scope.add (m.this_parameter.name, m.this_parameter);
}
if (!(m.return_type is VoidType) && m.get_postconditions ().size > 0) {
@@ -348,7 +358,7 @@
properties.add (prop);
scope.add (prop.name, prop);
- prop.this_parameter = new FormalParameter ("this", new ObjectType (this));
+ prop.this_parameter = new FormalParameter ("this", get_this_type ());
prop.scope.add (prop.this_parameter.name, prop.this_parameter);
if (prop.field != null) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]