diff options
Diffstat (limited to 'codegen/valaccodebasemodule.vala')
-rw-r--r-- | codegen/valaccodebasemodule.vala | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index b11992e17..638f41e4e 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -4448,6 +4448,20 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { } } + public override void visit_class_access (ClassAccess expr) { + CCodeExpression klass; + if (get_this_type () == null) { + // Accessing the member from a static or class constructor + klass = new CCodeIdentifier ("klass"); + } else { + // Accessing the member from within an instance method + var k = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_GET_CLASS")); + k.add_argument (get_this_cexpression ()); + klass = k; + } + set_cvalue (expr, klass); + } + public override void visit_postfix_expression (PostfixExpression expr) { MemberAccess ma = find_property_access (expr.inner); if (ma != null) { |