diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt index 8f6e7fbe075..5743e9128aa 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt @@ -308,11 +308,11 @@ class TypeResolver( } } - if (!languageVersionSettings.supportsFeature(LanguageFeature.DefinitelyNotNullTypeParameters)) { + if (!languageVersionSettings.supportsFeature(LanguageFeature.DefinitelyNonNullableTypes)) { c.trace.report( UNSUPPORTED_FEATURE.on( intersectionType, - LanguageFeature.DefinitelyNotNullTypeParameters to languageVersionSettings + LanguageFeature.DefinitelyNonNullableTypes to languageVersionSettings ) ) return diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/types/AbstractTypeApproximator.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/types/AbstractTypeApproximator.kt index 22f09f657f8..ac8c3267967 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/types/AbstractTypeApproximator.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/types/AbstractTypeApproximator.kt @@ -366,7 +366,7 @@ abstract class AbstractTypeApproximator( return typeWithErasedNullability } - return if (conf.definitelyNotNullType || languageVersionSettings.supportsFeature(LanguageFeature.DefinitelyNotNullTypeParameters)) { + return if (conf.definitelyNotNullType || languageVersionSettings.supportsFeature(LanguageFeature.DefinitelyNonNullableTypes)) { approximatedOriginalType?.makeDefinitelyNotNullOrNotNull() } else { if (toSuper) diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt index 9c4540ee840..e01a13adf7b 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt @@ -193,7 +193,7 @@ class DescriptorSerializer private constructor( if (metDefinitelyNotNullType) { builder.addVersionRequirement( - writeLanguageVersionRequirement(LanguageFeature.DefinitelyNotNullTypeParameters, versionRequirementTable) + writeLanguageVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes, versionRequirementTable) ) } @@ -320,7 +320,7 @@ class DescriptorSerializer private constructor( } if (local.metDefinitelyNotNullType) { - builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNotNullTypeParameters)) + builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes)) } } @@ -407,7 +407,7 @@ class DescriptorSerializer private constructor( } if (local.metDefinitelyNotNullType) { - builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNotNullTypeParameters)) + builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes)) } } @@ -447,7 +447,7 @@ class DescriptorSerializer private constructor( } if (local.metDefinitelyNotNullType) { - builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNotNullTypeParameters)) + builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes)) } } @@ -513,7 +513,7 @@ class DescriptorSerializer private constructor( builder.addAllVersionRequirement(serializeVersionRequirements(descriptor)) if (local.metDefinitelyNotNullType) { builder.addVersionRequirement( - writeLanguageVersionRequirement(LanguageFeature.DefinitelyNotNullTypeParameters, versionRequirementTable) + writeLanguageVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes, versionRequirementTable) ) } } diff --git a/compiler/testData/codegen/box/notNullAssertions/definitelyNotNullTypes.kt b/compiler/testData/codegen/box/notNullAssertions/definitelyNotNullTypes.kt index 86eff0ac1ef..978cc36b854 100644 --- a/compiler/testData/codegen/box/notNullAssertions/definitelyNotNullTypes.kt +++ b/compiler/testData/codegen/box/notNullAssertions/definitelyNotNullTypes.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated +// !LANGUAGE: +DefinitelyNonNullableTypes +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated // TARGET_BACKEND: JVM // IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR diff --git a/compiler/testData/codegen/box/notNullAssertions/inFunctionWithExpressionBodyWithJavaGeneric.kt b/compiler/testData/codegen/box/notNullAssertions/inFunctionWithExpressionBodyWithJavaGeneric.kt index 0af9b181678..5fb8612e2e2 100644 --- a/compiler/testData/codegen/box/notNullAssertions/inFunctionWithExpressionBodyWithJavaGeneric.kt +++ b/compiler/testData/codegen/box/notNullAssertions/inFunctionWithExpressionBodyWithJavaGeneric.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +StrictJavaNullabilityAssertions +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated +DefinitelyNotNullTypeParameters +// !LANGUAGE: +StrictJavaNullabilityAssertions +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated +DefinitelyNonNullableTypes // TARGET_BACKEND: JVM // IGNORE_BACKEND: JVM // IGNORE_LIGHT_ANALYSIS diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/approximation.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/approximation.fir.kt index a5545ad4bb4..7116b2f0a18 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/approximation.fir.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/approximation.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun foo(x: T, y: T & Any) = x!! diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/approximation.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/approximation.kt index 2ceb96bda8d..e8aa31d09ff 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/approximation.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/approximation.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun foo(x: T, y: T & Any) = x!! diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/bareTypes.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/bareTypes.fir.kt index ab7716a9e4e..1f0de032f59 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/bareTypes.fir.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/bareTypes.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun main(x: Collection) { if (x is List & Any) {} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/bareTypes.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/bareTypes.kt index 70336680985..2071d8a927c 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/bareTypes.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/bareTypes.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun main(x: Collection) { if (x is List & Any) {} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.fir.kt index 04a1a02dccf..54d434e2191 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.fir.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.fir.kt @@ -1,3 +1,3 @@ -// !LANGUAGE: -DefinitelyNotNullTypeParameters +// !LANGUAGE: -DefinitelyNonNullableTypes fun foo(x: T, y: T & Any): List? = null diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.kt index 371d6a95279..f18403d81ff 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.kt @@ -1,3 +1,3 @@ -// !LANGUAGE: -DefinitelyNotNullTypeParameters +// !LANGUAGE: -DefinitelyNonNullableTypes fun foo(x: T, y: T & Any): List<T & Any>? = null diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/inference.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/inference.fir.kt index d7550ccee36..948f2f2e62a 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/inference.fir.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/inference.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun toDefNotNull(s: T): T & Any = s!! diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/inference.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/inference.kt index 0b26b2d9119..2fcdfeca8d2 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/inference.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/inference.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun toDefNotNull(s: T): T & Any = s!! diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperators.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperators.kt index c9e81d0b379..e52362fc2d3 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperators.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperators.kt @@ -1,6 +1,6 @@ // FIR_IDENTICAL // SKIP_TXT -// !LANGUAGE: -DefinitelyNotNullTypeParameters +// !LANGUAGE: -DefinitelyNonNullableTypes fun Any.bar() {} fun Boolean.baz() {} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperatorsEnabled.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperatorsEnabled.kt index cbc1fff53b1..b662f7c44d8 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperatorsEnabled.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperatorsEnabled.kt @@ -1,6 +1,6 @@ // FIR_IDENTICAL // SKIP_TXT -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun Any.bar() {} fun Boolean.baz() {} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/notApplicable.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/notApplicable.fir.kt index 3f07a15bcd3..089653e66ca 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/notApplicable.fir.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/notApplicable.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun foo(x: T & Any, y: List & Any) {} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/notApplicable.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/notApplicable.kt index f39370431df..d416233d74f 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/notApplicable.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/notApplicable.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun foo(x: T & Any, y: List<String & Any> & Any) {} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overrides.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overrides.fir.kt index 49315e5a812..407d6f6d652 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overrides.fir.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overrides.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes interface A { fun foo(x: T): T diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overrides.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overrides.kt index 44c1eaefe9c..49ff65443c1 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overrides.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overrides.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes interface A { fun foo(x: T): T diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overridesJavaAnnotated.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overridesJavaAnnotated.fir.kt index a945b91947e..66612880650 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overridesJavaAnnotated.fir.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overridesJavaAnnotated.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated +// !LANGUAGE: +DefinitelyNonNullableTypes +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated // FILE: A.java import org.jetbrains.annotations.*; diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overridesJavaAnnotated.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overridesJavaAnnotated.kt index 182da4b4784..4d0839a47ef 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overridesJavaAnnotated.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/overridesJavaAnnotated.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated +// !LANGUAGE: +DefinitelyNonNullableTypes +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated // FILE: A.java import org.jetbrains.annotations.*; diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.fir.kt index 542ee2f3926..2d0b75fc98e 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.fir.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.fir.kt @@ -1,5 +1,5 @@ // SKIP_TXT -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes inline fun foo() {} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.kt index 85ea916f2a0..0e4832c703e 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.kt @@ -1,5 +1,5 @@ // SKIP_TXT -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes inline fun foo() {} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/simple.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/simple.fir.kt index cc2b09d8856..46dce468ac9 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/simple.fir.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/simple.fir.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun foo(x: T, y: T & Any): T & Any = x ?: y diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/simple.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/simple.kt index 8653d41b72e..034e857c50e 100644 --- a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/simple.kt +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/simple.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes fun foo(x: T, y: T & Any): T & Any = x ?: y diff --git a/compiler/testData/loadJava/compiledKotlin/annotations/types/DefinitelyNotNull.kt b/compiler/testData/loadJava/compiledKotlin/annotations/types/DefinitelyNotNull.kt index 64e81e3ba35..60cdbc04cbf 100644 --- a/compiler/testData/loadJava/compiledKotlin/annotations/types/DefinitelyNotNull.kt +++ b/compiler/testData/loadJava/compiledKotlin/annotations/types/DefinitelyNotNull.kt @@ -1,5 +1,5 @@ -// !LANGUAGE: +DefinitelyNotNullTypeParameters -// COMPILER_ARGUMENTS: -XXLanguage:+DefinitelyNotNullTypeParameters +// !LANGUAGE: +DefinitelyNonNullableTypes +// COMPILER_ARGUMENTS: -XXLanguage:+DefinitelyNonNullableTypes package test fun foo(x: T & Any, y: List, z: (T & Any) -> T & Any): T & Any = x diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index 3b5c2ed6a80..5549dc5249a 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -229,6 +229,7 @@ enum class LanguageFeature( ProhibitSmartcastsOnPropertyFromAlienBaseClass(KOTLIN_1_7, kind = BUG_FIX), ProhibitInvalidCharsInNativeIdentifiers(KOTLIN_1_7, kind = BUG_FIX), DefinitelyNotNullTypeParameters(KOTLIN_1_7), + DefinitelyNonNullableTypes(KOTLIN_1_7), // Temporarily disabled, see KT-27084/KT-22379 SoundSmartcastFromLoopConditionForLoopAssignedVariables(sinceVersion = null, kind = BUG_FIX),