From: Rico Tzschichholz Date: Wed, 8 Aug 2018 14:36:38 +0000 (+0200) Subject: vala: Check if ArrayType supports its given element-type in analyzer pass X-Git-Tag: 0.43.1~228 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6dbd255e042635fbdb1701069e5ee8b0d24e616a;p=thirdparty%2Fvala.git vala: Check if ArrayType supports its given element-type in analyzer pass --- diff --git a/vala/valaarraycreationexpression.vala b/vala/valaarraycreationexpression.vala index 2282d6f80..41b0f351b 100644 --- a/vala/valaarraycreationexpression.vala +++ b/vala/valaarraycreationexpression.vala @@ -262,6 +262,10 @@ public class Vala.ArrayCreationExpression : Expression { value_type = new ArrayType (element_type, rank, source_reference); value_type.value_owned = true; + if (!value_type.check (context)) { + return false; + } + return !error; } diff --git a/vala/valaarraytype.vala b/vala/valaarraytype.vala index 626c60c89..c1d4d7f29 100644 --- a/vala/valaarraytype.vala +++ b/vala/valaarraytype.vala @@ -271,6 +271,17 @@ public class Vala.ArrayType : ReferenceType { } } + if (element_type is ArrayType) { + Report.error (source_reference, "Stacked arrays are not supported"); + return false; + } else if (element_type is DelegateType) { + var delegate_type = (DelegateType) element_type; + if (delegate_type.delegate_symbol.has_target) { + Report.error (source_reference, "Delegates with target are not supported as array element type"); + return false; + } + } + return element_type.check (context); }