diff options
author | Luca Bruno <lucabru@src.gnome.org> | 2011-08-07 12:44:41 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2018-10-23 18:45:45 +0200 |
commit | 6395a2efe8f166fe8b2595fc2ba08dc4bcc69216 (patch) | |
tree | 330e9fd04c476190b76ccc8710ca1d9dd8573fa8 /vala/valadeclarationstatement.vala | |
parent | 6c44fc72635e0a55f57bb9db526c4d83ddd551df (diff) | |
download | vala-6395a2efe8f166fe8b2595fc2ba08dc4bcc69216.tar.gz |
Collect error_types on demand to allow transformations
Diffstat (limited to 'vala/valadeclarationstatement.vala')
-rw-r--r-- | vala/valadeclarationstatement.vala | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/vala/valadeclarationstatement.vala b/vala/valadeclarationstatement.vala index f0a3d4161..ab652e906 100644 --- a/vala/valadeclarationstatement.vala +++ b/vala/valadeclarationstatement.vala @@ -62,6 +62,16 @@ public class Vala.DeclarationStatement : CodeNode, Statement { declaration.accept (visitor); } + public override void get_error_types (Collection<DataType> collection, SourceReference? source_reference = null) { + if (source_reference == null) { + source_reference = this.source_reference; + } + var local = declaration as LocalVariable; + if (local != null && local.initializer != null) { + local.initializer.get_error_types (collection, source_reference); + } + } + public override bool check (CodeContext context) { if (checked) { return !error; @@ -71,17 +81,6 @@ public class Vala.DeclarationStatement : CodeNode, Statement { declaration.check (context); - var local = declaration as LocalVariable; - if (local != null && local.initializer != null) { - foreach (DataType error_type in local.initializer.get_error_types ()) { - // ensure we can trace back which expression may throw errors of this type - var initializer_error_type = error_type.copy (); - initializer_error_type.source_reference = local.initializer.source_reference; - - add_error_type (initializer_error_type); - } - } - return !error; } |