From: Rico Tzschichholz Date: Thu, 2 Jul 2020 11:11:52 +0000 (+0200) Subject: vala: Avoid subsequent critical caused by invalid array type for constant X-Git-Tag: 0.46.12~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ca1f6a84d596002623d80c74afb440ed248ae8f;p=thirdparty%2Fvala.git vala: Avoid subsequent critical caused by invalid array type for constant --- diff --git a/tests/Makefile.am b/tests/Makefile.am index a4ba93a1d..114a2af66 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -75,6 +75,7 @@ TESTS = \ basic-types/bug777697.test \ basic-types/bug787152.vala \ basic-types/bug788775.vala \ + constants/array-type-invalid.test \ constants/glog.vala \ arrays/cast-silent-invalid.test \ arrays/class-field-length-cname.vala \ diff --git a/tests/constants/array-type-invalid.test b/tests/constants/array-type-invalid.test new file mode 100644 index 000000000..eb894d519 --- /dev/null +++ b/tests/constants/array-type-invalid.test @@ -0,0 +1,6 @@ +Invalid Code + +const int[,4] FOO = { { 23 }, { 42 } }; + +void main() { +} diff --git a/vala/valaconstant.vala b/vala/valaconstant.vala index c897cd892..f7d2aaf3d 100644 --- a/vala/valaconstant.vala +++ b/vala/valaconstant.vala @@ -131,7 +131,7 @@ public class Vala.Constant : Symbol { } else { value.target_type = type_reference; - if (!value.check (context)) { + if (!value.check (context) || type_reference.error) { error = true; return false; } diff --git a/vala/valainitializerlist.vala b/vala/valainitializerlist.vala index ac35abc01..58301b6e2 100644 --- a/vala/valainitializerlist.vala +++ b/vala/valainitializerlist.vala @@ -141,6 +141,9 @@ public class Vala.InitializerList : Expression { error = true; Report.error (source_reference, "initializer list used for unknown type"); return false; + } else if (target_type.error) { + error = true; + return false; } else if (target_type is ArrayType) { /* initializer is used as array initializer */ var array_type = (ArrayType) target_type;