From bdb338a271cf1cfa338e07b5742c074b0636504c Mon Sep 17 00:00:00 2001 From: Erokhin Stanislav Date: Thu, 19 Sep 2013 20:57:08 +0400 Subject: [PATCH] JS backend: fix class object access A.object$() -> A.object --- .../org/jetbrains/k2js/translate/context/Namer.java | 4 ++-- js/js.translator/testFiles/kotlin_lib_ecma5.js | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/context/Namer.java b/js/js.translator/src/org/jetbrains/k2js/translate/context/Namer.java index f492b1c8fed..1af4c12ba65 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/context/Namer.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/context/Namer.java @@ -49,7 +49,7 @@ public final class Namer { private static final String RECEIVER_PARAMETER_NAME = "$receiver"; private static final String CLASSES_OBJECT_NAME = "_c"; private static final String THROW_NPE_FUN_NAME = "throwNPE"; - private static final String CLASS_OBJECT_GETTER = "object$"; + private static final String CLASS_OBJECT_GETTER = "object"; private static final String CLASS_OBJECT_INITIALIZER = "object_initializer$"; @@ -115,7 +115,7 @@ public final class Namer { @NotNull public static JsExpression getClassObjectAccessor(@NotNull JsExpression referenceToClass) { - return new JsInvocation(new JsNameRef(CLASS_OBJECT_GETTER, referenceToClass)); + return new JsNameRef(CLASS_OBJECT_GETTER, referenceToClass); } @NotNull diff --git a/js/js.translator/testFiles/kotlin_lib_ecma5.js b/js/js.translator/testFiles/kotlin_lib_ecma5.js index ebc78e4908f..a0a0ade029c 100644 --- a/js/js.translator/testFiles/kotlin_lib_ecma5.js +++ b/js/js.translator/testFiles/kotlin_lib_ecma5.js @@ -180,10 +180,9 @@ var Kotlin = {}; } function class_object() { - if (typeof this.$object$ === "undefined") { - this.$object$ = this.object_initializer$(); - } - return this.$object$; + var object = this.object_initializer$(); + Object.defineProperty(this, "object", {value: object}); + return object; } Kotlin.createClass = function (bases, constructor, properties, staticProperties) { @@ -210,8 +209,7 @@ var Kotlin = {}; constructor.$metadata$ = metadata; constructor.prototype = prototypeObj; - //Object.defineProperty(constructor, "$object", {get: class_object}); // TODO: check & fix call $object() - constructor.object$ = class_object; + Object.defineProperty(constructor, "object", {get: class_object, configurable: true}); return constructor; };