diff options
author | Jeremy Philippe <jeremy.philippe@gmail.com> | 2019-12-18 16:54:05 +0100 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-08-06 16:40:21 +0200 |
commit | 9572175213c300e50476835fe1201ff4b040ec36 (patch) | |
tree | 37197033d4433b4b15e4faef08bd32fffa5ec00d /vala/valasliceexpression.vala | |
parent | 453c81d3844ec7ea8ec8dfbcd52346e2c3a24cf7 (diff) | |
download | vala-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.vala | 10 |
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; |