| // DISABLE_JAVA_FACADE |
| // RUN_PIPELINE_TILL: BACKEND |
| // WITH_STDLIB |
| // FULL_JDK |
| // LANGUAGE: -ProgressionsChangingResolve -DisableCheckingChangedProgressionsResolve |
| // This test is not K1/K2 identical due to KT-58789 not implemented yet |
| |
| // 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 |
| } |
| |
| /* GENERATED_FIR_TAGS: asExpression, flexibleType, functionDeclaration, integerLiteral, javaFunction, javaType, |
| rangeExpression, stringLiteral */ |