diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt index ef5c306c113..18a000a46de 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithTypeParamet import org.jetbrains.kotlin.analysis.api.symbols.markers.isPrivateOrPrivateToThis import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType import org.jetbrains.kotlin.analysis.api.types.KtType +import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule import org.jetbrains.kotlin.analysis.project.structure.getKtModuleOfTypeSafe import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration @@ -420,7 +421,7 @@ internal fun SymbolLightClassBase.createInheritanceList(forExtendsList: Boolean, .filter { it.needToAddTypeIntoList() } .mapNotNull { type -> if (type !is KtNonErrorClassType) return@mapNotNull null - mapSuperType(type, this@createInheritanceList, kotlinCollectionAsIs = true) + mapType(type, this@createInheritanceList, KtTypeMappingMode.SUPER_TYPE) } .forEach { listBuilder.addReference(it) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt index d068ed342aa..2fb3b9484a7 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.isValid import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol import org.jetbrains.kotlin.analysis.api.types.KtClassErrorType import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType +import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode import org.jetbrains.kotlin.asJava.classes.KotlinSuperTypeListBuilder import org.jetbrains.kotlin.asJava.classes.cannotModify import org.jetbrains.kotlin.asJava.classes.lazyPub @@ -26,7 +27,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo import org.jetbrains.kotlin.light.classes.symbol.invalidAccess -import org.jetbrains.kotlin.light.classes.symbol.mapSuperType +import org.jetbrains.kotlin.light.classes.symbol.mapType import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.psi.KtTypeParameter import org.jetbrains.kotlin.psi.psiUtil.startOffset @@ -71,7 +72,7 @@ internal class SymbolLightTypeParameter( } } .mapNotNull { - mapSuperType(it, this@SymbolLightTypeParameter) + mapType(it, this@SymbolLightTypeParameter, KtTypeMappingMode.GENERIC_ARGUMENT) } .forEach { listBuilder.addReference(it) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt index 540170a2470..6f5d37e4ef1 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt @@ -37,15 +37,15 @@ internal fun L.invalidAccess(): Nothing = error("Cls delegate shouldn't be accessed for symbol light classes! Qualified name: ${javaClass.name}") -internal fun KtAnalysisSession.mapSuperType( +internal fun KtAnalysisSession.mapType( type: KtType, psiContext: PsiElement, - kotlinCollectionAsIs: Boolean = false + mode: KtTypeMappingMode ): PsiClassType? { if (type is KtClassErrorType) return null val psiType = type.asPsiType( psiContext, - if (kotlinCollectionAsIs) KtTypeMappingMode.SUPER_TYPE_KOTLIN_COLLECTIONS_AS_IS else KtTypeMappingMode.SUPER_TYPE, + mode, ) return psiType as? PsiClassType } diff --git a/compiler/testData/asJava/lightClasses/compilationErrors/TwoOverrides.fir.java b/compiler/testData/asJava/lightClasses/compilationErrors/TwoOverrides.fir.java index f3644ad52ac..614e3c692df 100644 --- a/compiler/testData/asJava/lightClasses/compilationErrors/TwoOverrides.fir.java +++ b/compiler/testData/asJava/lightClasses/compilationErrors/TwoOverrides.fir.java @@ -1,4 +1,4 @@ -public final class TwoOverrides /* TwoOverrides*/ implements kotlin.collections.Iterable { +public final class TwoOverrides /* TwoOverrides*/ implements java.lang.Iterable { @java.lang.Override() @org.jetbrains.annotations.Nullable() public java.lang.Void iterator();// iterator() diff --git a/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMap.fir.java b/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMap.fir.java index 9bf75af8907..ccc9d77fc93 100644 --- a/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMap.fir.java +++ b/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMap.fir.java @@ -1,4 +1,4 @@ -public final class TypeHierarchyMap /* p1.TypeHierarchyMap*/ implements kotlin.collections.Map, TValue> { +public final class TypeHierarchyMap /* p1.TypeHierarchyMap*/ implements java.util.Map, TValue> { @java.lang.Override() public boolean containsKey(@org.jetbrains.annotations.NotNull() java.lang.Class);// containsKey(java.lang.Class) diff --git a/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMutableSet.fir.java b/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMutableSet.fir.java index 52a92c9c0a2..8da32c6f345 100644 --- a/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMutableSet.fir.java +++ b/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMutableSet.fir.java @@ -1,4 +1,4 @@ -public final class SmartSet /* SmartSet*/ extends kotlin.collections.AbstractSet implements kotlin.collections.MutableSet { +public final class SmartSet /* SmartSet*/ extends kotlin.collections.AbstractSet implements java.util.Set { @org.jetbrains.annotations.NotNull() public static final SmartSet.Companion Companion; diff --git a/compiler/testData/asJava/ultraLightClasses/generics.fir.java b/compiler/testData/asJava/ultraLightClasses/generics.fir.java index d806fddb1c6..1ba6fc1574b 100644 --- a/compiler/testData/asJava/ultraLightClasses/generics.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/generics.fir.java @@ -33,7 +33,7 @@ public abstract class C /* C*/ { public final java.util.List getConstructorParam();// getConstructorParam() @org.jetbrains.annotations.Nullable() - public final > T max(@org.jetbrains.annotations.Nullable() java.util.Collection);// > max(java.util.Collection) + public final > T max(@org.jetbrains.annotations.Nullable() java.util.Collection);// > max(java.util.Collection) @org.jetbrains.annotations.Nullable() public final java.util.HashSet getSHashSetProp();// getSHashSetProp() @@ -70,7 +70,7 @@ public abstract class C /* C*/ { } -public class K /* K*/> { +public class K /* K*/> { public K();// .ctor() } diff --git a/compiler/testData/asJava/ultraLightClasses/implementingKotlinCollections.fir.java b/compiler/testData/asJava/ultraLightClasses/implementingKotlinCollections.fir.java index cc33c34d641..7f88726f982 100644 --- a/compiler/testData/asJava/ultraLightClasses/implementingKotlinCollections.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/implementingKotlinCollections.fir.java @@ -1,4 +1,4 @@ -public final class MyList /* MyList*/ implements kotlin.collections.List { +public final class MyList /* MyList*/ implements java.util.List { @java.lang.Override() @org.jetbrains.annotations.NotNull() public java.lang.String get(int);// get(int) @@ -7,7 +7,7 @@ public final class MyList /* MyList*/ implements kotlin.collections.List extends kotlin.collections.MutableCollection { +public abstract interface ASet /* ASet*/ extends java.util.Collection { } public abstract class MySet /* MySet*/ implements ASet {