summaryrefslogtreecommitdiff
path: root/vala/valacreationmethod.vala
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2010-08-21 19:12:16 +0200
committerJürg Billeter <j@bitron.ch>2010-08-21 19:13:03 +0200
commit8aa6299ea7a39e7a652ce3896324aaa47af99a18 (patch)
tree014feb84823c70cebf2fcca5a6181a336b17086f /vala/valacreationmethod.vala
parent559bbfb765dfdc2472b6ef2d2179c348fa09f828 (diff)
downloadvala-8aa6299ea7a39e7a652ce3896324aaa47af99a18.tar.gz
Improve consistency in constructor chain up handling
Diffstat (limited to 'vala/valacreationmethod.vala')
-rw-r--r--vala/valacreationmethod.vala12
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");