Skip to content

Commit a77a1cf

Browse files
mglukhikhSpace Team
authored and
Space Team
committed
K1/K2: add test confirming correct work of KT-63487 case
1 parent 9a7d748 commit a77a1cf

File tree

7 files changed

+70
-0
lines changed

7 files changed

+70
-0
lines changed

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

+6
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

+6
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

+6
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

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
FILE: complexTypeUnwrapping2.kt
2+
public abstract class AbstractField<out Field : R|AbstractField<Field>|> : R|kotlin/Any| {
3+
public constructor<out Field : R|AbstractField<Field>|>(): R|AbstractField<Field>| {
4+
super<R|kotlin/Any|>()
5+
}
6+
7+
}
8+
public abstract class AbstractElement<Element : R|AbstractElement<Element, Field>|, Field : R|AbstractField<Field>|> : R|kotlin/Any| {
9+
public constructor<Element : R|AbstractElement<Element, Field>|, Field : R|AbstractField<Field>|>(): R|AbstractElement<Element, Field>| {
10+
super<R|kotlin/Any|>()
11+
}
12+
13+
}
14+
public abstract interface ElementOrRef<Element : R|AbstractElement<Element, Field>|, Field : R|AbstractField<Field>|> : R|kotlin/Any| {
15+
public abstract val element: R|Element|
16+
public get(): R|Element|
17+
18+
}
19+
public final fun elvis(x: R|ElementOrRef<*, *>?|, y: R|ElementOrRef<*, *>?|): R|kotlin/Unit| {
20+
lval xElement: R|AbstractElement<out AbstractElement<*, out AbstractField<*>>, out AbstractField<*>>?| = R|<local>/x|?.{ $subj$.R|SubstitutionOverride</ElementOrRef.element: R|CapturedType(*)|>| }
21+
lval yElement: R|AbstractElement<out AbstractElement<*, out AbstractField<*>>, out AbstractField<*>>?| = R|<local>/y|?.{ $subj$.R|SubstitutionOverride</ElementOrRef.element: R|CapturedType(*)|>| }
22+
lval e: R|AbstractElement<*, out AbstractField<*>>?| = R|<local>/xElement| ?: R|<local>/yElement|
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// FIR_IDENTICAL
2+
// ISSUE: KT-63487
3+
// FIR_DUMP
4+
5+
abstract class AbstractField<out Field : AbstractField<Field>>
6+
7+
abstract class AbstractElement<Element : AbstractElement<Element, Field>, Field : AbstractField<Field>>
8+
9+
interface ElementOrRef<Element : AbstractElement<Element, Field>, Field : AbstractField<Field>> {
10+
val element: Element
11+
}
12+
13+
fun elvis(x: ElementOrRef<*, *>?, y: ElementOrRef<*, *>?) {
14+
val xElement = x?.element
15+
val yElement = y?.element
16+
val e = xElement ?: yElement
17+
}

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

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)