From: Rico Tzschichholz Date: Thu, 15 Apr 2021 14:49:14 +0000 (+0200) Subject: vala: Refactor UnresolvedSymbol/Type constructors X-Git-Tag: 0.53.1~121 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7012f089b07baa8b44554cb36032dbda173e321;p=thirdparty%2Fvala.git vala: Refactor UnresolvedSymbol/Type constructors --- diff --git a/vala/valaparser.vala b/vala/valaparser.vala index 4cbe72358..bad086982 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -982,7 +982,7 @@ public class Vala.Parser : CodeVisitor { } var member = parse_member_name (); - DataType element_type = UnresolvedType.new_from_expression (member); + DataType element_type = new UnresolvedType.from_expression (member); bool is_pointer_type = false; while (accept (TokenType.STAR)) { element_type = new PointerType (element_type, get_src (begin)); diff --git a/vala/valaunresolvedsymbol.vala b/vala/valaunresolvedsymbol.vala index 5e4791d44..ff77977cf 100644 --- a/vala/valaunresolvedsymbol.vala +++ b/vala/valaunresolvedsymbol.vala @@ -39,18 +39,13 @@ public class Vala.UnresolvedSymbol : Symbol { this.inner = inner; } - public static UnresolvedSymbol? new_from_expression (Expression expr) { - unowned MemberAccess? ma = expr as MemberAccess; - if (ma != null) { - if (ma.inner != null) { - return new UnresolvedSymbol (new_from_expression (ma.inner), ma.member_name, ma.source_reference); - } else { - return new UnresolvedSymbol (null, ma.member_name, ma.source_reference); - } + public UnresolvedSymbol.from_expression (MemberAccess ma) { + base (ma.member_name, ma.source_reference); + if (ma.inner is MemberAccess) { + inner = new UnresolvedSymbol.from_expression ((MemberAccess) ma.inner); + } else if (ma.inner != null) { + Report.error (ma.source_reference, "Type reference must be simple name or member access expression"); } - - Report.error (expr.source_reference, "Type reference must be simple name or member access expression"); - return null; } public override string to_string () { diff --git a/vala/valaunresolvedtype.vala b/vala/valaunresolvedtype.vala index 2185f1de2..8f2f47585 100644 --- a/vala/valaunresolvedtype.vala +++ b/vala/valaunresolvedtype.vala @@ -53,22 +53,14 @@ public class Vala.UnresolvedType : DataType { * @param expr member access expression * @return newly created type reference */ - public static UnresolvedType? new_from_expression (Expression expr) { - var sym = UnresolvedSymbol.new_from_expression (expr); + public UnresolvedType.from_expression (MemberAccess expr) { + unresolved_symbol = new UnresolvedSymbol.from_expression (expr); + source_reference = expr.source_reference; + value_owned = true; - if (sym != null) { - var type_ref = new UnresolvedType.from_symbol (sym, expr.source_reference); - type_ref.value_owned = true; - - var ma = (MemberAccess) expr; - foreach (DataType arg in ma.get_type_arguments ()) { - type_ref.add_type_argument (arg); - } - - return type_ref; + foreach (DataType arg in expr.get_type_arguments ()) { + add_type_argument (arg); } - - return null; } public override DataType copy () {