vala r2115 - in trunk: . vala
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r2115 - in trunk: . vala
- Date: Tue, 2 Dec 2008 21:31:50 +0000 (UTC)
Author: juergbi
Date: Tue Dec 2 21:31:49 2008
New Revision: 2115
URL: http://svn.gnome.org/viewvc/vala?rev=2115&view=rev
Log:
2008-12-02 JÃrg Billeter <j bitron ch>
* vala/valaassignment.vala:
* vala/valasignal.vala:
Resolve generic types when connecting signals
Modified:
trunk/ChangeLog
trunk/vala/valaassignment.vala
trunk/vala/valasignal.vala
Modified: trunk/vala/valaassignment.vala
==============================================================================
--- trunk/vala/valaassignment.vala (original)
+++ trunk/vala/valaassignment.vala Tue Dec 2 21:31:49 2008
@@ -137,7 +137,7 @@
// target_type not available for dynamic signals
} else if (ma.symbol_reference is Signal) {
var sig = (Signal) ma.symbol_reference;
- right.target_type = new DelegateType (sig.get_delegate (ma.inner.value_type));
+ right.target_type = new DelegateType (sig.get_delegate (ma.inner.value_type, this));
} else {
right.target_type = ma.value_type;
}
@@ -147,7 +147,7 @@
if (ea.container is MemberAccess && ea.container.symbol_reference is Signal) {
var ma = (MemberAccess) ea.container;
var sig = (Signal) ea.container.symbol_reference;
- right.target_type = new DelegateType (sig.get_delegate (ma.inner.value_type));
+ right.target_type = new DelegateType (sig.get_delegate (ma.inner.value_type, this));
} else {
right.target_type = left.value_type;
}
@@ -231,7 +231,7 @@
dynamic_sig.add_parameter (param.copy ());
}
}
- right.target_type = new DelegateType (sig.get_delegate (new ObjectType ((ObjectTypeSymbol) sig.parent_symbol)));
+ right.target_type = new DelegateType (sig.get_delegate (new ObjectType ((ObjectTypeSymbol) sig.parent_symbol), this));
} else if (!right.value_type.compatible (right.target_type)) {
var delegate_type = (DelegateType) right.target_type;
Modified: trunk/vala/valasignal.vala
==============================================================================
--- trunk/vala/valasignal.vala (original)
+++ trunk/vala/valasignal.vala Tue Dec 2 21:31:49 2008
@@ -94,8 +94,10 @@
*
* @return delegate
*/
- public Delegate get_delegate (DataType sender_type) {
- var generated_delegate = new Delegate (null, return_type);
+ public Delegate get_delegate (DataType sender_type, CodeNode node_reference) {
+ var actual_return_type = return_type.get_actual_type (sender_type, node_reference);
+
+ var generated_delegate = new Delegate (null, actual_return_type);
generated_delegate.has_target = true;
// sender parameter is never null and doesn't own its value
@@ -107,7 +109,9 @@
generated_delegate.add_parameter (sender_param);
foreach (FormalParameter param in parameters) {
- generated_delegate.add_parameter (param.copy ());
+ var actual_param = param.copy ();
+ actual_param.parameter_type = actual_param.parameter_type.get_actual_type (sender_type, node_reference);
+ generated_delegate.add_parameter (actual_param);
}
scope.add (null, generated_delegate);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]