]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Revert "Use ErrorType-based collection for CodeNode.get_error_types()"
authorRico Tzschichholz <ricotz@ubuntu.com>
Mon, 25 Oct 2021 07:13:51 +0000 (09:13 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 25 Oct 2021 07:15:30 +0000 (09:15 +0200)
Unfortunately, it is causing issues with the way the GIR/GIDL parser works.

This reverts commit 0751a9e3bf46fc830d3e7ca3d0cfd3ae48846e68.

40 files changed:
codegen/valaccodemethodmodule.vala
codegen/valagdbusclientmodule.vala
codegen/valagerrormodule.vala
vala/valaassignment.vala
vala/valabinaryexpression.vala
vala/valablock.vala
vala/valacallabletype.vala
vala/valacastexpression.vala
vala/valacodenode.vala
vala/valacodewriter.vala
vala/valaconditionalexpression.vala
vala/valaconstructor.vala
vala/valacreationmethod.vala
vala/valadeclarationstatement.vala
vala/valadelegate.vala
vala/valadelegatetype.vala
vala/valadestructor.vala
vala/valaelementaccess.vala
vala/valaexpressionstatement.vala
vala/valaflowanalyzer.vala
vala/valaforeachstatement.vala
vala/valagirparser.vala
vala/valaifstatement.vala
vala/valalambdaexpression.vala
vala/valaloopstatement.vala
vala/valamemberaccess.vala
vala/valamethod.vala
vala/valamethodcall.vala
vala/valaobjectcreationexpression.vala
vala/valapointerindirection.vala
vala/valapropertyaccessor.vala
vala/valareturnstatement.vala
vala/valastatementlist.vala
vala/valaswitchstatement.vala
vala/valathrowstatement.vala
vala/valatrystatement.vala
vala/valaunaryexpression.vala
vala/valawithstatement.vala
valadoc/symbolresolver.vala
vapigen/valagidlparser.vala

index d4f9931ad94587514122d9ea6f5580dc6003c311..840aa14bc7af222c8b5929f383eb6578afc9073c 100644 (file)
@@ -94,9 +94,9 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
                }
 
                if (m.has_error_type_parameter ()) {
-                       var error_types = new ArrayList<ErrorType> ();
+                       var error_types = new ArrayList<DataType> ();
                        m.get_error_types (error_types);
-                       foreach (var error_type in error_types) {
+                       foreach (DataType error_type in error_types) {
                                generate_type_declaration (error_type, decl_space);
                        }
 
index be102bf55a2c3925b97bf384169b1e642749683c..697b0875875f298bbc251b9af5c643a43c4a7d3e 100644 (file)
@@ -594,11 +594,12 @@ public class Vala.GDBusClientModule : GDBusModule {
                        }
 
                        // register errors
-                       var error_types = new ArrayList<ErrorType> ();
+                       var error_types = new ArrayList<DataType> ();
                        m.get_error_types (error_types);
                        foreach (var error_type in error_types) {
-                               if (error_type.error_domain != null) {
-                                       ccode.add_expression (new CCodeIdentifier (get_ccode_upper_case_name (error_type.error_domain)));
+                               var errtype = (ErrorType) error_type;
+                               if (errtype.error_domain != null) {
+                                       ccode.add_expression (new CCodeIdentifier (get_ccode_upper_case_name (errtype.error_domain)));
                                }
                        }
 
index 40fee3920879fe175fd8cc66215610858cbd0a05..a559a4d002dce99a59d4342a1fbed0e70e34c7fd 100644 (file)
@@ -203,21 +203,21 @@ public class Vala.GErrorModule : CCodeDelegateModule {
                                append_local_free (current_symbol, null, current_try);
                        }
 
-                       var error_types = new ArrayList<ErrorType> ();
+                       var error_types = new ArrayList<DataType> ();
                        node.get_error_types (error_types);
 
                        bool has_general_catch_clause = false;
 
                        if (!is_in_catch) {
-                               var handled_error_types = new ArrayList<ErrorType> ();
+                               var handled_error_types = new ArrayList<DataType> ();
                                foreach (CatchClause clause in current_try.get_catch_clauses ()) {
                                        // keep track of unhandled error types
-                                       foreach (var node_error_type in error_types) {
+                                       foreach (DataType node_error_type in error_types) {
                                                if (clause.error_type == null || node_error_type.compatible (clause.error_type)) {
                                                        handled_error_types.add (node_error_type);
                                                }
                                        }
-                                       foreach (var handled_error_type in handled_error_types) {
+                                       foreach (DataType handled_error_type in handled_error_types) {
                                                error_types.remove (handled_error_type);
                                        }
                                        handled_error_types.clear ();
@@ -273,9 +273,9 @@ public class Vala.GErrorModule : CCodeDelegateModule {
                        // current method can fail, propagate error
                        CCodeBinaryExpression ccond = null;
 
-                       var error_types = new ArrayList<ErrorType> ();
+                       var error_types = new ArrayList<DataType> ();
                        current_method.get_error_types (error_types);
-                       foreach (var error_type in error_types) {
+                       foreach (DataType error_type in error_types) {
                                // If GLib.Error is allowed we propagate everything
                                if (error_type.equals (gerror_type)) {
                                        ccond = null;
@@ -284,7 +284,7 @@ public class Vala.GErrorModule : CCodeDelegateModule {
 
                                // Check the allowed error domains to propagate
                                var domain_check = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, new CCodeMemberAccess.pointer
-                                       (get_inner_error_cexpression (), "domain"), new CCodeIdentifier (get_ccode_upper_case_name (error_type.error_domain)));
+                                       (get_inner_error_cexpression (), "domain"), new CCodeIdentifier (get_ccode_upper_case_name (((ErrorType) error_type).error_domain)));
                                if (ccond == null) {
                                        ccond = domain_check;
                                } else {
index bf369b8831848fafbc172d34f88648e308ac6330..46f9445a44a311c49ecac8ebfba06ba10c56a24f 100644 (file)
@@ -105,7 +105,7 @@ public class Vala.Assignment : Expression {
                return left.is_accessible (sym) && right.is_accessible (sym);
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                left.get_error_types (collection, source_reference);
                right.get_error_types (collection, source_reference);
        }
index 401dc6daa02b31978529920bfb8985a015c32999..d379927c0abbad078f3376b95152a51c56d01024 100644 (file)
@@ -128,7 +128,7 @@ public class Vala.BinaryExpression : Expression {
                return left.is_accessible (sym) && right.is_accessible (sym);
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                left.get_error_types (collection, source_reference);
                right.get_error_types (collection, source_reference);
        }
index 47819f5b18d6a7308270f754a83f95fcba92fee5..e002909bf3c0e46bcc73d26914878e22ad6d4489 100644 (file)
@@ -183,7 +183,7 @@ public class Vala.Block : Symbol, Statement {
                return !error;
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                // use get_statements () instead of statement_list to not miss errors within StatementList objects
                foreach (Statement stmt in get_statements ()) {
                        stmt.get_error_types (collection, source_reference);
index cb584fb9e2dc39e1b02ba3b94c7fe1714deb6e54..6ea2349d0ed99f7d2b7ad05a34ff34adfdad8ee7 100644 (file)
@@ -126,13 +126,13 @@ public abstract class Vala.CallableType : DataType {
                builder.append_c (')');
 
                // Append error-types
-               var error_types = new ArrayList<ErrorType> ();
+               var error_types = new ArrayList<DataType> ();
                callable_symbol.get_error_types (error_types);
                if (error_types.size > 0) {
                        builder.append (" throws ");
 
                        bool first = true;
-                       foreach (var type in error_types) {
+                       foreach (DataType type in error_types) {
                                if (!first) {
                                        builder.append (", ");
                                } else {
index fccc1d1912948f46837a4d4e85abec21ceb5230b..1d1dbb0f2a3aa1841843b400f5d76504585f1b4f 100644 (file)
@@ -132,7 +132,7 @@ public class Vala.CastExpression : Expression {
                }
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                inner.get_error_types (collection, source_reference);
        }
 
index 73a3ab417ee14373262e283c64df7c06733a954b..05ba53a0a13f3589be5e468ecc5be1f8f9de0677 100644 (file)
@@ -63,7 +63,7 @@ public abstract class Vala.CodeNode {
         */
        public bool tree_can_fail {
                get {
-                       var error_types = new ArrayList<ErrorType> ();
+                       var error_types = new ArrayList<DataType> ();
                        get_error_types (error_types);
                        return error_types.size > 0;
                }
@@ -409,7 +409,7 @@ public abstract class Vala.CodeNode {
        public virtual void get_used_variables (Collection<Variable> collection) {
        }
 
-       public virtual void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public virtual void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
        }
 
        public static string get_temp_name () {
index d73f341d71c0bf3fc49ff75071b570e87c158190..cb3bd998d9ccac50ff4aa5859a788becfffb7f7d 100644 (file)
@@ -731,7 +731,7 @@ public class Vala.CodeWriter : CodeVisitor {
 
                write_params (cb.get_parameters ());
 
-               var error_types = new ArrayList<ErrorType> ();
+               var error_types = new ArrayList<DataType> ();
                cb.get_error_types (error_types);
                write_error_domains (error_types);
 
@@ -849,7 +849,7 @@ public class Vala.CodeWriter : CodeVisitor {
 
                write_params (m.get_parameters ());
 
-               var error_types = new ArrayList<ErrorType> ();
+               var error_types = new ArrayList<DataType> ();
                m.get_error_types (error_types);
                write_error_domains (error_types);
 
index 66bbfbaebb4db31b567d9ded8c876d3bd42012e3..c8bfdbce135d1640f8181887d9c040202e333f5d 100644 (file)
@@ -104,7 +104,7 @@ public class Vala.ConditionalExpression : Expression {
                return condition.is_accessible (sym) && true_expression.is_accessible (sym) && false_expression.is_accessible (sym);
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                condition.get_error_types (collection, source_reference);
                true_expression.get_error_types (collection, source_reference);
                false_expression.get_error_types (collection, source_reference);
index a83acee7ec31c86226eaef3e6368a56e315e6fb7..8c916f8a520517e9245925ce376206b89e9251c7 100644 (file)
@@ -79,10 +79,10 @@ public class Vala.Constructor : Subroutine {
                }
 
                if (body != null && !body.error) {
-                       var body_errors = new ArrayList<ErrorType> ();
+                       var body_errors = new ArrayList<DataType> ();
                        body.get_error_types (body_errors);
-                       foreach (var body_error_type in body_errors) {
-                               if (!body_error_type.dynamic_error) {
+                       foreach (DataType body_error_type in body_errors) {
+                               if (!((ErrorType) body_error_type).dynamic_error) {
                                        Report.warning (body_error_type.source_reference, "unhandled error `%s'", body_error_type.to_string());
                                }
                        }
index c47ea10e5a197650d8cdb706a5dc0cbec0b98a32..77b311f3163a063fe4c842a65ca340be9c6ea64c 100644 (file)
@@ -61,7 +61,7 @@ public class Vala.CreationMethod : Method {
                }
 
                if (error_types != null) {
-                       foreach (var error_type in error_types) {
+                       foreach (DataType error_type in error_types) {
                                error_type.accept (visitor);
                        }
                }
@@ -143,7 +143,7 @@ public class Vala.CreationMethod : Method {
                }
 
                if (error_types != null) {
-                       foreach (var error_type in error_types) {
+                       foreach (DataType error_type in error_types) {
                                error_type.check (context);
 
                                // check whether error type is at least as accessible as the creation method
@@ -215,18 +215,18 @@ public class Vala.CreationMethod : Method {
 
                // check that all errors that can be thrown in the method body are declared
                if (body != null && !body.error) {
-                       var body_errors = new ArrayList<ErrorType> ();
+                       var body_errors = new ArrayList<DataType> ();
                        body.get_error_types (body_errors);
-                       foreach (var body_error_type in body_errors) {
+                       foreach (DataType body_error_type in body_errors) {
                                bool can_propagate_error = false;
                                if (error_types != null) {
-                                       foreach (var method_error_type in error_types) {
+                                       foreach (DataType method_error_type in error_types) {
                                                if (body_error_type.compatible (method_error_type)) {
                                                        can_propagate_error = true;
                                                }
                                        }
                                }
-                               if (!can_propagate_error && !body_error_type.dynamic_error) {
+                               if (!can_propagate_error && !((ErrorType) body_error_type).dynamic_error) {
                                        Report.warning (body_error_type.source_reference, "unhandled error `%s'", body_error_type.to_string());
                                }
                        }
index c6841ea2d66ed5409bc972eca5c705d13d4f817c..30732b4a624915c688f907b049a584ec3831c26c 100644 (file)
@@ -62,7 +62,7 @@ public class Vala.DeclarationStatement : CodeNode, Statement {
                declaration.accept (visitor);
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                if (source_reference == null) {
                        source_reference = this.source_reference;
                }
index 8bb318d4386f01966a791f287917fa7014693e18..249adcdfc35eaf63ece3af9323134f8d3a78fc22 100644 (file)
@@ -206,7 +206,7 @@ public class Vala.Delegate : TypeSymbol, Callable {
                        return false;
                }
 
-               var method_error_types = new ArrayList<ErrorType> ();
+               var method_error_types = new ArrayList<DataType> ();
                m.get_error_types (method_error_types);
 
                // method must throw error if the delegate does
@@ -215,10 +215,10 @@ public class Vala.Delegate : TypeSymbol, Callable {
                }
 
                // method may throw less but not more errors than the delegate
-               foreach (var method_error_type in method_error_types) {
+               foreach (DataType method_error_type in method_error_types) {
                        bool match = false;
                        if (error_types != null) {
-                               foreach (var delegate_error_type in error_types) {
+                               foreach (DataType delegate_error_type in error_types) {
                                        if (method_error_type.compatible (delegate_error_type)) {
                                                match = true;
                                                break;
@@ -250,7 +250,7 @@ public class Vala.Delegate : TypeSymbol, Callable {
                }
 
                if (error_types != null) {
-                       foreach (var error_type in error_types) {
+                       foreach (DataType error_type in error_types) {
                                error_type.accept (visitor);
                        }
                }
@@ -272,15 +272,15 @@ public class Vala.Delegate : TypeSymbol, Callable {
                error_type.parent_node = this;
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                if (error_types != null) {
                        foreach (var error_type in error_types) {
                                if (source_reference != null) {
-                                       var type = (ErrorType) error_type.copy ();
+                                       var type = error_type.copy ();
                                        type.source_reference = source_reference;
                                        collection.add (type);
                                } else {
-                                       collection.add ((ErrorType) error_type);
+                                       collection.add (error_type);
                                }
                        }
                }
index 33d9c5521dd2b838e0c8cbc53600b78a8c36b793..8b51f324cc0cf70ef16156b027e76095ed82825b 100644 (file)
@@ -167,13 +167,13 @@ public class Vala.DelegateType : CallableType {
                }
 
                // target-delegate may throw less but not more errors than the delegate
-               var error_types = new ArrayList<ErrorType> ();
+               var error_types = new ArrayList<DataType> ();
                delegate_symbol.get_error_types (error_types);
-               foreach (var error_type in error_types) {
+               foreach (DataType error_type in error_types) {
                        bool match = false;
-                       var delegate_error_types = new ArrayList<ErrorType> ();
+                       var delegate_error_types = new ArrayList<DataType> ();
                        dt_target.delegate_symbol.get_error_types (delegate_error_types);
-                       foreach (var delegate_error_type in delegate_error_types) {
+                       foreach (DataType delegate_error_type in delegate_error_types) {
                                if (error_type.compatible (delegate_error_type)) {
                                        match = true;
                                        break;
index 84a10280ffcdcbab873f08122f980acda6ea3a34..2febe55d3c6dea012d5eaa6d88451fee46b8ad26 100644 (file)
@@ -79,10 +79,10 @@ public class Vala.Destructor : Subroutine {
                }
 
                if (body != null && !body.error) {
-                       var body_errors = new ArrayList<ErrorType> ();
+                       var body_errors = new ArrayList<DataType> ();
                        body.get_error_types (body_errors);
-                       foreach (var body_error_type in body_errors) {
-                               if (!body_error_type.dynamic_error) {
+                       foreach (DataType body_error_type in body_errors) {
+                               if (!((ErrorType) body_error_type).dynamic_error) {
                                        Report.warning (body_error_type.source_reference, "unhandled error `%s'", body_error_type.to_string());
                                }
                        }
index de050bc3b7bb63cba5433917ff93a0d15f8de11e..ce6281870601f0f28b12d38d0ba0c7d1d8e733bd 100644 (file)
@@ -127,7 +127,7 @@ public class Vala.ElementAccess : Expression {
                return container.is_accessible (sym);
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                container.get_error_types (collection, source_reference);
                foreach (Expression e in indices) {
                        e.get_error_types (collection, source_reference);
index ee521f623913074617088c852f7273d168f4dc51..ac435d081b128ba07c42fdb6d93457b1985c4e82 100644 (file)
@@ -87,7 +87,7 @@ public class Vala.ExpressionStatement : CodeNode, Statement {
                return !error;
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                expression.get_error_types (collection, source_reference);
        }
 
index bb4153d2ae1ff51f8828745b50f3c345f626c1e1..a5a8be993f00c3121f922db79d7a511ff6c0d6d3 100644 (file)
@@ -908,10 +908,11 @@ public class Vala.FlowAnalyzer : CodeVisitor {
                        var last_block = current_block;
 
                        // exceptional control flow
-                       var error_types = new ArrayList<ErrorType> ();
+                       var error_types = new ArrayList<DataType> ();
                        node.get_error_types (error_types);
-                       foreach (var error_type in error_types) {
-                               unowned Class? error_class = error_type.type_symbol as Class;
+                       foreach (DataType error_data_type in error_types) {
+                               unowned ErrorType? error_type = error_data_type as ErrorType;
+                               unowned Class? error_class = error_data_type.type_symbol as Class;
                                current_block = last_block;
                                unreachable_reported = true;
 
index ef957839d7132032727d24b80d89cbd52b4e1462..3d8ce2ba975f43e840a62ba0b6d2746ad2c8d9ea 100644 (file)
@@ -413,7 +413,7 @@ public class Vala.ForeachStatement : Block {
                return !error;
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                if (source_reference == null) {
                        source_reference = this.source_reference;
                }
index 94c9e253468f28aa7c73709e8e1557a9b71e25f3..31b8ad4c619fe4b4d5242c93ac995b8a8590b9bc 100644 (file)
@@ -3944,7 +3944,7 @@ public class Vala.GirParser : CodeVisitor {
                                deleg.add_parameter (param.copy ());
                        }
 
-                       var error_types = new ArrayList<ErrorType> ();
+                       var error_types = new ArrayList<DataType> ();
                        orig.get_error_types (error_types, alias.source_reference);
                        foreach (var error_type in error_types) {
                                deleg.add_error_type (error_type.copy ());
@@ -4448,9 +4448,9 @@ public class Vala.GirParser : CodeVisitor {
                                }
                        }
 
-                       var error_types = new ArrayList<ErrorType> ();
+                       var error_types = new ArrayList<DataType> ();
                        finish_method.get_error_types (error_types, method.source_reference);
-                       foreach (var error_type in error_types) {
+                       foreach (DataType error_type in error_types) {
                                method.add_error_type (error_type);
                        }
                        finish_method_node.processed = true;
index 85b98eeec73b12170e8b180c63bcbfbb77e5e739..bed1dfe9abc1902686562d05a45271976294f2ad 100644 (file)
@@ -102,7 +102,7 @@ public class Vala.IfStatement : CodeNode, Statement {
                }
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                condition.get_error_types (collection, source_reference);
                true_statement.get_error_types (collection, source_reference);
                if (false_statement != null) {
index 291e451a598f59069306610b96e8945eb695834c..be33765f8a3595b6492553c46f02c0b9d4e58e23 100644 (file)
@@ -225,10 +225,10 @@ public class Vala.LambdaExpression : Expression {
                        return false;
                }
 
-               var error_types = new ArrayList<ErrorType> ();
+               var error_types = new ArrayList<DataType> ();
                cb.get_error_types (error_types);
                foreach (var error_type in error_types) {
-                       method.add_error_type ((ErrorType) error_type.copy ());
+                       method.add_error_type (error_type.copy ());
                }
 
                if (expression_body != null) {
index b99172b21af5fdf88e2ea0deb1f6fdf0dc9e902d..e522fd1b0cc8ce58abdc274255db3ba7fe6afab7 100644 (file)
@@ -45,7 +45,7 @@ public class Vala.LoopStatement : Loop, Statement {
                body.accept (visitor);
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                body.get_error_types (collection, source_reference);
        }
 
index b1c53c64d1efac9d33d98904d2095f6184231a17..5be3fa0da9876e3c88685c3dc2ecbb8011af8fcd 100644 (file)
@@ -205,7 +205,7 @@ public class Vala.MemberAccess : Expression {
                }
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                if (inner != null) {
                        inner.get_error_types (collection, source_reference);
                }
index d40875d47aae302a7e9ad0dfe1379d6c5e4381b4..dc41e3d77eac01edd5efcf2f59150845717e39fc 100644 (file)
@@ -421,12 +421,12 @@ public class Vala.Method : Subroutine, Callable {
                }
 
                /* this method may throw less but not more errors than the base method */
-               var base_method_errors = new ArrayList<ErrorType> ();
+               var base_method_errors = new ArrayList<DataType> ();
                base_method.get_error_types (base_method_errors);
                if (error_types != null) {
-                       foreach (var method_error_type in error_types) {
+                       foreach (DataType method_error_type in error_types) {
                        bool match = false;
-                               foreach (var base_method_error_type in base_method_errors) {
+                               foreach (DataType base_method_error_type in base_method_errors) {
                                if (method_error_type.compatible (base_method_error_type)) {
                                        match = true;
                                        break;
@@ -563,15 +563,15 @@ public class Vala.Method : Subroutine, Callable {
                error_type.parent_node = this;
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                if (error_types != null) {
                        foreach (var error_type in error_types) {
                                if (source_reference != null) {
-                                       var type = (ErrorType) error_type.copy ();
+                                       var type = error_type.copy ();
                                        type.source_reference = source_reference;
                                        collection.add (type);
                                } else {
-                                       collection.add ((ErrorType) error_type);
+                                       collection.add (error_type);
                                }
                        }
                }
@@ -1034,18 +1034,19 @@ public class Vala.Method : Subroutine, Callable {
 
                // check that all errors that can be thrown in the method body are declared
                if (body != null && !body.error) {
-                       var body_errors = new ArrayList<ErrorType> ();
+                       var body_errors = new ArrayList<DataType> ();
                        body.get_error_types (body_errors);
-                       foreach (var body_error_type in body_errors) {
+                       foreach (DataType body_error_type in body_errors) {
                                bool can_propagate_error = false;
                                if (error_types != null) {
-                                       foreach (var method_error_type in error_types) {
+                                       foreach (DataType method_error_type in error_types) {
                                        if (body_error_type.compatible (method_error_type)) {
                                                can_propagate_error = true;
                                        }
                                }
                                }
-                               if (!can_propagate_error && !body_error_type.dynamic_error) {
+                               bool is_dynamic_error = body_error_type is ErrorType && ((ErrorType) body_error_type).dynamic_error;
+                               if (!can_propagate_error && !is_dynamic_error) {
                                        Report.warning (body_error_type.source_reference, "unhandled error `%s'", body_error_type.to_string());
                                }
                        }
@@ -1060,10 +1061,13 @@ public class Vala.Method : Subroutine, Callable {
                                bool throws_gerror = false;
                                bool throws_gioerror = false;
                                bool throws_gdbuserror = false;
-                               var error_types = new ArrayList<ErrorType> ();
+                               var error_types = new ArrayList<DataType> ();
                                get_error_types (error_types);
-                               foreach (var error_type in error_types) {
-                                       unowned ErrorDomain? error_domain = error_type.error_domain;
+                               foreach (DataType error_type in error_types) {
+                                       if (!(error_type is ErrorType)) {
+                                               continue;
+                                       }
+                                       unowned ErrorDomain? error_domain = ((ErrorType) error_type).error_domain;
                                        if (error_domain == null) {
                                                throws_gerror = true;
                                                break;
index 0a714ffd4df856b07cc6f5280100cd19fc13a9a9..aff7db77a44d8f3ea8d0d525d298f90315be1fb9 100644 (file)
@@ -142,7 +142,7 @@ public class Vala.MethodCall : Expression, CallableExpression {
                return call.is_accessible (sym);
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                if (source_reference == null) {
                        source_reference = this.source_reference;
                }
index 0b668ea64ffe1e1d3335fd373baa93443aa7506c..a6ce8a14f7943d2d45ac5bccc5504806f51167d2 100644 (file)
@@ -565,7 +565,7 @@ public class Vala.ObjectCreationExpression : Expression, CallableExpression {
                return !error;
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                if (symbol_reference is Method) {
                        if (source_reference == null) {
                                source_reference = this.source_reference;
index 86c441ff3c735de458429cfa83d35c9b817fd2f0..5e14de7f6475805eaa19b6e97e23e99a91e80901 100644 (file)
@@ -77,7 +77,7 @@ public class Vala.PointerIndirection : Expression {
                return inner.is_accessible (sym);
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                inner.get_error_types (collection, source_reference);
        }
 
index 46d8604a359753c9e2cc36deb5744cba920c0bb0..393284301b4f8d97618ad943d48de41b0c34c9ab 100644 (file)
@@ -245,10 +245,10 @@ public class Vala.PropertyAccessor : Subroutine {
                }
 
                if (body != null && !body.error) {
-                       var error_types = new ArrayList<ErrorType> ();
+                       var error_types = new ArrayList<DataType> ();
                        body.get_error_types (error_types);
-                       foreach (var body_error_type in error_types) {
-                               if (!body_error_type.dynamic_error) {
+                       foreach (DataType body_error_type in error_types) {
+                               if (!((ErrorType) body_error_type).dynamic_error) {
                                        Report.warning (body_error_type.source_reference, "unhandled error `%s'", body_error_type.to_string ());
                                }
                        }
index 7a9f14c457ff66c053a2fcb619c110a393441f82..3873083ee648228398c689316f43873dacf78d0e 100644 (file)
@@ -70,7 +70,7 @@ public class Vala.ReturnStatement : CodeNode, Statement {
                }
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                if (return_expression != null) {
                        return_expression.get_error_types (collection, source_reference);
                }
index 265cefcf5c07291e5b33600b98a1c4879495e3e6..b76b74cae78c894f5e74f22d67933bbaecbff47f 100644 (file)
@@ -48,7 +48,7 @@ public class Vala.StatementList : CodeNode, Statement {
                list.insert (index, stmt);
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                foreach (var stmt in list) {
                        stmt.get_error_types (collection, source_reference);
                }
index ac44691c5fc941877fa43bf14227a3b558c89871..31ef8262205e8ca27f293393184427fec3983414 100644 (file)
@@ -93,7 +93,7 @@ public class Vala.SwitchStatement : CodeNode, Statement {
                }
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                foreach (SwitchSection section in sections) {
                        section.get_error_types (collection, source_reference);
                }
index d8f03909be8c79a5197b70f26918f09cdf3e8197..8a6e04be77c7ecde8344090a1cf1922025d47282 100644 (file)
@@ -72,14 +72,14 @@ public class Vala.ThrowStatement : CodeNode, Statement {
                }
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                if (error) {
                        return;
                }
                if (source_reference == null) {
                        source_reference = this.source_reference;
                }
-               var error_type = (ErrorType) error_expression.value_type.copy ();
+               var error_type = error_expression.value_type.copy ();
                error_type.source_reference = source_reference;
                collection.add (error_type);
        }
index ebec4dd53079b8dfd3a55602219c7202a1d87451..7cbc78a27d64023fa25387837a30ee5c51064022 100644 (file)
@@ -104,8 +104,8 @@ public class Vala.TryStatement : CodeNode, Statement {
                }
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
-               var error_types = new ArrayList<ErrorType> ();
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
+               var error_types = new ArrayList<DataType> ();
                body.get_error_types (error_types, source_reference);
 
                foreach (CatchClause clause in catch_clauses) {
index 37f8788b0867d93f35b0e82b693e8bb2ea0aa7d3..a725456fa4bbdc195622e3a052787e76fffe9e61 100644 (file)
@@ -128,7 +128,7 @@ public class Vala.UnaryExpression : Expression {
                return st.is_integer_type ();
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                inner.get_error_types (collection, source_reference);
        }
 
index fd556583e32c8469f14c76101a752ed000434fe6..52210284a0e8a844ca9f23bcf619afa8dfaf522e 100644 (file)
@@ -134,7 +134,7 @@ public class Vala.WithStatement : Block {
                body.emit (codegen);
        }
 
-       public override void get_error_types (Collection<ErrorType> collection, SourceReference? source_reference = null) {
+       public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) {
                if (source_reference == null) {
                        source_reference = this.source_reference;
                }
index 4d41c823c58ebe141d0a653ac4b1dd71e9829e58..20021c5fa59f4eae67a5f90ea8f41d7ebdce1d48 100644 (file)
@@ -38,10 +38,10 @@ public class Valadoc.SymbolResolver : Visitor {
        }
 
        private void resolve_thrown_list (Symbol symbol, Vala.Symbol vala_symbol) {
-               var error_types = new Vala.ArrayList<Vala.ErrorType> ();
+               var error_types = new Vala.ArrayList<Vala.DataType> ();
                vala_symbol.get_error_types (error_types);
-               foreach (var type in error_types) {
-                       unowned Vala.ErrorDomain? vala_edom = type.error_domain;
+               foreach (Vala.DataType type in error_types) {
+                       unowned Vala.ErrorDomain? vala_edom = ((Vala.ErrorType) type).error_domain;
                        Symbol? edom = symbol_map.get (vala_edom);
                        symbol.add_child (edom ?? glib_error);
                }
index 87ef022e9b940e089aafb0fb919ea430ac870e10..007896ec440f150299029537760fcd0fb7d30ae7 100644 (file)
@@ -1827,9 +1827,9 @@ public class Vala.GIdlParser : CodeVisitor {
                                                        m.add_parameter (async_param);
                                                }
                                        }
-                                       var error_types = new ArrayList<ErrorType> ();
+                                       var error_types = new ArrayList<DataType> ();
                                        finish_method.get_error_types (error_types, m.source_reference);
-                                       foreach (var error_type in error_types) {
+                                       foreach (DataType error_type in error_types) {
                                                m.add_error_type (error_type);
                                        }
                                        finish_methods.add (finish_method);