Do not import "kotlin.comparisons" by default for language version 1.0
#KT-16199 Fixed
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.jvm.platform
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.platform.JvmBuiltIns
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
@@ -24,8 +25,8 @@ import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
import java.util.*
|
||||
|
||||
object JvmPlatform : TargetPlatform("JVM") {
|
||||
override val defaultImports: List<ImportPath> = ArrayList<ImportPath>().apply {
|
||||
addAll(Default.defaultImports)
|
||||
override fun getDefaultImports(languageVersionSettings: LanguageVersionSettings): List<ImportPath> = ArrayList<ImportPath>().apply {
|
||||
addAll(Default.getDefaultImports(languageVersionSettings))
|
||||
|
||||
add(ImportPath("java.lang.*"))
|
||||
add(ImportPath("kotlin.jvm.*"))
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||
import org.jetbrains.kotlin.container.composeContainer
|
||||
import org.jetbrains.kotlin.container.useInstance
|
||||
@@ -34,21 +36,24 @@ abstract class TargetPlatform(val platformName: String) {
|
||||
override fun toString() = platformName
|
||||
|
||||
abstract val platformConfigurator: PlatformConfigurator
|
||||
abstract val defaultImports: List<ImportPath>
|
||||
abstract fun getDefaultImports(languageVersionSettings: LanguageVersionSettings): List<ImportPath>
|
||||
open val excludedImports: List<FqName> get() = emptyList()
|
||||
|
||||
abstract val multiTargetPlatform: MultiTargetPlatform
|
||||
|
||||
object Default : TargetPlatform("Default") {
|
||||
override val defaultImports: List<ImportPath> = ArrayList<ImportPath>().apply {
|
||||
override fun getDefaultImports(languageVersionSettings: LanguageVersionSettings): List<ImportPath> = ArrayList<ImportPath>().apply {
|
||||
add(ImportPath("kotlin.*"))
|
||||
add(ImportPath("kotlin.annotation.*"))
|
||||
add(ImportPath("kotlin.collections.*"))
|
||||
add(ImportPath("kotlin.ranges.*"))
|
||||
add(ImportPath("kotlin.sequences.*"))
|
||||
add(ImportPath("kotlin.text.*"))
|
||||
add(ImportPath("kotlin.comparisons.*"))
|
||||
add(ImportPath("kotlin.io.*"))
|
||||
|
||||
if (languageVersionSettings.supportsFeature(LanguageFeature.DefaultImportOfPackageKotlinComparisons)) {
|
||||
add(ImportPath("kotlin.comparisons.*"))
|
||||
}
|
||||
}
|
||||
|
||||
override val platformConfigurator =
|
||||
|
||||
@@ -39,7 +39,7 @@ class DefaultImportProvider(
|
||||
private val languageVersionSettings: LanguageVersionSettings
|
||||
) {
|
||||
val defaultImports: List<ImportPath>
|
||||
get() = targetPlatform.defaultImports
|
||||
get() = targetPlatform.getDefaultImports(languageVersionSettings)
|
||||
|
||||
val excludedImports: List<FqName> by storageManager.createLazyValue {
|
||||
val packagesWithAliases = listOf(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME, KotlinBuiltIns.TEXT_PACKAGE_FQ_NAME)
|
||||
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
// !LANGUAGE: -DefaultImportOfPackageKotlinComparisons
|
||||
|
||||
fun foo() = <!UNRESOLVED_REFERENCE!>compareBy<!><String> { <!UNRESOLVED_REFERENCE!>it<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>length<!> }
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package
|
||||
|
||||
public fun foo(): [ERROR : Error function type]
|
||||
@@ -1713,6 +1713,21 @@ public class DiagnosticsTestWithStdLibGenerated extends AbstractDiagnosticsTestW
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithStdLib/sourceCompatibility")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class SourceCompatibility extends AbstractDiagnosticsTestWithStdLib {
|
||||
public void testAllFilesPresentInSourceCompatibility() throws Exception {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithStdLib/sourceCompatibility"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true);
|
||||
}
|
||||
|
||||
@TestMetadata("noDefaultImportOfKotlinComparisons.kt")
|
||||
public void testNoDefaultImportOfKotlinComparisons() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/sourceCompatibility/noDefaultImportOfKotlinComparisons.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithStdLib/typealias")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
@@ -42,6 +42,7 @@ enum class LanguageFeature(val sinceVersion: LanguageVersion?, val hintUrl: Stri
|
||||
SafeCallBoundSmartCasts(KOTLIN_1_1),
|
||||
TypeInferenceOnGenericsForCallableReferences(KOTLIN_1_1),
|
||||
NoDelegationToJavaDefaultInterfaceMembers(KOTLIN_1_1),
|
||||
DefaultImportOfPackageKotlinComparisons(KOTLIN_1_1),
|
||||
|
||||
// Experimental features
|
||||
MultiPlatformProjects(null),
|
||||
|
||||
Reference in New Issue
Block a user