From: Timm Bäder Date: Mon, 7 Nov 2016 18:29:30 +0000 (+0100) Subject: expression: Add get_null_state vfunc X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f56fae538f12060d650ac6781f3c57d79535a5c9;p=thirdparty%2Fvala.git expression: Add get_null_state vfunc --- diff --git a/vala/valaexpression.vala b/vala/valaexpression.vala index 5f7a02333..28a536d81 100644 --- a/vala/valaexpression.vala +++ b/vala/valaexpression.vala @@ -22,6 +22,13 @@ using GLib; + +public enum Vala.NullabilityState { + NULL, + NON_NULL, + NULLABLE +} + /** * Base class for all code nodes that might be used as an expression. */ @@ -71,6 +78,10 @@ public abstract class Vala.Expression : CodeNode { */ public abstract bool is_pure (); + public virtual NullabilityState get_null_state () { + return NullabilityState.NULLABLE; + } + /** * Returns whether this expression is guaranteed to be non-null. */ diff --git a/vala/valaliteral.vala b/vala/valaliteral.vala index 62f17a3af..3550ff775 100644 --- a/vala/valaliteral.vala +++ b/vala/valaliteral.vala @@ -33,4 +33,8 @@ public abstract class Vala.Literal : Expression { public override bool is_pure () { return true; } + + public override NullabilityState get_null_state () { + return NullabilityState.NON_NULL; + } } diff --git a/vala/valanullliteral.vala b/vala/valanullliteral.vala index b5f95d064..015dd7e83 100644 --- a/vala/valanullliteral.vala +++ b/vala/valanullliteral.vala @@ -50,6 +50,10 @@ public class Vala.NullLiteral : Literal { return true; } + public override NullabilityState get_null_state () { + return NullabilityState.NULL; + } + public override bool check (CodeContext context) { if (checked) { return !error;