From: Rico Tzschichholz Date: Sun, 14 Mar 2021 11:38:16 +0000 (+0100) Subject: vala: Improve error for incompatible expressions in conditional expression X-Git-Tag: 0.50.5~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f42a3e88a5ab9c10c4a2bf93a1c52c3c45bd5940;p=thirdparty%2Fvala.git vala: Improve error for incompatible expressions in conditional expression --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 6b77ef90d..3028a638e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -917,6 +917,7 @@ TESTS = \ semantic/class-singleton-non-gobject.test \ semantic/class-too-few-type-arguments.test \ semantic/class-too-many-type-arguments.test \ + semantic/conditional-expression-incompatible.test \ semantic/conditional-expression-no-block.test \ semantic/constant-extern.test \ semantic/constant-pointer.test \ diff --git a/tests/semantic/conditional-expression-incompatible.test b/tests/semantic/conditional-expression-incompatible.test new file mode 100644 index 000000000..1d8c108c3 --- /dev/null +++ b/tests/semantic/conditional-expression-incompatible.test @@ -0,0 +1,7 @@ +Invalid Code + +void main () { + string foo = "foo"; + int bar = 42; + var manam = true ? foo : bar; +} diff --git a/vala/valaconditionalexpression.vala b/vala/valaconditionalexpression.vala index 1bc100081..de1ffc83a 100644 --- a/vala/valaconditionalexpression.vala +++ b/vala/valaconditionalexpression.vala @@ -194,7 +194,8 @@ public class Vala.ConditionalExpression : Expression { value_type = false_expression.value_type.copy (); } else { error = true; - Report.error (condition.source_reference, "Incompatible expressions"); + var source_reference = new SourceReference (true_expression.source_reference.file, true_expression.source_reference.begin, false_expression.source_reference.end); + Report.error (source_reference, "Cannot resolve target type from `%s' and `%s'".printf (true_expression.value_type.to_prototype_string (), false_expression.value_type.to_prototype_string ())); return false; }