diff options
author | Jürg Billeter <j@bitron.ch> | 2010-08-21 19:12:16 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2010-08-21 19:13:03 +0200 |
commit | 8aa6299ea7a39e7a652ce3896324aaa47af99a18 (patch) | |
tree | 014feb84823c70cebf2fcca5a6181a336b17086f /vala/valacreationmethod.vala | |
parent | 559bbfb765dfdc2472b6ef2d2179c348fa09f828 (diff) | |
download | vala-8aa6299ea7a39e7a652ce3896324aaa47af99a18.tar.gz |
Improve consistency in constructor chain up handling
Diffstat (limited to 'vala/valacreationmethod.vala')
-rw-r--r-- | vala/valacreationmethod.vala | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/vala/valacreationmethod.vala b/vala/valacreationmethod.vala index 1243be218..01d09fcc7 100644 --- a/vala/valacreationmethod.vala +++ b/vala/valacreationmethod.vala @@ -193,7 +193,17 @@ public class Vala.CreationMethod : Method { if (analyzer.context.profile == Profile.GOBJECT && cl.base_class.default_construction_method != null && !cl.base_class.default_construction_method.has_construct_function) { - // chain up impossible + // directly chain up to Object + var old_insert_block = analyzer.insert_block; + analyzer.current_symbol = body; + analyzer.insert_block = body; + + var stmt = new ExpressionStatement (new MethodCall (new MemberAccess (new MemberAccess.simple ("GLib", source_reference), "Object", source_reference), source_reference), source_reference); + body.insert_statement (0, stmt); + stmt.check (analyzer); + + analyzer.current_symbol = this; + analyzer.insert_block = old_insert_block; } else if (cl.base_class.default_construction_method == null || cl.base_class.default_construction_method.access == SymbolAccessibility.PRIVATE) { Report.error (source_reference, "unable to chain up to private base constructor"); |