KT-14274: resolve type alias constructors calls in supertypes list as type alias constructors.
Support @Deprecated for type aliases, including type alias constructors.
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.js.naming
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
||||
import org.jetbrains.kotlin.js.descriptorUtils.getJetTypeFqName
|
||||
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils.*
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
@@ -89,6 +90,9 @@ class NameSuggestion {
|
||||
// It's a special case when an object has `invoke` operator defined, in this case we simply generate object itself
|
||||
is FakeCallableDescriptorForObject -> return suggest(descriptor.getReferencedObject())
|
||||
|
||||
// For type alias constructor descriptors we generate references to underlying constructors
|
||||
is TypeAliasConstructorDescriptor -> return suggest(descriptor.underlyingConstructorDescriptor)
|
||||
|
||||
// For primary constructors and constructors of native classes we generate references to containing classes
|
||||
is ConstructorDescriptor -> {
|
||||
if (descriptor.isPrimary || isNativeObject(descriptor)) {
|
||||
|
||||
@@ -71,6 +71,12 @@ public class TypeAliasesTestsGenerated extends AbstractTypeAliasesTests {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("typeAliasConstructorInSuperCall.kt")
|
||||
public void testTypeAliasConstructorInSuperCall() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("typeAliasObject.kt")
|
||||
public void testTypeAliasObject() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/typealias/typeAliasObject.kt");
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor;
|
||||
import org.jetbrains.kotlin.js.config.JsConfig;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.Intrinsics;
|
||||
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils;
|
||||
@@ -463,6 +464,11 @@ public class TranslationContext {
|
||||
|
||||
@Nullable
|
||||
public List<DeclarationDescriptor> getClassOrConstructorClosure(@NotNull MemberDescriptor classOrConstructor) {
|
||||
if (classOrConstructor instanceof TypeAliasConstructorDescriptor) {
|
||||
ClassConstructorDescriptor constructorDescriptor = ((TypeAliasConstructorDescriptor) classOrConstructor).getUnderlyingConstructorDescriptor();
|
||||
return getClassOrConstructorClosure(constructorDescriptor);
|
||||
}
|
||||
|
||||
List<DeclarationDescriptor> result = staticContext.getClassOrConstructorClosure(classOrConstructor);
|
||||
if (result == null &&
|
||||
classOrConstructor instanceof ConstructorDescriptor &&
|
||||
|
||||
Reference in New Issue
Block a user