[Analysis API] add test for duplicated callable during implicit type

^KT-63547
This commit is contained in:
Dmitrii Gridin
2023-12-19 19:04:46 +01:00
committed by Space Team
parent 51f6525238
commit e3841a1728
10 changed files with 297 additions and 0 deletions
@@ -0,0 +1,28 @@
// SKIP_WHEN_OUT_OF_CONTENT_ROOT
// DISABLE_SEALED_INHERITOR_CALCULATOR
// MODULE: lib1
// FILE: dependency.kt
package usage
fun implicitType() = 1
// MODULE: dep(lib1)
// FILE: annotation.kt
package usage
fun implicitTypeFromAnotherModule() = implicitType()
// MODULE: lib2
// FILE: dependency.kt
package usage
fun implicitType() = "str"
// MODULE: main(lib2, dep)
// FILE: usage.kt
package usage
fun usa<caret>ge() = run {
implicitType()
implicitTypeFromAnotherModule()
}
@@ -0,0 +1,195 @@
RAW_FIR:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] annotation.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitTypeFromAnotherModule(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] usage.kt
public? final? [ResolvedTo(RAW_FIR)] fun usage(): <implicit> { LAZY_BLOCK }
IMPORTS:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] annotation.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitTypeFromAnotherModule(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] usage.kt
public? final? [ResolvedTo(RAW_FIR)] fun usage(): <implicit> { LAZY_BLOCK }
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] annotation.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitTypeFromAnotherModule(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] usage.kt
public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun usage(): <implicit> { LAZY_BLOCK }
COMPANION_GENERATION:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] annotation.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitTypeFromAnotherModule(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] usage.kt
public? final? [ResolvedTo(COMPANION_GENERATION)] fun usage(): <implicit> { LAZY_BLOCK }
SUPER_TYPES:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] annotation.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitTypeFromAnotherModule(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] usage.kt
public? final? [ResolvedTo(SUPER_TYPES)] fun usage(): <implicit> { LAZY_BLOCK }
TYPES:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] annotation.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitTypeFromAnotherModule(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] usage.kt
public? final? [ResolvedTo(TYPES)] fun usage(): <implicit> { LAZY_BLOCK }
STATUS:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] annotation.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitTypeFromAnotherModule(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] usage.kt
public final [ResolvedTo(STATUS)] fun usage(): <implicit> { LAZY_BLOCK }
EXPECT_ACTUAL_MATCHING:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] annotation.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitTypeFromAnotherModule(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] usage.kt
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun usage(): <implicit> { LAZY_BLOCK }
CONTRACTS:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] annotation.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitTypeFromAnotherModule(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] usage.kt
public final [ResolvedTo(CONTRACTS)] fun usage(): <implicit> { LAZY_BLOCK }
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] annotation.kt
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitTypeFromAnotherModule(): R|kotlin/String| {
^implicitTypeFromAnotherModule R|usage/implicitType|()
}
FILE: [ResolvedTo(IMPORTS)] dependency.kt
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitType(): R|kotlin/String| {
^implicitType String(str)
}
FILE: [ResolvedTo(IMPORTS)] usage.kt
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun usage(): R|kotlin/String| {
^usage R|kotlin/run|<R|kotlin/String|>(<L> = [ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<R>] run@fun <anonymous>(): R|kotlin/String| <inline=Inline, kind=EXACTLY_ONCE> {
R|usage/implicitType|()
^ R|usage/implicitTypeFromAnotherModule|()
}
)
}
ANNOTATION_ARGUMENTS:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] annotation.kt
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitTypeFromAnotherModule(): R|kotlin/String| {
^implicitTypeFromAnotherModule R|usage/implicitType|()
}
FILE: [ResolvedTo(IMPORTS)] dependency.kt
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitType(): R|kotlin/String| {
^implicitType String(str)
}
FILE: [ResolvedTo(IMPORTS)] usage.kt
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun usage(): R|kotlin/String| {
^usage R|kotlin/run|<R|kotlin/String|>(<L> = [ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<R>] run@fun <anonymous>(): R|kotlin/String| <inline=Inline, kind=EXACTLY_ONCE> {
R|usage/implicitType|()
^ R|usage/implicitTypeFromAnotherModule|()
}
)
}
BODY_RESOLVE:
FILE: [ResolvedTo(RAW_FIR)] dependency.kt
public? final? [ResolvedTo(RAW_FIR)] fun implicitType(): <implicit> { LAZY_BLOCK }
FILE: [ResolvedTo(IMPORTS)] annotation.kt
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitTypeFromAnotherModule(): R|kotlin/String| {
^implicitTypeFromAnotherModule R|usage/implicitType|()
}
FILE: [ResolvedTo(IMPORTS)] dependency.kt
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitType(): R|kotlin/String| {
^implicitType String(str)
}
FILE: [ResolvedTo(IMPORTS)] usage.kt
public final [ResolvedTo(BODY_RESOLVE)] fun usage(): R|kotlin/String| {
^usage R|kotlin/run|<R|kotlin/String|>(<L> = [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=kotlin/Function0<R>] run@fun <anonymous>(): R|kotlin/String| <inline=Inline, kind=EXACTLY_ONCE> {
R|usage/implicitType|()
^ R|usage/implicitTypeFromAnotherModule|()
}
)
}
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] usage.kt
public final [ResolvedTo(BODY_RESOLVE)] fun usage(): R|kotlin/String| {
^usage R|kotlin/run|<R|kotlin/String|>(<L> = [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=kotlin/Function0<R>] run@fun <anonymous>(): R|kotlin/String| <inline=Inline, kind=EXACTLY_ONCE> {
R|usage/implicitType|()
^ R|usage/implicitTypeFromAnotherModule|()
}
)
}