summaryrefslogtreecommitdiff
path: root/codegen/valagsignalmodule.vala
diff options
context:
space:
mode:
Diffstat (limited to 'codegen/valagsignalmodule.vala')
-rw-r--r--codegen/valagsignalmodule.vala11
1 files changed, 7 insertions, 4 deletions
diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala
index 3d0d19c2c..80f02f849 100644
--- a/codegen/valagsignalmodule.vala
+++ b/codegen/valagsignalmodule.vala
@@ -595,11 +595,14 @@ public class Vala.GSignalModule : GObjectModule {
string connect_func;
DelegateType? dt = null;
- var p = handler.symbol_reference as Parameter;
- if (p != null) {
- dt = p.variable_type as DelegateType;
+ if (handler.symbol_reference is Variable) {
+ dt = ((Variable) handler.symbol_reference).variable_type as DelegateType;
if (dt != null && !context.experimental) {
- Report.warning (dt.source_reference, "Connecting delegates to signals is experimental");
+ Report.warning (handler.source_reference, "Connecting delegates to signals is experimental");
+ }
+ // Use actual lambda expression if available for proper target/destroy handling
+ if (((Variable) handler.symbol_reference).initializer is LambdaExpression) {
+ handler = ((Variable) handler.symbol_reference).initializer;
}
}
var m = handler.symbol_reference as Method;