From: Rico Tzschichholz Date: Thu, 14 Nov 2019 13:53:04 +0000 (+0100) Subject: vala: Report error for async creation expression without yield X-Git-Tag: 0.47.2~54 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=d11ee9864f6f4daf1411933302fe35493a428174;p=thirdparty%2Fvala.git vala: Report error for async creation expression without yield --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 2bbd134b9..bc79845a7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -496,6 +496,7 @@ TESTS = \ asynchronous/bug793158.vala \ asynchronous/catch-error-scope.vala \ asynchronous/catch-in-finally.vala \ + asynchronous/creation-missing-yield.test \ asynchronous/closures.vala \ asynchronous/finish-name.vala \ asynchronous/generator.vala \ diff --git a/tests/asynchronous/creation-missing-yield.test b/tests/asynchronous/creation-missing-yield.test new file mode 100644 index 000000000..0fe234a6e --- /dev/null +++ b/tests/asynchronous/creation-missing-yield.test @@ -0,0 +1,10 @@ +Invalid Code + +class Foo { + public async Foo () { + } +} + +void main () { + var foo = new Foo (); +} diff --git a/vala/valaobjectcreationexpression.vala b/vala/valaobjectcreationexpression.vala index 978885808..caf9414a6 100644 --- a/vala/valaobjectcreationexpression.vala +++ b/vala/valaobjectcreationexpression.vala @@ -366,6 +366,11 @@ public class Vala.ObjectCreationExpression : Expression { error = true; Report.error (source_reference, "yield expression not available outside async method"); } + } else if (m is CreationMethod) { + if (m.coroutine) { + error = true; + Report.error (source_reference, "missing `yield' before async creation expression"); + } } // FIXME partial code duplication of MethodCall.check