summaryrefslogtreecommitdiff
path: root/codegen/valaccodebasemodule.vala
diff options
context:
space:
mode:
Diffstat (limited to 'codegen/valaccodebasemodule.vala')
-rw-r--r--codegen/valaccodebasemodule.vala14
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) {