summaryrefslogtreecommitdiff
path: root/vala/valasliceexpression.vala
diff options
context:
space:
mode:
authorJeremy Philippe <jeremy.philippe@gmail.com>2019-12-18 16:54:05 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2021-08-06 16:40:21 +0200
commit9572175213c300e50476835fe1201ff4b040ec36 (patch)
tree37197033d4433b4b15e4faef08bd32fffa5ec00d /vala/valasliceexpression.vala
parent453c81d3844ec7ea8ec8dfbcd52346e2c3a24cf7 (diff)
downloadvala-9572175213c300e50476835fe1201ff4b040ec36.tar.gz
vala: Add support for null-safe access operator
This implements support for the "null-safe" operator of C# (also called "safe navigation" operator). var foo = bar?.foo; var foo = bar?.foo(); var foo = bar?[3]; var foo = bar?[1:2]; It applies to plain member access, method calls, element access and slice expressions (including void method calls, which are simply bypassed if the inner expression is null). Fixes https://gitlab.gnome.org/GNOME/vala/issues/522
Diffstat (limited to 'vala/valasliceexpression.vala')
-rw-r--r--vala/valasliceexpression.vala10
1 files changed, 10 insertions, 0 deletions
diff --git a/vala/valasliceexpression.vala b/vala/valasliceexpression.vala
index a9502b3e8..98b009b5e 100644
--- a/vala/valasliceexpression.vala
+++ b/vala/valasliceexpression.vala
@@ -60,6 +60,11 @@ public class Vala.SliceExpression : Expression {
}
}
+ /**
+ * Null-safe access.
+ */
+ public bool null_safe_access { get; set; }
+
Expression _container;
Expression _start;
Expression _stop;
@@ -111,6 +116,11 @@ public class Vala.SliceExpression : Expression {
checked = true;
+ if (null_safe_access) {
+ error = !base.check (context);
+ return !error;
+ }
+
if (!container.check (context)) {
error = true;
return false;