diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java index cd31aa5e2e0..608709ad0a6 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java @@ -49,6 +49,7 @@ import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.fqnWithoutSideE import static org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils.*; import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getMangledName; import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getSuggestedName; +import static org.jetbrains.kotlin.resolve.DescriptorUtils.isCompanionObject; import static org.jetbrains.kotlin.resolve.DescriptorUtils.isExtension; import static org.jetbrains.kotlin.resolve.calls.tasks.DynamicCallsKt.isDynamic; @@ -310,7 +311,8 @@ public final class StaticContext { Rule constructorOrCompanionObjectHasTheSameNameAsTheClass = new Rule() { @Override public JsName apply(@NotNull DeclarationDescriptor descriptor) { - if (descriptor instanceof ConstructorDescriptor && ((ConstructorDescriptor) descriptor).isPrimary()) { + if (descriptor instanceof ConstructorDescriptor && ((ConstructorDescriptor) descriptor).isPrimary() || + DescriptorUtils.isCompanionObject(descriptor) && isNativeObject(descriptor)) { //noinspection ConstantConditions return getNameForDescriptor(descriptor.getContainingDeclaration()); } @@ -537,7 +539,8 @@ public final class StaticContext { Rule constructorOrCompanionObjectHasTheSameQualifierAsTheClass = new Rule() { @Override public JsExpression apply(@NotNull DeclarationDescriptor descriptor) { - if (descriptor instanceof ConstructorDescriptor || DescriptorUtils.isCompanionObject(descriptor)) { + if (descriptor instanceof ConstructorDescriptor || + isNativeObject(descriptor) && DescriptorUtils.isCompanionObject(descriptor)) { //noinspection ConstantConditions return getQualifierForDescriptor(descriptor.getContainingDeclaration()); } @@ -560,7 +563,8 @@ public final class StaticContext { DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration(); if (containingDeclaration != null && isNativeObject(containingDeclaration)) { - return getQualifiedReference(containingDeclaration); + return isCompanionObject(descriptor) ? getQualifierForDescriptor(containingDeclaration) : + getQualifiedReference(containingDeclaration); } return null;