Filter out typealiases invisible due to API_VERSION < their SinceKotlin version, when determining excluded imports.
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.resolve.lazy
|
package org.jetbrains.kotlin.resolve.lazy
|
||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
|
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -24,6 +25,7 @@ import org.jetbrains.kotlin.name.isChildOf
|
|||||||
import org.jetbrains.kotlin.name.isSubpackageOf
|
import org.jetbrains.kotlin.name.isSubpackageOf
|
||||||
import org.jetbrains.kotlin.resolve.ImportPath
|
import org.jetbrains.kotlin.resolve.ImportPath
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.resolve.checkSinceKotlinVersionAccessibility
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
@@ -33,18 +35,22 @@ import org.jetbrains.kotlin.utils.addToStdlib.check
|
|||||||
class DefaultImportProvider(
|
class DefaultImportProvider(
|
||||||
storageManager: StorageManager,
|
storageManager: StorageManager,
|
||||||
moduleDescriptor: ModuleDescriptor,
|
moduleDescriptor: ModuleDescriptor,
|
||||||
private val targetPlatform: TargetPlatform
|
private val targetPlatform: TargetPlatform,
|
||||||
|
private val languageVersionSettings: LanguageVersionSettings
|
||||||
) {
|
) {
|
||||||
val defaultImports: List<ImportPath>
|
val defaultImports: List<ImportPath>
|
||||||
get() = targetPlatform.defaultImports
|
get() = targetPlatform.defaultImports
|
||||||
|
|
||||||
val excludedImports: List<FqName> by storageManager.createLazyValue {
|
val excludedImports: List<FqName> by storageManager.createLazyValue {
|
||||||
val packagesWithAliases = listOf(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME, KotlinBuiltIns.TEXT_PACKAGE_FQ_NAME)
|
val packagesWithAliases = listOf(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME, KotlinBuiltIns.TEXT_PACKAGE_FQ_NAME)
|
||||||
val builtinTypeAliases = moduleDescriptor.allDependentModules.flatMap { dependentModule ->
|
val builtinTypeAliases = moduleDescriptor.allDependentModules
|
||||||
packagesWithAliases.map(dependentModule::getPackage).flatMap {
|
.flatMap { dependentModule ->
|
||||||
it.memberScope.getContributedDescriptors(DescriptorKindFilter.TYPE_ALIASES).filterIsInstance<TypeAliasDescriptor>()
|
packagesWithAliases.map(dependentModule::getPackage).flatMap {
|
||||||
}
|
it.memberScope.getContributedDescriptors(DescriptorKindFilter.TYPE_ALIASES).filterIsInstance<TypeAliasDescriptor>()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
.filter { it.checkSinceKotlinVersionAccessibility(languageVersionSettings) }
|
||||||
|
|
||||||
|
|
||||||
val nonKotlinDefaultImportedPackages =
|
val nonKotlinDefaultImportedPackages =
|
||||||
defaultImports
|
defaultImports
|
||||||
|
|||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
// FILE: test.kt
|
||||||
|
val fooException = Exception("foo")
|
||||||
|
val barException = kotlin.Exception("bar")
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public val barException: java.lang.Exception
|
||||||
|
public val fooException: java.lang.Exception
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
// !LANGUAGE: +TypeAliases
|
||||||
|
// !API_VERSION: 1.0
|
||||||
|
// FILE: test.kt
|
||||||
|
val fooException = Exception("foo")
|
||||||
|
val barException = kotlin.<!UNRESOLVED_REFERENCE!>Exception<!>("bar")
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public val barException: [ERROR : Type for kotlin.Exception("bar")]
|
||||||
|
public val fooException: java.lang.Exception
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// !LANGUAGE: -TypeAliases
|
||||||
|
// FILE: test.kt
|
||||||
|
val fooException = Exception("foo")
|
||||||
|
val barException = kotlin.<!UNRESOLVED_REFERENCE!>Exception<!>("bar")
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public val barException: [ERROR : Type for kotlin.Exception("bar")]
|
||||||
|
public val fooException: java.lang.Exception
|
||||||
@@ -1270,6 +1270,24 @@ public class DiagnosticsTestWithStdLibGenerated extends AbstractDiagnosticsTestW
|
|||||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithStdLib/typealias"), Pattern.compile("^(.+)\\.kt$"), true);
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithStdLib/typealias"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("exceptionTypeAliases.kt")
|
||||||
|
public void testExceptionTypeAliases() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/typealias/exceptionTypeAliases.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("exceptionTypeAliasesInvisibleWithApiVersion1_0.kt")
|
||||||
|
public void testExceptionTypeAliasesInvisibleWithApiVersion1_0() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/typealias/exceptionTypeAliasesInvisibleWithApiVersion1_0.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("exceptionTypeAliasesInvisibleWithoutFeature.kt")
|
||||||
|
public void testExceptionTypeAliasesInvisibleWithoutFeature() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/typealias/exceptionTypeAliasesInvisibleWithoutFeature.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("typeAliasSamAdapterConstructors.kt")
|
@TestMetadata("typeAliasSamAdapterConstructors.kt")
|
||||||
public void testTypeAliasSamAdapterConstructors() throws Exception {
|
public void testTypeAliasSamAdapterConstructors() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/typealias/typeAliasSamAdapterConstructors.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/typealias/typeAliasSamAdapterConstructors.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user