From e7e6a917ebcc7751aacaf486722f34c3d1fc4786 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Tue, 13 Sep 2016 17:11:44 +0300 Subject: [PATCH] KT-2752: when simple name of class is a JS keyword or a well-known global name, add '$' to name of constructor function --- .../translate/initializer/ClassInitializerTranslator.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java index 203297f3663..dd0831fcfe7 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/initializer/ClassInitializerTranslator.java @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.js.translate.initializer; +import com.google.dart.compiler.backend.js.JsReservedIdentifiers; import com.google.dart.compiler.backend.js.ast.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.descriptors.*; @@ -94,6 +95,11 @@ public final class ClassInitializerTranslator extends AbstractTranslator { } if (functionName != null) { + if (JsReservedIdentifiers.reservedGlobalSymbols.contains(functionName) || + JsFunctionScope.Companion.getRESERVED_WORDS().contains(functionName) + ) { + functionName += "$"; + } ctorFunction.setName(ctorFunction.getScope().declareName(functionName)); }