From: Ole André Vadla Ravnås Date: Fri, 22 Jan 2021 01:40:06 +0000 (+0100) Subject: vala: Avoid critical when trying to use symbol_reference of ElementAccess X-Git-Tag: 0.51.1~78 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20c3581b9d05bd88528e4d0986c7a7f327411fd3;p=thirdparty%2Fvala.git vala: Avoid critical when trying to use symbol_reference of ElementAccess Regression of 6e7be51cb5455e9c5c721d4ba5121a6ab04673dd --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 6ee9ee25a..274831bf7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -167,6 +167,7 @@ TESTS = \ methods/parameter-ref-array-resize.vala \ methods/parameter-ref-array-resize-captured.vala \ methods/parameter-ref-delegate.vala \ + methods/parameter-ref-element-access.vala \ methods/prepostconditions.vala \ methods/prepostconditions-captured.vala \ methods/postconditions.vala \ diff --git a/tests/methods/parameter-ref-element-access.vala b/tests/methods/parameter-ref-element-access.vala new file mode 100644 index 000000000..743098c21 --- /dev/null +++ b/tests/methods/parameter-ref-element-access.vala @@ -0,0 +1,10 @@ +void foo (ref string s) { + assert (s == "foo"); + s = "bar"; +} + +void main () { + string[] bar = { "manam", "foo" }; + foo (ref bar[1]); + assert (bar[1] == "bar"); +} diff --git a/vala/valaunaryexpression.vala b/vala/valaunaryexpression.vala index 4bf6d4bc4..0d0dc4b2b 100644 --- a/vala/valaunaryexpression.vala +++ b/vala/valaunaryexpression.vala @@ -229,7 +229,7 @@ public class Vala.UnaryExpression : Expression { Report.error (source_reference, "ref and out method arguments can only be used with fields, parameters, local variables, and array element access"); return false; } - if (inner.symbol_reference.get_attribute ("GtkChild") != null) { + if (inner.symbol_reference != null && inner.symbol_reference.get_attribute ("GtkChild") != null) { error = true; Report.error (source_reference, "Assignment of [GtkChild] `%s' is not allowed", inner.symbol_reference.get_full_name ()); return false;