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.52.8~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=67c4b9dd49841c7660bddde6b5cb8a47e10cbffa;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 2951db733..f862af631 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -523,6 +523,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 82fe8d2d9..a251ef118 100644 --- a/vala/valamemberaccess.vala +++ b/vala/valamemberaccess.vala @@ -480,7 +480,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'", 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", s.get_full_name ()); + } } } s.access = SymbolAccessibility.PUBLIC;