KT-11030 Fix translation of FQN of native companion objects

This commit is contained in:
Alexey Andreev
2016-03-10 20:15:32 +03:00
parent 6967ebcc8c
commit 1bded9d66f
@@ -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.JsDescriptorUtils.*;
import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getMangledName; 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.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.DescriptorUtils.isExtension;
import static org.jetbrains.kotlin.resolve.calls.tasks.DynamicCallsKt.isDynamic; import static org.jetbrains.kotlin.resolve.calls.tasks.DynamicCallsKt.isDynamic;
@@ -310,7 +311,8 @@ public final class StaticContext {
Rule<JsName> constructorOrCompanionObjectHasTheSameNameAsTheClass = new Rule<JsName>() { Rule<JsName> constructorOrCompanionObjectHasTheSameNameAsTheClass = new Rule<JsName>() {
@Override @Override
public JsName apply(@NotNull DeclarationDescriptor descriptor) { 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 //noinspection ConstantConditions
return getNameForDescriptor(descriptor.getContainingDeclaration()); return getNameForDescriptor(descriptor.getContainingDeclaration());
} }
@@ -537,7 +539,8 @@ public final class StaticContext {
Rule<JsExpression> constructorOrCompanionObjectHasTheSameQualifierAsTheClass = new Rule<JsExpression>() { Rule<JsExpression> constructorOrCompanionObjectHasTheSameQualifierAsTheClass = new Rule<JsExpression>() {
@Override @Override
public JsExpression apply(@NotNull DeclarationDescriptor descriptor) { public JsExpression apply(@NotNull DeclarationDescriptor descriptor) {
if (descriptor instanceof ConstructorDescriptor || DescriptorUtils.isCompanionObject(descriptor)) { if (descriptor instanceof ConstructorDescriptor ||
isNativeObject(descriptor) && DescriptorUtils.isCompanionObject(descriptor)) {
//noinspection ConstantConditions //noinspection ConstantConditions
return getQualifierForDescriptor(descriptor.getContainingDeclaration()); return getQualifierForDescriptor(descriptor.getContainingDeclaration());
} }
@@ -560,7 +563,8 @@ public final class StaticContext {
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration(); DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
if (containingDeclaration != null && isNativeObject(containingDeclaration)) { if (containingDeclaration != null && isNativeObject(containingDeclaration)) {
return getQualifiedReference(containingDeclaration); return isCompanionObject(descriptor) ? getQualifierForDescriptor(containingDeclaration) :
getQualifiedReference(containingDeclaration);
} }
return null; return null;