From: Lorenz Wildberg Date: Fri, 29 Oct 2021 10:50:30 +0000 (+0100) Subject: vala: Improve error message for invalid handler of dynamic signal X-Git-Tag: 0.48.20~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=abe72cffc3d6884ee8ab41fcba63fec941461b0d;p=thirdparty%2Fvala.git vala: Improve error message for invalid handler of dynamic signal --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 5e151ac7c..036c809b9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -516,6 +516,7 @@ TESTS = \ objects/signals-delegate.vala \ objects/signals-delegate-parameter.vala \ objects/signals-dymanic-invalid-handler.test \ + objects/signals-dynamic-lambda-handler.test \ objects/signals-error-marshal.vala \ objects/signals-fundamental-return.vala \ objects/signals-gobject-return.vala \ diff --git a/tests/objects/signals-dynamic-lambda-handler.test b/tests/objects/signals-dynamic-lambda-handler.test new file mode 100644 index 000000000..ae86c9f1c --- /dev/null +++ b/tests/objects/signals-dynamic-lambda-handler.test @@ -0,0 +1,8 @@ +Invalid Code + +void main () { + dynamic Object? foo = null; + foo.on_bar.connect ((baz) => { + // lambdas are not allowed + }); +} diff --git a/vala/valamemberaccess.vala b/vala/valamemberaccess.vala index fef4e6d3f..2a3abcfb8 100644 --- a/vala/valamemberaccess.vala +++ b/vala/valamemberaccess.vala @@ -459,7 +459,11 @@ public class Vala.MemberAccess : Expression { unowned MemberAccess? arg = s.handler as MemberAccess; if (arg == null || !arg.check (context) || !(arg.symbol_reference is Method)) { error = true; - Report.error (s.handler.source_reference, "Invalid handler for `%s'".printf (s.get_full_name ())); + if (s.handler is LambdaExpression) { + Report.error (s.handler.source_reference, "Lambdas are not allowed for dynamic signals"); + } else { + Report.error (s.handler.source_reference, "Cannot infer call signature for dynamic signal `%s' from given expression".printf (s.get_full_name ())); + } } } s.access = SymbolAccessibility.PUBLIC;