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.52.0~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c6142ef5261617095aa06f431bab92f147f53a37;p=thirdparty%2Fvala.git vala: Improve error for incompatible expressions in conditional expression --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 3373316ed..bfbc13dd3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -934,6 +934,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..c8bfdbce1 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'", true_expression.value_type.to_prototype_string (), false_expression.value_type.to_prototype_string ()); return false; }