FE: delay DisableCheckingChangedProgressionsResolve to 2.*
This commit removes the relevant feature from 1.9 and makes this feature experimental. We plan to enable it in some 2.* version (not earlier than 2.1) Related to KT-54261, KT-36932, KT-49276 #KT-58791 Fixed
This commit is contained in:
committed by
Space Team
parent
500016df87
commit
5fda57fa55
@@ -0,0 +1,43 @@
|
|||||||
|
// WITH_STDLIB
|
||||||
|
|
||||||
|
fun <E> SmartList(x: E) {}
|
||||||
|
fun <E> SmartList(x: Collection<E>) {}
|
||||||
|
|
||||||
|
fun append(x: Any?) {}
|
||||||
|
fun append(x: Collection<*>) {}
|
||||||
|
|
||||||
|
fun append2(x: Iterable<*>) {}
|
||||||
|
fun append2(x: Collection<*>) {}
|
||||||
|
|
||||||
|
class In<in T>(x: T)
|
||||||
|
|
||||||
|
@JvmName("append31")
|
||||||
|
fun append3(x: In<Nothing>) {}
|
||||||
|
fun append3(x: In<Collection<*>>) {}
|
||||||
|
|
||||||
|
fun <E> append4(x: E) {}
|
||||||
|
fun <E: Collection<*>> append4(x: E) {}
|
||||||
|
|
||||||
|
fun <T> takes(range: T) {}
|
||||||
|
fun <T> takes(range: T) where T : Collection<*>, T: ClosedRange<*> {}
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
SmartList(1..2) // warning
|
||||||
|
SmartList<IntRange>(1..10) // no warning
|
||||||
|
|
||||||
|
append(1..10) // warning
|
||||||
|
append((1..10) as Any) // no warning
|
||||||
|
append((1..10) as Iterable<Int>) // no warning
|
||||||
|
append("a".."z") // no warning, the range is not iterable
|
||||||
|
append(1.0..2.0)
|
||||||
|
|
||||||
|
append2(1..10) // no warning
|
||||||
|
|
||||||
|
append3(In(1..10)) // no warning
|
||||||
|
|
||||||
|
append4(1..10) // warning
|
||||||
|
|
||||||
|
append4<IntRange>(1..10) // warning
|
||||||
|
|
||||||
|
takes(1..10) // warning
|
||||||
|
}
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
// FIR_IDENTICAL
|
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
|
||||||
fun <E> SmartList(x: E) {}
|
fun <E> SmartList(x: E) {}
|
||||||
@@ -23,10 +22,10 @@ fun <T> takes(range: T) {}
|
|||||||
fun <T> takes(range: T) where T : Collection<*>, T: ClosedRange<*> {}
|
fun <T> takes(range: T) where T : Collection<*>, T: ClosedRange<*> {}
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
SmartList(1..2) // warning
|
SmartList(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR!>1..2<!>) // warning
|
||||||
SmartList<IntRange>(1..10) // no warning
|
SmartList<IntRange>(1..10) // no warning
|
||||||
|
|
||||||
append(1..10) // warning
|
append(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR!>1..10<!>) // warning
|
||||||
append((1..10) as Any) // no warning
|
append((1..10) as Any) // no warning
|
||||||
append((1..10) as Iterable<Int>) // no warning
|
append((1..10) as Iterable<Int>) // no warning
|
||||||
append("a".."z") // no warning, the range is not iterable
|
append("a".."z") // no warning, the range is not iterable
|
||||||
@@ -36,9 +35,9 @@ fun main() {
|
|||||||
|
|
||||||
append3(In(1..10)) // no warning
|
append3(In(1..10)) // no warning
|
||||||
|
|
||||||
append4(1..10) // warning
|
append4(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR!>1..10<!>) // warning
|
||||||
|
|
||||||
append4<IntRange>(1..10) // warning
|
append4<IntRange>(1..10) // warning
|
||||||
|
|
||||||
takes(1..10) // warning
|
takes(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR!>1..10<!>) // warning
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
// WITH_STDLIB
|
||||||
|
// !LANGUAGE: +ProgressionsChangingResolve
|
||||||
|
|
||||||
|
fun <E> SmartList(x: E) {}
|
||||||
|
fun <E> SmartList(x: Collection<E>) {}
|
||||||
|
|
||||||
|
fun append(x: Any?) {}
|
||||||
|
fun append(x: Collection<*>) {}
|
||||||
|
|
||||||
|
fun append2(x: Iterable<*>) {}
|
||||||
|
fun append2(x: Collection<*>) {}
|
||||||
|
|
||||||
|
class In<in T>(x: T)
|
||||||
|
|
||||||
|
@JvmName("append31")
|
||||||
|
fun append3(x: In<Nothing>) {}
|
||||||
|
fun append3(x: In<Collection<*>>) {}
|
||||||
|
|
||||||
|
fun <E> append4(x: E) {}
|
||||||
|
fun <E: Collection<*>> append4(x: E) {}
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
SmartList(1..2) // warning
|
||||||
|
SmartList<IntRange>(1..10) // no warning
|
||||||
|
|
||||||
|
append(1..10) // warning
|
||||||
|
append((1..10) as Any) // no warning
|
||||||
|
append((1..10) as Iterable<Int>) // no warning
|
||||||
|
append("a".."z") // no warning, the range is not iterable
|
||||||
|
append(1.0..2.0)
|
||||||
|
|
||||||
|
append2(1..10) // no warning
|
||||||
|
|
||||||
|
append3(In(1..10)) // no warning
|
||||||
|
|
||||||
|
append4(1..10) // warning
|
||||||
|
}
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
// FIR_IDENTICAL
|
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// !LANGUAGE: +ProgressionsChangingResolve
|
// !LANGUAGE: +ProgressionsChangingResolve
|
||||||
|
|
||||||
@@ -21,10 +20,10 @@ fun <E> append4(x: E) {}
|
|||||||
fun <E: Collection<*>> append4(x: E) {}
|
fun <E: Collection<*>> append4(x: E) {}
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
SmartList(1..2) // warning
|
SmartList(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR("fun <E> SmartList(x: Collection<E>): Unit")!>1..2<!>) // warning
|
||||||
SmartList<IntRange>(1..10) // no warning
|
SmartList<IntRange>(1..10) // no warning
|
||||||
|
|
||||||
append(1..10) // warning
|
append(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR("fun append(x: Collection<*>): Unit")!>1..10<!>) // warning
|
||||||
append((1..10) as Any) // no warning
|
append((1..10) as Any) // no warning
|
||||||
append((1..10) as Iterable<Int>) // no warning
|
append((1..10) as Iterable<Int>) // no warning
|
||||||
append("a".."z") // no warning, the range is not iterable
|
append("a".."z") // no warning, the range is not iterable
|
||||||
@@ -34,5 +33,5 @@ fun main() {
|
|||||||
|
|
||||||
append3(In(1..10)) // no warning
|
append3(In(1..10)) // no warning
|
||||||
|
|
||||||
append4(1..10) // warning
|
append4(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR("fun <E : Collection<*>> append4(x: E): Unit")!>1..10<!>) // warning
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
// WITH_STDLIB
|
||||||
|
// FULL_JDK
|
||||||
|
|
||||||
|
// FILE: JavaSmartList.java
|
||||||
|
import kotlin.ranges.ClosedRange;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
public class JavaSmartList <E> {
|
||||||
|
JavaSmartList(E x) {}
|
||||||
|
JavaSmartList(Collection<E> x) {}
|
||||||
|
|
||||||
|
static void append(Object x) {}
|
||||||
|
static void append(Collection<?> x) {}
|
||||||
|
|
||||||
|
static void append2(Iterable<?> x) {}
|
||||||
|
static void append2(Collection<?> x) {}
|
||||||
|
|
||||||
|
public static class In <T> {
|
||||||
|
In(T x) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void append3(In<?> x) {}
|
||||||
|
static void append3(In<Collection<?>> x) {}
|
||||||
|
|
||||||
|
static <E> void append4(E x) {}
|
||||||
|
static <E extends Collection<?>> void append4(E x) {}
|
||||||
|
|
||||||
|
static <T> void takes(T x) {}
|
||||||
|
static <T extends Collection<?> & ClosedRange<?>> void takes(T x) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: main.kt
|
||||||
|
fun main() {
|
||||||
|
JavaSmartList(1..2) // warning
|
||||||
|
JavaSmartList<IntRange>(1..10) // no warning
|
||||||
|
|
||||||
|
JavaSmartList.append(1..10) // warning
|
||||||
|
JavaSmartList.append((1..10) as Any) // no warning
|
||||||
|
JavaSmartList.append((1..10) as Iterable<Int>) // no warning
|
||||||
|
JavaSmartList.append("a".."z") // no warning, the range is not iterable
|
||||||
|
JavaSmartList.append(1.0..2.0)
|
||||||
|
|
||||||
|
JavaSmartList.append2(1..10) // no warning
|
||||||
|
|
||||||
|
JavaSmartList.append3(JavaSmartList.In(1..10)) // no warning
|
||||||
|
|
||||||
|
JavaSmartList.append4(1..10) // warning
|
||||||
|
|
||||||
|
JavaSmartList.append4<IntRange>(1..10) // warning
|
||||||
|
|
||||||
|
JavaSmartList.takes(1..10) // warning
|
||||||
|
}
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
// FIR_IDENTICAL
|
|
||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|
||||||
@@ -33,10 +32,10 @@ public class JavaSmartList <E> {
|
|||||||
|
|
||||||
// FILE: main.kt
|
// FILE: main.kt
|
||||||
fun main() {
|
fun main() {
|
||||||
JavaSmartList(1..2) // warning
|
JavaSmartList(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR!>1..2<!>) // warning
|
||||||
JavaSmartList<IntRange>(1..10) // no warning
|
JavaSmartList<IntRange>(1..10) // no warning
|
||||||
|
|
||||||
JavaSmartList.append(1..10) // warning
|
JavaSmartList.append(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR!>1..10<!>) // warning
|
||||||
JavaSmartList.append((1..10) as Any) // no warning
|
JavaSmartList.append((1..10) as Any) // no warning
|
||||||
JavaSmartList.append((1..10) as Iterable<Int>) // no warning
|
JavaSmartList.append((1..10) as Iterable<Int>) // no warning
|
||||||
JavaSmartList.append("a".."z") // no warning, the range is not iterable
|
JavaSmartList.append("a".."z") // no warning, the range is not iterable
|
||||||
@@ -46,9 +45,9 @@ fun main() {
|
|||||||
|
|
||||||
JavaSmartList.append3(JavaSmartList.In(1..10)) // no warning
|
JavaSmartList.append3(JavaSmartList.In(1..10)) // no warning
|
||||||
|
|
||||||
JavaSmartList.append4(1..10) // warning
|
JavaSmartList.append4(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR!>1..10<!>) // warning
|
||||||
|
|
||||||
JavaSmartList.append4<IntRange>(1..10) // warning
|
JavaSmartList.append4<IntRange>(1..10) // warning
|
||||||
|
|
||||||
JavaSmartList.takes(1..10) // warning
|
JavaSmartList.takes(<!PROGRESSIONS_CHANGING_RESOLVE_ERROR!>1..10<!>) // warning
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -255,7 +255,6 @@ enum class LanguageFeature(
|
|||||||
|
|
||||||
// 1.9
|
// 1.9
|
||||||
|
|
||||||
DisableCheckingChangedProgressionsResolve(KOTLIN_1_9), // KT-49276
|
|
||||||
ProhibitIllegalValueParameterUsageInDefaultArguments(KOTLIN_1_9, kind = BUG_FIX), // KT-25694
|
ProhibitIllegalValueParameterUsageInDefaultArguments(KOTLIN_1_9, kind = BUG_FIX), // KT-25694
|
||||||
ProhibitConstructorCallOnFunctionalSupertype(KOTLIN_1_9, kind = BUG_FIX), // KT-46344
|
ProhibitConstructorCallOnFunctionalSupertype(KOTLIN_1_9, kind = BUG_FIX), // KT-46344
|
||||||
ProhibitArrayLiteralsInCompanionOfAnnotation(KOTLIN_1_9, kind = BUG_FIX), // KT-39041
|
ProhibitArrayLiteralsInCompanionOfAnnotation(KOTLIN_1_9, kind = BUG_FIX), // KT-39041
|
||||||
@@ -345,6 +344,7 @@ enum class LanguageFeature(
|
|||||||
ForbidInferringTypeVariablesIntoEmptyIntersection(sinceVersion = null, kind = BUG_FIX), // KT-51221
|
ForbidInferringTypeVariablesIntoEmptyIntersection(sinceVersion = null, kind = BUG_FIX), // KT-51221
|
||||||
IntrinsicConstEvaluation(sinceVersion = null, kind = UNSTABLE_FEATURE), // KT-49303
|
IntrinsicConstEvaluation(sinceVersion = null, kind = UNSTABLE_FEATURE), // KT-49303
|
||||||
NoSourceCodeInNotNullAssertionExceptions(sinceVersion = null, sinceApiVersion = ApiVersion.KOTLIN_1_4, kind = OTHER), // KT-57570
|
NoSourceCodeInNotNullAssertionExceptions(sinceVersion = null, sinceApiVersion = ApiVersion.KOTLIN_1_4, kind = OTHER), // KT-57570
|
||||||
|
DisableCheckingChangedProgressionsResolve(sinceVersion = null, kind = OTHER), // KT-49276
|
||||||
;
|
;
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|||||||
Reference in New Issue
Block a user