]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Refactor UnresolvedSymbol/Type constructors
authorRico Tzschichholz <ricotz@ubuntu.com>
Thu, 15 Apr 2021 14:49:14 +0000 (16:49 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Thu, 15 Apr 2021 14:49:14 +0000 (16:49 +0200)
vala/valaparser.vala
vala/valaunresolvedsymbol.vala
vala/valaunresolvedtype.vala

index 4cbe72358f05d6535cbeee5e62e7a3f0d3912071..bad086982bca0714d233a7fa3db5e5e07670609b 100644 (file)
@@ -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));
index 5e4791d44bc51bb5665f056579ed5272db24d120..ff77977cf27960e6abcba62169ba23fc890ac4e1 100644 (file)
@@ -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 () {
index 2185f1de2baa5b3fa706e42662ede91dfb1f2f74..8f2f4758524eed305ed2f743cdeb61bde9a1afff 100644 (file)
@@ -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 () {