Skip to content

Commit d295f9c

Browse files
dzharkovSpace Team
authored and
Space Team
committed
Reproduce KT-67875 and KT-67947
1 parent de06369 commit d295f9c

File tree

9 files changed

+224
-0
lines changed

9 files changed

+224
-0
lines changed

analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// WITH_STDLIB
2+
// ISSUE: KT-67875
3+
4+
// FILE: MyClass.java
5+
public class MyClass<T> {}
6+
7+
// FILE: MyClassBuilder.java
8+
public class MyClassBuilder<T> {
9+
public MyClassBuilder<T> makeClass(T... values) {}
10+
11+
public MyClassBuilder<T> makeClass(Iterable<? extends T> it) {}
12+
13+
public MyClass<T> build() { return null; }
14+
}
15+
16+
// FILE: main.kt
17+
inline fun <T: Any> myClassOf(
18+
init: MyClassBuilder<T>.() -> Unit
19+
): MyClass<T> = MyClassBuilder<T>().apply(init).build()
20+
21+
object Foo {
22+
val myClass = <!CANNOT_INFER_PARAMETER_TYPE, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>myClassOf<!> {
23+
<!OVERLOAD_RESOLUTION_AMBIGUITY!>makeClass<!>(listOf("a", "b"))
24+
}
25+
26+
private val myClassType: MyClass<String> = myClass
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// WITH_STDLIB
2+
// ISSUE: KT-67875
3+
4+
// FILE: MyClass.java
5+
public class MyClass<T> {}
6+
7+
// FILE: MyClassBuilder.java
8+
public class MyClassBuilder<T> {
9+
public MyClassBuilder<T> makeClass(T... values) {}
10+
11+
public MyClassBuilder<T> makeClass(Iterable<? extends T> it) {}
12+
13+
public MyClass<T> build() { return null; }
14+
}
15+
16+
// FILE: main.kt
17+
inline fun <T: Any> myClassOf(
18+
init: MyClassBuilder<T>.() -> Unit
19+
): MyClass<T> = MyClassBuilder<T>().apply(init).build()
20+
21+
object Foo {
22+
val myClass = myClassOf {
23+
makeClass(listOf("a", "b"))
24+
}
25+
26+
private val myClassType: MyClass<String> = myClass
27+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// ISSUE: KT-67947
2+
// ISSUE: KT-67875
3+
4+
class Inv<E1>
5+
class Out<E2>
6+
class In<E2>
7+
8+
interface Controller<T> {
9+
fun add(x: T)
10+
11+
fun foo1(vararg values: T)
12+
fun foo1(x: Inv<T>)
13+
14+
fun foo2(vararg values: T)
15+
fun foo2(x: Out<T>)
16+
17+
fun foo3(value: T)
18+
fun foo3(x: Inv<T>)
19+
20+
fun foo4(x: In<CharSequence>)
21+
fun foo4(x: In<T>)
22+
}
23+
24+
fun <T1> Controller<T1>.fooExt(vararg values: T1) {}
25+
fun <T2> Controller<T2>.fooExt(x: Inv<T2>) {}
26+
27+
fun <E> generate(f: Controller<E>.() -> Unit) {}
28+
29+
fun bar(inv: Inv<String>, out: Out<String>, i: In<CharSequence>, cs: CharSequence) {
30+
<!CANNOT_INFER_PARAMETER_TYPE, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
31+
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo1<!>(inv)
32+
}
33+
34+
<!CANNOT_INFER_PARAMETER_TYPE, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
35+
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo2<!>(out)
36+
}
37+
38+
<!CANNOT_INFER_PARAMETER_TYPE, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
39+
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo3<!>(inv)
40+
}
41+
42+
<!CANNOT_INFER_PARAMETER_TYPE, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
43+
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo4<!>(i)
44+
}
45+
46+
generate {
47+
// CharSequence <: Tv
48+
add(cs)
49+
<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo4<!>(i)
50+
}
51+
52+
<!CANNOT_INFER_PARAMETER_TYPE, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
53+
<!OVERLOAD_RESOLUTION_AMBIGUITY!>fooExt<!>(inv)
54+
}
55+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// ISSUE: KT-67947
2+
// ISSUE: KT-67875
3+
4+
class Inv<E1>
5+
class Out<E2>
6+
class In<E2>
7+
8+
interface Controller<T> {
9+
fun add(x: T)
10+
11+
fun foo1(vararg values: T)
12+
fun foo1(x: Inv<T>)
13+
14+
fun foo2(vararg values: T)
15+
fun foo2(x: Out<T>)
16+
17+
fun foo3(value: T)
18+
fun foo3(x: Inv<T>)
19+
20+
fun foo4(x: In<CharSequence>)
21+
fun foo4(x: In<T>)
22+
}
23+
24+
fun <T1> Controller<T1>.fooExt(vararg values: T1) {}
25+
fun <T2> Controller<T2>.fooExt(x: Inv<T2>) {}
26+
27+
fun <E> generate(f: Controller<E>.() -> Unit) {}
28+
29+
fun bar(inv: Inv<String>, out: Out<String>, i: In<CharSequence>, cs: CharSequence) {
30+
generate {
31+
foo1(inv)
32+
}
33+
34+
generate {
35+
foo2(out)
36+
}
37+
38+
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
39+
<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, OVERLOAD_RESOLUTION_AMBIGUITY!>foo3<!>(inv)
40+
}
41+
42+
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
43+
<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, OVERLOAD_RESOLUTION_AMBIGUITY!>foo4<!>(i)
44+
}
45+
46+
generate {
47+
// CharSequence <: Tv
48+
add(cs)
49+
<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, OVERLOAD_RESOLUTION_AMBIGUITY!>foo4<!>(i)
50+
}
51+
52+
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
53+
<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, OVERLOAD_RESOLUTION_AMBIGUITY!>fooExt<!>(inv)
54+
}
55+
}

compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)