diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-04-15 16:49:14 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-04-15 16:49:14 +0200 |
commit | a7012f089b07baa8b44554cb36032dbda173e321 (patch) | |
tree | 655cefcec5ca20b8ef7766b0039c6f207e66d5de /vala | |
parent | 3877c507f883e4f23d74d921fda817ffc9c5099b (diff) | |
download | vala-a7012f089b07baa8b44554cb36032dbda173e321.tar.gz |
vala: Refactor UnresolvedSymbol/Type constructors
Diffstat (limited to 'vala')
-rw-r--r-- | vala/valaparser.vala | 2 | ||||
-rw-r--r-- | vala/valaunresolvedsymbol.vala | 17 | ||||
-rw-r--r-- | vala/valaunresolvedtype.vala | 20 |
3 files changed, 13 insertions, 26 deletions
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 () { |