[LL FIR] add lazy resolution tests on 'where' construction

^KT-62691
This commit is contained in:
Dmitrii Gridin
2023-10-18 19:03:58 +02:00
committed by Space Team
parent f2a2c28ac9
commit 35567d453b
20 changed files with 936 additions and 0 deletions
@@ -0,0 +1,9 @@
// LOOK_UP_FOR_ELEMENT_OF_TYPE: KtAnnotationEntry
@Target(AnnotationTarget.TYPE)
annotation class Anno(val s: String)
interface One
interface Two
fun <T> foo(t: T) where T : One, T : <expr>@Anno("str")</expr> Two = t
@@ -0,0 +1,25 @@
KT element: KtAnnotationEntry
FIR element: FirAnnotationCallImpl
FIR source kind: KtRealSourceElementKind
FIR element rendered:
@R|Anno|[Types](s = String(str))
FIR FILE:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.s] s: R|kotlin/String|): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|@R|Anno|(s = String(str)) Two|> foo([ResolvedTo(BODY_RESOLVE)] t: R|T|): R|T| {
^foo R|<local>/t|
}
@@ -0,0 +1,9 @@
// LOOK_UP_FOR_ELEMENT_OF_TYPE: KtAnnotationEntry
@Target(AnnotationTarget.TYPE)
annotation class Anno(val s: String)
interface One
interface Two
val <T> T.foo where T : One, T : <expr>@Anno("str")</expr> Two get() = this
@@ -0,0 +1,26 @@
KT element: KtAnnotationEntry
FIR element: FirAnnotationCallImpl
FIR source kind: KtRealSourceElementKind
FIR element rendered:
@R|Anno|[Types](s = String(str))
FIR FILE:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.s] s: R|kotlin/String|): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public abstract [ResolvedTo(STATUS)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(STATUS)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] val <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|@R|Anno|(s = String(str)) Two|> R|T|.foo: R|T|
public [ResolvedTo(BODY_RESOLVE)] get(): R|T| {
^ this@R|/foo|
}
@@ -0,0 +1,4 @@
interface One
interface Two
fun <T> foo(t: T) where T : One, T : <expr>Two</expr> = t
@@ -0,0 +1,16 @@
KT element: KtTypeReference
FIR element: FirResolvedTypeRefImpl
FIR source kind: KtRealSourceElementKind
FIR element rendered:
R|Two|
FIR FILE:
FILE: [ResolvedTo(IMPORTS)] whereFunction.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|Two|> foo([ResolvedTo(BODY_RESOLVE)] t: R|T|): R|T| {
^foo R|<local>/t|
}
@@ -0,0 +1,4 @@
interface One
interface Two
val <T> T.foo where T : One, T : <expr>Two</expr> get() = this
@@ -0,0 +1,17 @@
KT element: KtTypeReference
FIR element: FirResolvedTypeRefImpl
FIR source kind: KtRealSourceElementKind
FIR element rendered:
R|Two|
FIR FILE:
FILE: [ResolvedTo(IMPORTS)] whereProperty.kt
public abstract [ResolvedTo(STATUS)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(STATUS)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] val <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|Two|> R|T|.foo: R|T|
public [ResolvedTo(BODY_RESOLVE)] get(): R|T| {
^ this@R|/foo|
}
@@ -0,0 +1,7 @@
@Target(AnnotationTarget.TYPE)
annotation class Anno(val s: String)
interface One
interface Two
fun <T> f<caret>oo(t: T) where T : One, T : @Anno("str") Two = t
@@ -0,0 +1,228 @@
RAW_FIR:
FILE: [ResolvedTo(RAW_FIR)] annotationInsideWhereFunction.kt
@Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T : One, @Anno[Unresolved](LAZY_EXPRESSION) Two> foo([ResolvedTo(RAW_FIR)] t: T): <implicit> { LAZY_BLOCK }
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T : One, @Anno[Unresolved](LAZY_EXPRESSION) Two> foo([ResolvedTo(RAW_FIR)] t: T): <implicit> { LAZY_BLOCK }
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun <[ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] T : One, @Anno[Unresolved](LAZY_EXPRESSION) Two> foo([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] t: T): <implicit> { LAZY_BLOCK }
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(COMPANION_GENERATION)] fun <[ResolvedTo(COMPANION_GENERATION)] T : One, @Anno[Unresolved](LAZY_EXPRESSION) Two> foo([ResolvedTo(COMPANION_GENERATION)] t: T): <implicit> { LAZY_BLOCK }
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(SUPER_TYPES)] fun <[ResolvedTo(SUPER_TYPES)] T : One, @Anno[Unresolved](LAZY_EXPRESSION) Two> foo([ResolvedTo(SUPER_TYPES)] t: T): <implicit> { LAZY_BLOCK }
TYPES:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(TYPES)] fun <[ResolvedTo(TYPES)] T : R|One|, R|@R|Anno|(String(str)) Two|> foo([ResolvedTo(TYPES)] t: R|T|): <implicit> { LAZY_BLOCK }
STATUS:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(STATUS)] fun <[ResolvedTo(STATUS)] T : R|One|, R|@R|Anno|(String(str)) Two|> foo([ResolvedTo(STATUS)] t: R|T|): <implicit> { LAZY_BLOCK }
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun <[ResolvedTo(EXPECT_ACTUAL_MATCHING)] T : R|One|, R|@R|Anno|(String(str)) Two|> foo([ResolvedTo(EXPECT_ACTUAL_MATCHING)] t: R|T|): <implicit> { LAZY_BLOCK }
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(CONTRACTS)] fun <[ResolvedTo(CONTRACTS)] T : R|One|, R|@R|Anno|(String(str)) Two|> foo([ResolvedTo(CONTRACTS)] t: R|T|): <implicit> { LAZY_BLOCK }
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun <[ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] T : R|One|, R|@R|Anno|(String(str)) Two|> foo([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] t: R|T|): R|T| {
^foo R|<local>/t|
}
ANNOTATION_ARGUMENTS:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.s] s: R|kotlin/String|): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun <[ResolvedTo(ANNOTATION_ARGUMENTS)] T : R|One|, R|@R|Anno|(s = String(str)) Two|> foo([ResolvedTo(ANNOTATION_ARGUMENTS)] t: R|T|): R|T| {
^foo R|<local>/t|
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereFunction.kt
@R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.s] s: R|kotlin/String|): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|@R|Anno|(s = String(str)) Two|> foo([ResolvedTo(BODY_RESOLVE)] t: R|T|): R|T| {
^foo R|<local>/t|
}
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] annotationInsideWhereFunction.kt
@R|kotlin/annotation/Target|[Types](allowedTargets = vararg(Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|)) public final [ResolvedTo(BODY_RESOLVE)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Anno.s] s: R|kotlin/String|): R|Anno| {
super<R|kotlin/Any|>()
}
public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public abstract [ResolvedTo(BODY_RESOLVE)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(BODY_RESOLVE)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|@R|Anno|(s = String(str)) Two|> foo([ResolvedTo(BODY_RESOLVE)] t: R|T|): R|T| {
^foo R|<local>/t|
}
@@ -0,0 +1,7 @@
@Target(AnnotationTarget.TYPE)
annotation class Anno(val s: String)
interface One
interface Two
val <T> T.fo<caret>o where T : One, T : @Anno("str") Two get() = this
@@ -0,0 +1,243 @@
RAW_FIR:
FILE: [ResolvedTo(RAW_FIR)] annotationInsideWhereProperty.kt
@Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] val <[ResolvedTo(RAW_FIR)] T : One, @Anno[Unresolved](LAZY_EXPRESSION) Two> T.foo: <implicit>
public? [ResolvedTo(RAW_FIR)] get(): <implicit> { LAZY_BLOCK }
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] val <[ResolvedTo(RAW_FIR)] T : One, @Anno[Unresolved](LAZY_EXPRESSION) Two> T.foo: <implicit>
public? [ResolvedTo(RAW_FIR)] get(): <implicit> { LAZY_BLOCK }
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] val <[ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] T : One, @Anno[Unresolved](LAZY_EXPRESSION) Two> T.foo: <implicit>
public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] get(): <implicit> { LAZY_BLOCK }
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(COMPANION_GENERATION)] val <[ResolvedTo(COMPANION_GENERATION)] T : One, @Anno[Unresolved](LAZY_EXPRESSION) Two> T.foo: <implicit>
public? [ResolvedTo(COMPANION_GENERATION)] get(): <implicit> { LAZY_BLOCK }
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(SUPER_TYPES)] val <[ResolvedTo(SUPER_TYPES)] T : One, @Anno[Unresolved](LAZY_EXPRESSION) Two> T.foo: <implicit>
public? [ResolvedTo(SUPER_TYPES)] get(): <implicit> { LAZY_BLOCK }
TYPES:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(TYPES)] val <[ResolvedTo(TYPES)] T : R|One|, R|@R|Anno|(String(str)) Two|> R|T|.foo: <implicit>
public? [ResolvedTo(TYPES)] get(): <implicit> { LAZY_BLOCK }
STATUS:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(STATUS)] val <[ResolvedTo(STATUS)] T : R|One|, R|@R|Anno|(String(str)) Two|> R|T|.foo: <implicit>
public [ResolvedTo(STATUS)] get(): <implicit> { LAZY_BLOCK }
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] val <[ResolvedTo(EXPECT_ACTUAL_MATCHING)] T : R|One|, R|@R|Anno|(String(str)) Two|> R|T|.foo: <implicit>
public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] get(): <implicit> { LAZY_BLOCK }
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(CONTRACTS)] val <[ResolvedTo(CONTRACTS)] T : R|One|, R|@R|Anno|(String(str)) Two|> R|T|.foo: <implicit>
public [ResolvedTo(CONTRACTS)] get(): <implicit> {
^ this#
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.s] s: String): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val s: String = R|<local>/s|
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String
}
public abstract [ResolvedTo(STATUS)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(STATUS)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val <[ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] T : R|One|, R|@R|Anno|(String(str)) Two|> R|T|.foo: R|T|
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|T| {
^ this@R|/foo|
}
ANNOTATION_ARGUMENTS:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.s] s: R|kotlin/String|): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public abstract [ResolvedTo(STATUS)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(STATUS)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] val <[ResolvedTo(ANNOTATION_ARGUMENTS)] T : R|One|, R|@R|Anno|(s = String(str)) Two|> R|T|.foo: R|T|
public [ResolvedTo(ANNOTATION_ARGUMENTS)] get(): R|T| {
^ this@R|/foo|
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] annotationInsideWhereProperty.kt
@R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.s] s: R|kotlin/String|): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public abstract [ResolvedTo(STATUS)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(STATUS)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] val <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|@R|Anno|(s = String(str)) Two|> R|T|.foo: R|T|
public [ResolvedTo(BODY_RESOLVE)] get(): R|T| {
^ this@R|/foo|
}
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] annotationInsideWhereProperty.kt
@R|kotlin/annotation/Target|[Types](allowedTargets = vararg(Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|)) public final [ResolvedTo(BODY_RESOLVE)] annotation class Anno : R|kotlin/Annotation| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Anno.s] s: R|kotlin/String|): R|Anno| {
super<R|kotlin/Any|>()
}
public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val s: R|kotlin/String| = R|<local>/s|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] get(): R|kotlin/String|
}
public abstract [ResolvedTo(BODY_RESOLVE)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(BODY_RESOLVE)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] val <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|@R|Anno|(s = String(str)) Two|> R|T|.foo: R|T|
public [ResolvedTo(BODY_RESOLVE)] get(): R|T| {
^ this@R|/foo|
}
@@ -0,0 +1,4 @@
interface One
interface Two
fun <T> fo<caret>o(t: T) where T : One, T : Two = t
@@ -0,0 +1,111 @@
RAW_FIR:
FILE: [ResolvedTo(RAW_FIR)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T : One, Two> foo([ResolvedTo(RAW_FIR)] t: T): <implicit> { LAZY_BLOCK }
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T : One, Two> foo([ResolvedTo(RAW_FIR)] t: T): <implicit> { LAZY_BLOCK }
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun <[ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] T : One, Two> foo([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] t: T): <implicit> { LAZY_BLOCK }
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(COMPANION_GENERATION)] fun <[ResolvedTo(COMPANION_GENERATION)] T : One, Two> foo([ResolvedTo(COMPANION_GENERATION)] t: T): <implicit> { LAZY_BLOCK }
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(SUPER_TYPES)] fun <[ResolvedTo(SUPER_TYPES)] T : One, Two> foo([ResolvedTo(SUPER_TYPES)] t: T): <implicit> { LAZY_BLOCK }
TYPES:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(TYPES)] fun <[ResolvedTo(TYPES)] T : R|One|, R|Two|> foo([ResolvedTo(TYPES)] t: R|T|): <implicit> { LAZY_BLOCK }
STATUS:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(STATUS)] fun <[ResolvedTo(STATUS)] T : R|One|, R|Two|> foo([ResolvedTo(STATUS)] t: R|T|): <implicit> { LAZY_BLOCK }
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun <[ResolvedTo(EXPECT_ACTUAL_MATCHING)] T : R|One|, R|Two|> foo([ResolvedTo(EXPECT_ACTUAL_MATCHING)] t: R|T|): <implicit> { LAZY_BLOCK }
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(CONTRACTS)] fun <[ResolvedTo(CONTRACTS)] T : R|One|, R|Two|> foo([ResolvedTo(CONTRACTS)] t: R|T|): <implicit> { LAZY_BLOCK }
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun <[ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] T : R|One|, R|Two|> foo([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] t: R|T|): R|T| {
^foo R|<local>/t|
}
ANNOTATION_ARGUMENTS:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun <[ResolvedTo(ANNOTATION_ARGUMENTS)] T : R|One|, R|Two|> foo([ResolvedTo(ANNOTATION_ARGUMENTS)] t: R|T|): R|T| {
^foo R|<local>/t|
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] functionWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|Two|> foo([ResolvedTo(BODY_RESOLVE)] t: R|T|): R|T| {
^foo R|<local>/t|
}
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] functionWithWhere.kt
public abstract [ResolvedTo(BODY_RESOLVE)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(BODY_RESOLVE)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|Two|> foo([ResolvedTo(BODY_RESOLVE)] t: R|T|): R|T| {
^foo R|<local>/t|
}
@@ -0,0 +1,4 @@
interface One
interface Two
val <T> T.f<caret>oo where T : One, T : Two get() = this
@@ -0,0 +1,126 @@
RAW_FIR:
FILE: [ResolvedTo(RAW_FIR)] propertyWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] val <[ResolvedTo(RAW_FIR)] T : One, Two> T.foo: <implicit>
public? [ResolvedTo(RAW_FIR)] get(): <implicit> { LAZY_BLOCK }
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] val <[ResolvedTo(RAW_FIR)] T : One, Two> T.foo: <implicit>
public? [ResolvedTo(RAW_FIR)] get(): <implicit> { LAZY_BLOCK }
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] val <[ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] T : One, Two> T.foo: <implicit>
public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] get(): <implicit> { LAZY_BLOCK }
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(COMPANION_GENERATION)] val <[ResolvedTo(COMPANION_GENERATION)] T : One, Two> T.foo: <implicit>
public? [ResolvedTo(COMPANION_GENERATION)] get(): <implicit> { LAZY_BLOCK }
SUPER_TYPES:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(SUPER_TYPES)] val <[ResolvedTo(SUPER_TYPES)] T : One, Two> T.foo: <implicit>
public? [ResolvedTo(SUPER_TYPES)] get(): <implicit> { LAZY_BLOCK }
TYPES:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public? final? [ResolvedTo(TYPES)] val <[ResolvedTo(TYPES)] T : R|One|, R|Two|> R|T|.foo: <implicit>
public? [ResolvedTo(TYPES)] get(): <implicit> { LAZY_BLOCK }
STATUS:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(STATUS)] val <[ResolvedTo(STATUS)] T : R|One|, R|Two|> R|T|.foo: <implicit>
public [ResolvedTo(STATUS)] get(): <implicit> { LAZY_BLOCK }
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] val <[ResolvedTo(EXPECT_ACTUAL_MATCHING)] T : R|One|, R|Two|> R|T|.foo: <implicit>
public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] get(): <implicit> { LAZY_BLOCK }
CONTRACTS:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public? final? [ResolvedTo(RAW_FIR)] interface One : R|kotlin/Any| {
}
public? final? [ResolvedTo(RAW_FIR)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(CONTRACTS)] val <[ResolvedTo(CONTRACTS)] T : R|One|, R|Two|> R|T|.foo: <implicit>
public [ResolvedTo(CONTRACTS)] get(): <implicit> {
^ this#
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public abstract [ResolvedTo(STATUS)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(STATUS)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val <[ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] T : R|One|, R|Two|> R|T|.foo: R|T|
public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|T| {
^ this@R|/foo|
}
ANNOTATION_ARGUMENTS:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public abstract [ResolvedTo(STATUS)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(STATUS)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] val <[ResolvedTo(ANNOTATION_ARGUMENTS)] T : R|One|, R|Two|> R|T|.foo: R|T|
public [ResolvedTo(ANNOTATION_ARGUMENTS)] get(): R|T| {
^ this@R|/foo|
}
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] propertyWithWhere.kt
public abstract [ResolvedTo(STATUS)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(STATUS)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] val <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|Two|> R|T|.foo: R|T|
public [ResolvedTo(BODY_RESOLVE)] get(): R|T| {
^ this@R|/foo|
}
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] propertyWithWhere.kt
public abstract [ResolvedTo(BODY_RESOLVE)] interface One : R|kotlin/Any| {
}
public abstract [ResolvedTo(BODY_RESOLVE)] interface Two : R|kotlin/Any| {
}
public final [ResolvedTo(BODY_RESOLVE)] val <[ResolvedTo(BODY_RESOLVE)] T : R|One|, R|Two|> R|T|.foo: R|T|
public [ResolvedTo(BODY_RESOLVE)] get(): R|T| {
^ this@R|/foo|
}