From: Rico Tzschichholz Date: Tue, 14 Sep 2021 21:28:43 +0000 (+0200) Subject: vala: Warn about unsupported cast to void and drop it X-Git-Tag: 0.54.0~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8ac0970f22a1ba41a9a0ac47f86c97e99a44e113;p=thirdparty%2Fvala.git vala: Warn about unsupported cast to void and drop it Fixes https://gitlab.gnome.org/GNOME/vala/issues/1070 --- diff --git a/tests/Makefile.am b/tests/Makefile.am index ec9c97b13..d84703e65 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -948,6 +948,7 @@ TESTS = \ semantic/assignment-signal-incompatible-type.test \ semantic/cast-gvalue-unsupported.test \ semantic/cast-gvariant-unsupported.test \ + semantic/cast-void-not-allowed.vala \ semantic/chainup-gobject-incompatible-type-property.test \ semantic/chainup-gobject-unknown-property.test \ semantic/chainup-gobject-unsupported-type-property.test \ @@ -1043,7 +1044,6 @@ TESTS = \ semantic/localvariable-var-static-access-instance-property.test \ semantic/localvariable-var-without-initializer.test \ semantic/localvariable-void.test \ - semantic/localvariable-void-initializer.test \ semantic/member-access-async-callback-invalid.test \ semantic/member-access-capture-out.test \ semantic/member-access-capture-valist-parameter.test \ diff --git a/tests/semantic/cast-void-not-allowed.vala b/tests/semantic/cast-void-not-allowed.vala new file mode 100644 index 000000000..dee3801de --- /dev/null +++ b/tests/semantic/cast-void-not-allowed.vala @@ -0,0 +1,11 @@ +bool success = false; + +bool foo () { + success = true; + return true; +} + +void main () { + (void) foo (); + assert (success); +} diff --git a/tests/semantic/localvariable-void-initializer.test b/tests/semantic/localvariable-void-initializer.test deleted file mode 100644 index fbfbbff95..000000000 --- a/tests/semantic/localvariable-void-initializer.test +++ /dev/null @@ -1,5 +0,0 @@ -Invalid Code - -void main () { - var foo = (void) "foo"; -} diff --git a/vala/valacastexpression.vala b/vala/valacastexpression.vala index 9aff511fa..1d1dbb0f2 100644 --- a/vala/valacastexpression.vala +++ b/vala/valacastexpression.vala @@ -164,6 +164,13 @@ public class Vala.CastExpression : Expression { // FIXME: check whether cast is allowed + if (type_reference is VoidType) { + Report.warning (source_reference, "Casting to `void' is not supported"); + context.analyzer.replaced_nodes.add (this); + parent_node.replace_expression (this, inner); + return inner.check (context); + } + if (type_reference is DelegateType && inner.value_type is MethodType) { if (target_type != null) { inner.value_type.value_owned = target_type.value_owned;