From: Rico Tzschichholz Date: Thu, 14 Dec 2017 16:25:10 +0000 (+0100) Subject: vala: Add dedicated CastExpression.silent() constructor X-Git-Tag: 0.39.3~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ccf5fd33bedb50cd05cceab146a08fbcd511a603;p=thirdparty%2Fvala.git vala: Add dedicated CastExpression.silent() constructor --- diff --git a/vala/valacastexpression.vala b/vala/valacastexpression.vala index f9e3d3009..ecf093dc5 100644 --- a/vala/valacastexpression.vala +++ b/vala/valacastexpression.vala @@ -52,9 +52,9 @@ public class Vala.CastExpression : Expression { /** * Checked casts return NULL instead of raising an error. */ - public bool is_silent_cast { get; set; } + public bool is_silent_cast { get; private set; } - public bool is_non_null_cast { get; set; } + public bool is_non_null_cast { get; private set; } private Expression _inner; @@ -67,10 +67,19 @@ public class Vala.CastExpression : Expression { * @param type_reference target type * @return newly created cast expression */ - public CastExpression (Expression inner, DataType type_reference, SourceReference source_reference, bool is_silent_cast) { + public CastExpression (Expression inner, DataType type_reference, SourceReference source_reference) { this.type_reference = type_reference; this.source_reference = source_reference; - this.is_silent_cast = is_silent_cast; + this.is_silent_cast = false; + this.is_non_null_cast = false; + this.inner = inner; + } + + public CastExpression.silent (Expression inner, DataType type_reference, SourceReference source_reference) { + this.type_reference = type_reference; + this.source_reference = source_reference; + this.is_silent_cast = true; + this.is_non_null_cast = false; this.inner = inner; } diff --git a/vala/valagenieparser.vala b/vala/valagenieparser.vala index f9aba46ff..8c92e9599 100644 --- a/vala/valagenieparser.vala +++ b/vala/valagenieparser.vala @@ -1277,7 +1277,7 @@ public class Vala.Genie.Parser : CodeVisitor { case TokenType.PARAMS: case TokenType.YIELD: var inner = parse_unary_expression (); - return new CastExpression (inner, type, get_src (begin), false); + return new CastExpression (inner, type, get_src (begin)); default: break; } @@ -1450,7 +1450,7 @@ public class Vala.Genie.Parser : CodeVisitor { case TokenType.AS: next (); var type = parse_type (true, false); - left = new CastExpression (left, type, get_src (begin), true); + left = new CastExpression.silent (left, type, get_src (begin)); break; default: found = false; diff --git a/vala/valaparser.vala b/vala/valaparser.vala index 6228ba98e..2423e22cb 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -1112,17 +1112,17 @@ public class Vala.Parser : CodeVisitor { case TokenType.IDENTIFIER: case TokenType.PARAMS: var inner = parse_unary_expression (); - return new CastExpression (inner, type, get_src (begin), false); + return new CastExpression (inner, type, get_src (begin)); case TokenType.STAR: next (); var op = parse_unary_expression (); var inner = new PointerIndirection (op, get_src (begin)); - return new CastExpression (inner, type, get_src (begin), false); + return new CastExpression (inner, type, get_src (begin)); case TokenType.BITWISE_AND: next (); var op = parse_unary_expression (); var inner = new AddressofExpression (op, get_src (begin)); - return new CastExpression (inner, type, get_src (begin), false); + return new CastExpression (inner, type, get_src (begin)); default: break; } @@ -1299,7 +1299,7 @@ public class Vala.Parser : CodeVisitor { case TokenType.AS: next (); var type = parse_type (true, false); - left = new CastExpression (left, type, get_src (begin), true); + left = new CastExpression.silent (left, type, get_src (begin)); break; default: found = false;