summaryrefslogtreecommitdiff
path: root/codegen/valaccodememberaccessmodule.vala
diff options
context:
space:
mode:
Diffstat (limited to 'codegen/valaccodememberaccessmodule.vala')
-rw-r--r--codegen/valaccodememberaccessmodule.vala22
1 files changed, 3 insertions, 19 deletions
diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala
index 3199ea24e..047748b3e 100644
--- a/codegen/valaccodememberaccessmodule.vala
+++ b/codegen/valaccodememberaccessmodule.vala
@@ -682,26 +682,10 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
}
}
} else if (field.binding == MemberBinding.CLASS) {
- var cl = (Class) field.parent_symbol;
- var cast = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_class_type_function (cl)));
+ var klass = get_cvalue_ (instance);
- CCodeExpression klass;
- if (instance == null) {
- if (get_this_type () == null) {
- // Accessing the field from a static or class constructor
- klass = new CCodeIdentifier ("klass");
- } else {
- // Accessing the field from within an instance method
- var k = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_GET_CLASS"));
- k.add_argument (new CCodeIdentifier ("self"));
- klass = k;
- }
- } else {
- // Accessing the field of an instance
- var k = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_GET_CLASS"));
- k.add_argument (get_cvalue_ (instance));
- klass = k;
- }
+ unowned Class cl = (Class) field.parent_symbol;
+ var cast = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_class_type_function (cl)));
cast.add_argument (klass);
if (field.access == SymbolAccessibility.PRIVATE) {