From: Jürg Billeter Date: Sun, 30 Nov 2008 13:05:05 +0000 (+0000) Subject: Separate visiting inner expressions from visiting member access X-Git-Tag: VALA_0_5_2~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=91d30943bf2a89cc41f049b9e325a1d6038a296a;p=thirdparty%2Fvala.git Separate visiting inner expressions from visiting member access 2008-11-30 Jürg Billeter * vala/valamemberaccess.vala: * vala/valasymbolresolver.vala: * gobject/valaccodememberaccessmodule.vala: * gobject/valagsignalmodule.vala: Separate visiting inner expressions from visiting member access svn path=/trunk/; revision=2097 --- diff --git a/ChangeLog b/ChangeLog index 41e191b1b..4fc34f67a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-11-30 Jürg Billeter + + * vala/valamemberaccess.vala: + * vala/valasymbolresolver.vala: + * gobject/valaccodememberaccessmodule.vala: + * gobject/valagsignalmodule.vala: + + Separate visiting inner expressions from visiting member access + 2008-11-30 Jürg Billeter * vala/valaaddressofexpression.vala: diff --git a/gobject/valaccodememberaccessmodule.vala b/gobject/valaccodememberaccessmodule.vala index cb22da5e4..8a509f1c7 100644 --- a/gobject/valaccodememberaccessmodule.vala +++ b/gobject/valaccodememberaccessmodule.vala @@ -29,6 +29,8 @@ public class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { } public override void visit_member_access (MemberAccess expr) { + expr.accept_children (codegen); + CCodeExpression pub_inst = null; DataType base_type = null; diff --git a/gobject/valagsignalmodule.vala b/gobject/valagsignalmodule.vala index 0f787fcc9..de08011c0 100644 --- a/gobject/valagsignalmodule.vala +++ b/gobject/valagsignalmodule.vala @@ -585,13 +585,15 @@ public class Vala.GSignalModule : GObjectModule { } public override void visit_member_access (MemberAccess expr) { - CCodeExpression pub_inst = null; + if (expr.symbol_reference is Signal) { + expr.accept_children (codegen); + + CCodeExpression pub_inst = null; - if (expr.inner != null) { - pub_inst = (CCodeExpression) expr.inner.ccodenode; - } + if (expr.inner != null) { + pub_inst = (CCodeExpression) expr.inner.ccodenode; + } - if (expr.symbol_reference is Signal) { var sig = (Signal) expr.symbol_reference; var cl = (TypeSymbol) sig.parent_symbol; diff --git a/vala/valamemberaccess.vala b/vala/valamemberaccess.vala index 031d66f6f..c11da0cec 100644 --- a/vala/valamemberaccess.vala +++ b/vala/valamemberaccess.vala @@ -115,8 +115,14 @@ public class Vala.MemberAccess : Expression { public Gee.List get_type_arguments () { return new ReadOnlyList (type_argument_list); } - + public override void accept (CodeVisitor visitor) { + visitor.visit_member_access (this); + + visitor.visit_expression (this); + } + + public override void accept_children (CodeVisitor visitor) { if (inner != null) { inner.accept (visitor); } @@ -124,10 +130,6 @@ public class Vala.MemberAccess : Expression { foreach (DataType type_arg in type_argument_list) { type_arg.accept (visitor); } - - visitor.visit_member_access (this); - - visitor.visit_expression (this); } public override string to_string () { diff --git a/vala/valasymbolresolver.vala b/vala/valasymbolresolver.vala index 8fd813aa5..2197df002 100644 --- a/vala/valasymbolresolver.vala +++ b/vala/valasymbolresolver.vala @@ -394,6 +394,10 @@ public class Vala.SymbolResolver : CodeVisitor { expr.accept_children (this); } + public override void visit_member_access (MemberAccess expr) { + expr.accept_children (this); + } + public override void visit_method_call (MethodCall expr) { expr.accept_children (this); }