summaryrefslogtreecommitdiff
path: root/vala
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2021-04-15 16:49:14 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2021-04-15 16:49:14 +0200
commita7012f089b07baa8b44554cb36032dbda173e321 (patch)
tree655cefcec5ca20b8ef7766b0039c6f207e66d5de /vala
parent3877c507f883e4f23d74d921fda817ffc9c5099b (diff)
downloadvala-a7012f089b07baa8b44554cb36032dbda173e321.tar.gz
vala: Refactor UnresolvedSymbol/Type constructors
Diffstat (limited to 'vala')
-rw-r--r--vala/valaparser.vala2
-rw-r--r--vala/valaunresolvedsymbol.vala17
-rw-r--r--vala/valaunresolvedtype.vala20
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 () {