[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|
}
@@ -48,6 +48,18 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst
runTest("analysis/low-level-api-fir/testData/lazyResolve/annotationFromImplicitJavaTypeWithJavaAnnotation.kt");
}
@Test
@TestMetadata("annotationInsideWhereFunction.kt")
public void testAnnotationInsideWhereFunction() throws Exception {
runTest("analysis/low-level-api-fir/testData/lazyResolve/annotationInsideWhereFunction.kt");
}
@Test
@TestMetadata("annotationInsideWhereProperty.kt")
public void testAnnotationInsideWhereProperty() throws Exception {
runTest("analysis/low-level-api-fir/testData/lazyResolve/annotationInsideWhereProperty.kt");
}
@Test
@TestMetadata("annotationOnLocalClass.kt")
public void testAnnotationOnLocalClass() throws Exception {
@@ -288,6 +300,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst
runTest("analysis/low-level-api-fir/testData/lazyResolve/functionWithParameter.kt");
}
@Test
@TestMetadata("functionWithWhere.kt")
public void testFunctionWithWhere() throws Exception {
runTest("analysis/low-level-api-fir/testData/lazyResolve/functionWithWhere.kt");
}
@Test
@TestMetadata("implicitTypeOnFunctionWithRawContract.kt")
public void testImplicitTypeOnFunctionWithRawContract() throws Exception {
@@ -456,6 +474,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst
runTest("analysis/low-level-api-fir/testData/lazyResolve/propertyWithInitializer.kt");
}
@Test
@TestMetadata("propertyWithWhere.kt")
public void testPropertyWithWhere() throws Exception {
runTest("analysis/low-level-api-fir/testData/lazyResolve/propertyWithWhere.kt");
}
@Test
@TestMetadata("redeclaration.kt")
public void testRedeclaration() throws Exception {
@@ -48,6 +48,18 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou
runTest("analysis/low-level-api-fir/testData/lazyResolve/annotationFromImplicitJavaTypeWithJavaAnnotation.kt");
}
@Test
@TestMetadata("annotationInsideWhereFunction.kt")
public void testAnnotationInsideWhereFunction() throws Exception {
runTest("analysis/low-level-api-fir/testData/lazyResolve/annotationInsideWhereFunction.kt");
}
@Test
@TestMetadata("annotationInsideWhereProperty.kt")
public void testAnnotationInsideWhereProperty() throws Exception {
runTest("analysis/low-level-api-fir/testData/lazyResolve/annotationInsideWhereProperty.kt");
}
@Test
@TestMetadata("annotationOnLocalClass.kt")
public void testAnnotationOnLocalClass() throws Exception {
@@ -288,6 +300,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou
runTest("analysis/low-level-api-fir/testData/lazyResolve/functionWithParameter.kt");
}
@Test
@TestMetadata("functionWithWhere.kt")
public void testFunctionWithWhere() throws Exception {
runTest("analysis/low-level-api-fir/testData/lazyResolve/functionWithWhere.kt");
}
@Test
@TestMetadata("implicitTypeOnFunctionWithRawContract.kt")
public void testImplicitTypeOnFunctionWithRawContract() throws Exception {
@@ -456,6 +474,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou
runTest("analysis/low-level-api-fir/testData/lazyResolve/propertyWithInitializer.kt");
}
@Test
@TestMetadata("propertyWithWhere.kt")
public void testPropertyWithWhere() throws Exception {
runTest("analysis/low-level-api-fir/testData/lazyResolve/propertyWithWhere.kt");
}
@Test
@TestMetadata("redeclaration.kt")
public void testRedeclaration() throws Exception {
@@ -75,6 +75,18 @@ public class OutOfContentRootGetOrBuildFirTestGenerated extends AbstractOutOfCon
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationWithArgumentsOnCallSite.kt");
}
@Test
@TestMetadata("annotationInsideWhereFunction.kt")
public void testAnnotationInsideWhereFunction() throws Exception {
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationInsideWhereFunction.kt");
}
@Test
@TestMetadata("annotationInsideWhereProperty.kt")
public void testAnnotationInsideWhereProperty() throws Exception {
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationInsideWhereProperty.kt");
}
@Test
@TestMetadata("annotationOnConstructorProperty.kt")
public void testAnnotationOnConstructorProperty() throws Exception {
@@ -1189,6 +1201,18 @@ public class OutOfContentRootGetOrBuildFirTestGenerated extends AbstractOutOfCon
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/unresolvedTypeConsturctorResolvedTypeArgument.kt");
}
@Test
@TestMetadata("whereFunction.kt")
public void testWhereFunction() throws Exception {
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/whereFunction.kt");
}
@Test
@TestMetadata("whereProperty.kt")
public void testWhereProperty() throws Exception {
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/whereProperty.kt");
}
@Test
@TestMetadata("wholeType.kt")
public void testWholeType() throws Exception {
@@ -75,6 +75,18 @@ public class SourceGetOrBuildFirTestGenerated extends AbstractSourceGetOrBuildFi
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationWithArgumentsOnCallSite.kt");
}
@Test
@TestMetadata("annotationInsideWhereFunction.kt")
public void testAnnotationInsideWhereFunction() throws Exception {
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationInsideWhereFunction.kt");
}
@Test
@TestMetadata("annotationInsideWhereProperty.kt")
public void testAnnotationInsideWhereProperty() throws Exception {
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationInsideWhereProperty.kt");
}
@Test
@TestMetadata("annotationOnConstructorProperty.kt")
public void testAnnotationOnConstructorProperty() throws Exception {
@@ -1189,6 +1201,18 @@ public class SourceGetOrBuildFirTestGenerated extends AbstractSourceGetOrBuildFi
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/unresolvedTypeConsturctorResolvedTypeArgument.kt");
}
@Test
@TestMetadata("whereFunction.kt")
public void testWhereFunction() throws Exception {
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/whereFunction.kt");
}
@Test
@TestMetadata("whereProperty.kt")
public void testWhereProperty() throws Exception {
runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/whereProperty.kt");
}
@Test
@TestMetadata("wholeType.kt")
public void testWholeType() throws Exception {