KT-11030 Fix translation of FQN of native companion objects
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user