From b957831683c8788e545e483dbf78c54c521c6c77 Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Tue, 28 Sep 2021 13:17:57 +0300 Subject: [PATCH] Use `WarningAwareUpperBoundChecker` independently ^KT-47920 Fixed ^KT-48290 Fixed --- .../kotlin/resolve/PlatformConfigurator.kt | 3 +-- .../jvm/platform/JvmPlatformConfigurator.kt | 7 ++----- .../kotlin/analyzer/common/CommonPlatform.kt | 2 +- .../org/jetbrains/kotlin/frontend/di/injection.kt | 2 +- .../java8Tests/jspecify/default.kt | 3 ++- .../warnMode/NullnessUnspecifiedTypeParameter.kt | 3 ++- .../jspecify/warnMode/TypeParameterBounds.kt | 15 ++++++++++----- .../foreignAnnotationsTests/tests/kt47920.kt | 2 +- .../kotlin/js/resolve/JsPlatformConfigurator.kt | 2 +- .../konan/platform/NativePlatformConfigurator.kt | 2 +- 10 files changed, 22 insertions(+), 19 deletions(-) diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/PlatformConfigurator.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/PlatformConfigurator.kt index 5ce1dd39146..a7342ed3ac7 100644 --- a/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/PlatformConfigurator.kt +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/PlatformConfigurator.kt @@ -5,11 +5,10 @@ package org.jetbrains.kotlin.resolve -import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.container.StorageComponentContainer interface PlatformConfigurator { val platformSpecificContainer: StorageComponentContainer - fun configureModuleComponents(container: StorageComponentContainer, languageVersionSettings: LanguageVersionSettings) + fun configureModuleComponents(container: StorageComponentContainer) fun configureModuleDependentCheckers(container: StorageComponentContainer) } \ No newline at end of file diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt index 30197800d65..f52c6c89d12 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt @@ -94,11 +94,8 @@ object JvmPlatformConfigurator : PlatformConfiguratorBase( declarationReturnTypeSanitizer = JvmDeclarationReturnTypeSanitizer ) { - override fun configureModuleComponents(container: StorageComponentContainer, languageVersionSettings: LanguageVersionSettings) { - container.useImplIf( - !languageVersionSettings.supportsFeature(LanguageFeature.TypeEnhancementImprovementsInStrictMode) - ) - + override fun configureModuleComponents(container: StorageComponentContainer) { + container.useImpl() container.useImpl() container.useImpl() container.useImpl() diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt index c3a6f2d984f..20b2bbd752e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.storage.StorageManager private object CommonPlatformConfigurator : PlatformConfiguratorBase() { - override fun configureModuleComponents(container: StorageComponentContainer, languageVersionSettings: LanguageVersionSettings) {} + override fun configureModuleComponents(container: StorageComponentContainer) {} } object CommonPlatformAnalyzerServices : PlatformDependentAnalyzerServices() { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt b/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt index ec556554d6c..dac42c6095d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt @@ -75,7 +75,7 @@ fun StorageComponentContainer.configureModule( useInstance(nonTrivialPlatformVersion ?: TargetPlatformVersion.NoVersion) - analyzerServices.platformConfigurator.configureModuleComponents(this, languageVersionSettings) + analyzerServices.platformConfigurator.configureModuleComponents(this) analyzerServices.platformConfigurator.configureModuleDependentCheckers(this) for (extension in StorageComponentContainerContributor.getInstances(moduleContext.project)) { diff --git a/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/default.kt b/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/default.kt index 11dffc30cbd..7b05a230ea9 100644 --- a/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/default.kt +++ b/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/default.kt @@ -12,7 +12,8 @@ public class NullnessUnspecifiedTypeParameter { public class Test {} // FILE: main.kt -fun main(a1: NullnessUnspecifiedTypeParameter, a2: NullnessUnspecifiedTypeParameter, x: Test): Unit { +// jspecify_nullness_mismatch +fun main(a1: NullnessUnspecifiedTypeParameter, a2: NullnessUnspecifiedTypeParameter<Any?>, x: Test): Unit { // jspecify_nullness_mismatch a1.foo(null) a1.foo(1) diff --git a/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/warnMode/NullnessUnspecifiedTypeParameter.kt b/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/warnMode/NullnessUnspecifiedTypeParameter.kt index 5a82f331616..a3154623f08 100644 --- a/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/warnMode/NullnessUnspecifiedTypeParameter.kt +++ b/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/warnMode/NullnessUnspecifiedTypeParameter.kt @@ -13,7 +13,8 @@ public class NullnessUnspecifiedTypeParameter { public class Test {} // FILE: main.kt -fun main(a1: NullnessUnspecifiedTypeParameter, a2: NullnessUnspecifiedTypeParameter, x: Test): Unit { +// jspecify_nullness_mismatch +fun main(a1: NullnessUnspecifiedTypeParameter, a2: NullnessUnspecifiedTypeParameter<Any?>, x: Test): Unit { // jspecify_nullness_mismatch a1.foo(null) a1.foo(1) diff --git a/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/warnMode/TypeParameterBounds.kt b/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/warnMode/TypeParameterBounds.kt index 267b37a39f5..c2aa20fbe18 100644 --- a/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/warnMode/TypeParameterBounds.kt +++ b/compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/jspecify/warnMode/TypeParameterBounds.kt @@ -20,22 +20,27 @@ public class B { public class Test {} // FILE: main.kt -fun main(a1: A, a2: A, b1: B, b2: B, x: T): Unit { +// jspecify_nullness_mismatch, jspecify_nullness_mismatch +fun main(a1: A<Any?>, a2: A, b1: B<Any?>, b2: B, x: T): Unit { a1.foo(null) - a1.bar(null) + // jspecify_nullness_mismatch + a1.bar<T?>(null) a1.bar(x) a2.foo(null) - a2.bar(null) + // jspecify_nullness_mismatch + a2.bar<T?>(null) a2.bar(x) // jspecify_nullness_mismatch b1.foo(null) - b1.bar(null) + // jspecify_nullness_mismatch + b1.bar<T?>(null) b1.bar(x) // jspecify_nullness_mismatch b2.foo(null) - b2.bar(null) + // jspecify_nullness_mismatch + b2.bar<T?>(null) b2.bar(x) } diff --git a/compiler/testData/diagnostics/foreignAnnotationsTests/tests/kt47920.kt b/compiler/testData/diagnostics/foreignAnnotationsTests/tests/kt47920.kt index 4329a426411..4bf04bd7338 100644 --- a/compiler/testData/diagnostics/foreignAnnotationsTests/tests/kt47920.kt +++ b/compiler/testData/diagnostics/foreignAnnotationsTests/tests/kt47920.kt @@ -8,5 +8,5 @@ public class J1<@NonNull T> {} // FILE: main.kt fun main() { - J1() // violated nullability, no warnings; but there is an error with -Xtype-enhancement-improvements-strict-mode + J1<Any?>() // violated nullability, no warnings; but there is an error with -Xtype-enhancement-improvements-strict-mode } diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt index 8ad5dc076a1..a6eef1a0486 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt @@ -34,7 +34,7 @@ object JsPlatformConfigurator : PlatformConfiguratorBase( ), identifierChecker = JsIdentifierChecker ) { - override fun configureModuleComponents(container: StorageComponentContainer, languageVersionSettings: LanguageVersionSettings) { + override fun configureModuleComponents(container: StorageComponentContainer) { container.useInstance(NameSuggestion()) container.useImpl() container.useImpl() diff --git a/native/frontend/src/org/jetbrains/kotlin/resolve/konan/platform/NativePlatformConfigurator.kt b/native/frontend/src/org/jetbrains/kotlin/resolve/konan/platform/NativePlatformConfigurator.kt index 00edb107368..1ff75576d2a 100644 --- a/native/frontend/src/org/jetbrains/kotlin/resolve/konan/platform/NativePlatformConfigurator.kt +++ b/native/frontend/src/org/jetbrains/kotlin/resolve/konan/platform/NativePlatformConfigurator.kt @@ -28,7 +28,7 @@ object NativePlatformConfigurator : PlatformConfiguratorBase( NativeTopLevelSingletonChecker, NativeThreadLocalChecker ) ) { - override fun configureModuleComponents(container: StorageComponentContainer, languageVersionSettings: LanguageVersionSettings) { + override fun configureModuleComponents(container: StorageComponentContainer) { container.useInstance(NativeInliningRule) container.useImpl() }