diff --git a/compiler/testData/codegen/box/notNullAssertions/inFunctionWithExpressionBodyWithJavaGeneric.kt b/compiler/testData/codegen/box/notNullAssertions/inFunctionWithExpressionBodyWithJavaGeneric.kt index 2f82489e1ad..0af9b181678 100644 --- a/compiler/testData/codegen/box/notNullAssertions/inFunctionWithExpressionBodyWithJavaGeneric.kt +++ b/compiler/testData/codegen/box/notNullAssertions/inFunctionWithExpressionBodyWithJavaGeneric.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +StrictJavaNullabilityAssertions +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated +// !LANGUAGE: +StrictJavaNullabilityAssertions +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated +DefinitelyNotNullTypeParameters // TARGET_BACKEND: JVM // IGNORE_BACKEND: JVM // IGNORE_LIGHT_ANALYSIS diff --git a/compiler/testData/diagnostics/tests/inference/constraints/definitelyNotNullTypeInReturnPosition.txt b/compiler/testData/diagnostics/tests/inference/constraints/definitelyNotNullTypeInReturnPosition.txt index daa550eb2c9..35f47211e72 100644 --- a/compiler/testData/diagnostics/tests/inference/constraints/definitelyNotNullTypeInReturnPosition.txt +++ b/compiler/testData/diagnostics/tests/inference/constraints/definitelyNotNullTypeInReturnPosition.txt @@ -116,8 +116,8 @@ public final class Main { public constructor Main(/*0*/ x: L?, /*1*/ y: L) public final val vx01: Foo> public final val vx02: Foo> - public final val vx11: OutBar>> - public final val vx12: OutBar>> + public final val vx11: OutBar>> + public final val vx12: OutBar>> public final val vx21: OutBar>> public final val vx22: OutBar>> public final val x00: Bar @@ -128,12 +128,12 @@ public final class Main { public final val x11: Foo> public final val x110: Bar public final val x111: Bar - public final val x12: Foo> - public final val x120: Bar - public final val x121: Bar + public final val x12: Foo> + public final val x120: Bar + public final val x121: Bar public final val x122: Bar public final val x123: Bar - public final val x13: Foo> + public final val x13: Foo> public final val x133: Bar public final val x135: Bar public final val x137: Bar @@ -146,8 +146,8 @@ public final class Main { public final val x154: Bar public final val x161: Bar public final val x162: Bar - public final val x163: Bar - public final val x164: Bar + public final val x163: Bar + public final val x164: Bar public final val x170: Bar public final val x171: Bar public final val x180: [ERROR : ] @@ -164,24 +164,24 @@ public final class Main { public final val x231: Foo>> public final val x240: Foo>> public final val x241: Foo>> - public final val x250: Bar - public final val x251: Bar - public final val x260: Foo>> - public final val x261: Foo>> + public final val x250: Bar + public final val x251: Bar + public final val x260: Foo>> + public final val x261: Foo>> public final val x270: Foo>> public final val x271: Foo>> - public final val x280: OutBar>> - public final val x281: OutBar>> + public final val x280: OutBar>> + public final val x281: OutBar>> public final val x290: OutBar>> public final val x291: OutBar>> public final val x30: Foo> - public final val x300: OutBar>> - public final val x301: OutBar>> + public final val x300: OutBar>> + public final val x301: OutBar>> public final val x31: Foo> - public final val x310: OutBarAliasUseSite /* = Bar */ - public final val x311: OutBarAliasUseSite /* = Bar */ - public final val x320: OutBarAliasDecSite /* = OutBar */ - public final val x321: OutBarAliasDecSite /* = OutBar */ + public final val x310: Bar + public final val x311: Bar + public final val x320: OutBar + public final val x321: OutBar public final val x330: OutBar>> public final val x331: OutBar>> public final val x340: OutBar>> @@ -212,15 +212,15 @@ public final class Main { public final val x451: OutBar>> public final val x460: Bar>> public final val x461: Bar>> - public final val x470: OutBar>> - public final val x471: OutBar>> + public final val x470: OutBar>> + public final val x471: OutBar>> public final val x480: Bar public final val x481: Bar public final val x482: Bar public final val x50: Bar public final val x51: Bar - public final val x60: OutBar - public final val x61: OutBar + public final val x60: OutBar + public final val x61: OutBar public final val x70: InBar public final val x71: InBar public final val x80: Foo> diff --git a/compiler/testData/integration/ant/jvm/languageVersion/build.log.expected b/compiler/testData/integration/ant/jvm/languageVersion/build.log.expected index fc053c895a7..1210ec1b779 100644 --- a/compiler/testData/integration/ant/jvm/languageVersion/build.log.expected +++ b/compiler/testData/integration/ant/jvm/languageVersion/build.log.expected @@ -3,9 +3,9 @@ Buildfile: [TestData]/build.xml build: [kotlinc] Compiling [[TestData]/main.kt] => [[Temp]/hello.jar] - [kotlinc] [TestData]/main.kt:1:18: error: the feature "definitely not null type parameters" is only available since language version 1.6 - [kotlinc] fun f(t: T): T!! = t!! - [kotlinc] ^ + [kotlinc] [TestData]/main.kt:1:15: error: suspend function type is not allowed as supertypes + [kotlinc] interface A : suspend () -> Unit + [kotlinc] ^ ERR: diff --git a/compiler/testData/integration/ant/jvm/languageVersion/main.kt b/compiler/testData/integration/ant/jvm/languageVersion/main.kt index c05159a0aef..437ea4034a1 100644 --- a/compiler/testData/integration/ant/jvm/languageVersion/main.kt +++ b/compiler/testData/integration/ant/jvm/languageVersion/main.kt @@ -1 +1 @@ -fun f(t: T): T!! = t!! +interface A : suspend () -> Unit diff --git a/compiler/testData/ir/irText/types/intersectionType1_NI.fir.kt.txt b/compiler/testData/ir/irText/types/intersectionType1_NI.fir.kt.txt index 7aaeee102a3..00b80c7c3ab 100644 --- a/compiler/testData/ir/irText/types/intersectionType1_NI.fir.kt.txt +++ b/compiler/testData/ir/irText/types/intersectionType1_NI.fir.kt.txt @@ -12,7 +12,7 @@ fun select(x: S, y: S): S { } fun foo(a: Array>, b: Array>): Boolean { - return select>>(x = a, y = b).get(index = 0).ofType(y = true) + return select>>(x = a, y = b).get(index = 0).ofType(y = true) } inline fun In.ofType(y: Any?): Boolean { diff --git a/compiler/testData/ir/irText/types/intersectionType1_NI.fir.txt b/compiler/testData/ir/irText/types/intersectionType1_NI.fir.txt index 87ffb81379f..fb21ecf5370 100644 --- a/compiler/testData/ir/irText/types/intersectionType1_NI.fir.txt +++ b/compiler/testData/ir/irText/types/intersectionType1_NI.fir.txt @@ -33,7 +33,7 @@ FILE fqName: fileName:/intersectionType1_NI.kt BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun foo (a: kotlin.Array<.In.foo>>, b: kotlin.Array<.In>): kotlin.Boolean declared in ' CALL 'public final fun ofType (y: kotlin.Any?): kotlin.Boolean [inline] declared in ' type=kotlin.Boolean origin=null - : kotlin.Any + : kotlin.Any? $receiver: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array [operator] declared in kotlin.Array' type=.In origin=null $this: CALL 'public final fun select (x: S of .select, y: S of .select): S of .select declared in ' type=kotlin.Array.In> origin=null : kotlin.Array.In> diff --git a/compiler/testData/ir/irText/types/intersectionType1_OI.fir.kt.txt b/compiler/testData/ir/irText/types/intersectionType1_OI.fir.kt.txt index ff496baed44..00b80c7c3ab 100644 --- a/compiler/testData/ir/irText/types/intersectionType1_OI.fir.kt.txt +++ b/compiler/testData/ir/irText/types/intersectionType1_OI.fir.kt.txt @@ -12,7 +12,7 @@ fun select(x: S, y: S): S { } fun foo(a: Array>, b: Array>): Boolean { - return select>>(x = a, y = b).get(index = 0).ofType(y = true) + return select>>(x = a, y = b).get(index = 0).ofType(y = true) } inline fun In.ofType(y: Any?): Boolean { @@ -24,3 +24,4 @@ fun test() { val a2: Array> = arrayOf>(elements = [In()]) foo(a = a1, b = a2) /*~> Unit */ } + diff --git a/compiler/testData/ir/irText/types/intersectionType1_OI.fir.txt b/compiler/testData/ir/irText/types/intersectionType1_OI.fir.txt index 37e44e0d26e..f168821a086 100644 --- a/compiler/testData/ir/irText/types/intersectionType1_OI.fir.txt +++ b/compiler/testData/ir/irText/types/intersectionType1_OI.fir.txt @@ -33,7 +33,7 @@ FILE fqName: fileName:/intersectionType1_OI.kt BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun foo (a: kotlin.Array<.In.foo>>, b: kotlin.Array<.In>): kotlin.Boolean declared in ' CALL 'public final fun ofType (y: kotlin.Any?): kotlin.Boolean [inline] declared in ' type=kotlin.Boolean origin=null - : kotlin.Any + : kotlin.Any? $receiver: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array [operator] declared in kotlin.Array' type=.In origin=null $this: CALL 'public final fun select (x: S of .select, y: S of .select): S of .select declared in ' type=kotlin.Array.In> origin=null : kotlin.Array.In> diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/AbstractVersionRequirementTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/AbstractVersionRequirementTest.kt index 7a2b8ad93f1..90638f25044 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/AbstractVersionRequirementTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/AbstractVersionRequirementTest.kt @@ -140,8 +140,8 @@ abstract class AbstractVersionRequirementTest : TestCaseWithTmpdir() { fun testDefinitelyNotNull() { doTest( - VersionRequirement.Version(1, 6), DeprecationLevel.ERROR, null, ProtoBuf.VersionRequirement.VersionKind.LANGUAGE_VERSION, null, - customLanguageVersion = LanguageVersion.KOTLIN_1_6, + VersionRequirement.Version(1, 7), DeprecationLevel.ERROR, null, ProtoBuf.VersionRequirement.VersionKind.LANGUAGE_VERSION, null, + customLanguageVersion = LanguageVersion.KOTLIN_1_7, fqNamesWithRequirements = listOf( "test.A.foo", "test.A.w", diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index 84822240a30..3b5c2ed6a80 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -203,7 +203,6 @@ enum class LanguageFeature( ProhibitSelfCallsInNestedObjects(KOTLIN_1_6, kind = BUG_FIX), ApproximateIntegerLiteralTypesInReceiverPosition(KOTLIN_1_6), ProperCheckAnnotationsTargetInTypeUsePositions(KOTLIN_1_6, kind = BUG_FIX), - DefinitelyNotNullTypeParameters(KOTLIN_1_6), ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated(KOTLIN_1_6, kind = BUG_FIX), AbstractClassMemberNotImplementedWithIntermediateAbstractClass(KOTLIN_1_6, kind = BUG_FIX), @@ -229,6 +228,7 @@ enum class LanguageFeature( UseBuilderInferenceWithoutAnnotation(KOTLIN_1_7), ProhibitSmartcastsOnPropertyFromAlienBaseClass(KOTLIN_1_7, kind = BUG_FIX), ProhibitInvalidCharsInNativeIdentifiers(KOTLIN_1_7, kind = BUG_FIX), + DefinitelyNotNullTypeParameters(KOTLIN_1_7), // Temporarily disabled, see KT-27084/KT-22379 SoundSmartcastFromLoopConditionForLoopAssignedVariables(sinceVersion = null, kind = BUG_FIX), diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt index 81e0c741b3d..775380bcbd7 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt @@ -67,7 +67,7 @@ class SimpleKotlinGradleIT : KGPBaseTest() { fun testLanguageVersion(gradleVersion: GradleVersion) { project("languageVersion", gradleVersion) { buildAndFail("build") { - assertOutputContains("The feature \"definitely not null type parameters\" is only available since language version 1.6") + assertOutputContains("Suspend function type is not allowed as supertypes") } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/languageVersion/src/main/kotlin/helloWorld.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/languageVersion/src/main/kotlin/helloWorld.kt index c05159a0aef..437ea4034a1 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/languageVersion/src/main/kotlin/helloWorld.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/languageVersion/src/main/kotlin/helloWorld.kt @@ -1 +1 @@ -fun f(t: T): T!! = t!! +interface A : suspend () -> Unit diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/src/main/kotlin/main.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/src/main/kotlin/main.kt index d58096c1b35..437ea4034a1 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/src/main/kotlin/main.kt +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/src/main/kotlin/main.kt @@ -1 +1 @@ -fun f(t: T): T!! = t!! \ No newline at end of file +interface A : suspend () -> Unit diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/verify.bsh b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/verify.bsh index ab85fb31e36..eb0a824cb3e 100644 --- a/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/verify.bsh +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-languageVersion/verify.bsh @@ -1,4 +1,4 @@ source(new File(basedir, "../../../verify-common.bsh").getAbsolutePath()); assertBuildLogHasLine("[INFO] BUILD FAILURE"); -assertBuildLogHasLineThatContains("The feature \"definitely not null type parameters\" is only available since language version 1.6"); +assertBuildLogHasLineThatContains("Suspend function type is not allowed as supertypes");