[FIR] FirJavaFacade: calculate default value for annotations lazily
To avoid contract violation ^KT-62776 Fixed
This commit is contained in:
committed by
Space Team
parent
b90ff94451
commit
48c36ce475
+21
@@ -0,0 +1,21 @@
|
|||||||
|
// SKIP_WHEN_OUT_OF_CONTENT_ROOT
|
||||||
|
// FILE: ArrayAnnUsage.kt
|
||||||
|
package light.ann.array
|
||||||
|
|
||||||
|
import light.ann.array.AnnAuxEnum.ANN_ENUM_VAL_A;
|
||||||
|
import light.ann.array.AnnAuxEnum.ANN_ENUM_VAL_B;
|
||||||
|
|
||||||
|
enum class AnnAuxEnum { ANN_ENUM_VAL_A, ANN_ENUM_VAL_B }
|
||||||
|
|
||||||
|
@ArrayAnnEnumJava(enumValDef = arrayOf(ANN_ENUM_VAL_A, ANN_ENUM_VAL_B))
|
||||||
|
fun bo<caret>x() = "OK"
|
||||||
|
|
||||||
|
// FILE: ArrayAnnEnumJava.java
|
||||||
|
package light.ann.array;
|
||||||
|
|
||||||
|
import static light.ann.array.AnnAuxEnum.ANN_ENUM_VAL_A;
|
||||||
|
import static light.ann.array.AnnAuxEnum.ANN_ENUM_VAL_B;
|
||||||
|
|
||||||
|
public @interface ArrayAnnEnumJava {
|
||||||
|
AnnAuxEnum[] enumValDef() default { ANN_ENUM_VAL_A, ANN_ENUM_VAL_B };
|
||||||
|
}
|
||||||
+280
@@ -0,0 +1,280 @@
|
|||||||
|
RAW_FIR:
|
||||||
|
FILE: [ResolvedTo(RAW_FIR)] ArrayAnnUsage.kt
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@ArrayAnnEnumJava[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] fun box(): <implicit> { LAZY_BLOCK }
|
||||||
|
|
||||||
|
IMPORTS:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@ArrayAnnEnumJava[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] fun box(): <implicit> { LAZY_BLOCK }
|
||||||
|
|
||||||
|
COMPILER_REQUIRED_ANNOTATIONS:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@ArrayAnnEnumJava[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun box(): <implicit> { LAZY_BLOCK }
|
||||||
|
|
||||||
|
COMPANION_GENERATION:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@ArrayAnnEnumJava[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(COMPANION_GENERATION)] fun box(): <implicit> { LAZY_BLOCK }
|
||||||
|
|
||||||
|
SUPER_TYPES:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@ArrayAnnEnumJava[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(SUPER_TYPES)] fun box(): <implicit> { LAZY_BLOCK }
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@R|light/ann/array/ArrayAnnEnumJava|[Types](LAZY_EXPRESSION) public? final? [ResolvedTo(TYPES)] fun box(): <implicit> { LAZY_BLOCK }
|
||||||
|
|
||||||
|
STATUS:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@R|light/ann/array/ArrayAnnEnumJava|[Types](LAZY_EXPRESSION) public final [ResolvedTo(STATUS)] fun box(): <implicit> { LAZY_BLOCK }
|
||||||
|
|
||||||
|
EXPECT_ACTUAL_MATCHING:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@R|light/ann/array/ArrayAnnEnumJava|[Types](LAZY_EXPRESSION) public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun box(): <implicit> { LAZY_BLOCK }
|
||||||
|
|
||||||
|
CONTRACTS:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@R|light/ann/array/ArrayAnnEnumJava|[Types](LAZY_EXPRESSION) public final [ResolvedTo(CONTRACTS)] fun box(): <implicit> { LAZY_BLOCK }
|
||||||
|
|
||||||
|
IMPLICIT_TYPES_BODY_RESOLVE:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public? final? [ResolvedTo(RAW_FIR)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(RAW_FIR)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@R|light/ann/array/ArrayAnnEnumJava|[Types](LAZY_EXPRESSION) public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun box(): R|kotlin/String| {
|
||||||
|
^box String(OK)
|
||||||
|
}
|
||||||
|
|
||||||
|
ANNOTATION_ARGUMENTS:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public final [ResolvedTo(STATUS)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@R|light/ann/array/ArrayAnnEnumJava|[Types](enumValDef = <implicitArrayOf>(R|light/ann/array/AnnAuxEnum.ANN_ENUM_VAL_A|, R|light/ann/array/AnnAuxEnum.ANN_ENUM_VAL_B|)) public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun box(): R|kotlin/String| {
|
||||||
|
^box String(OK)
|
||||||
|
}
|
||||||
|
|
||||||
|
BODY_RESOLVE:
|
||||||
|
FILE: [ResolvedTo(IMPORTS)] ArrayAnnUsage.kt
|
||||||
|
public final [ResolvedTo(STATUS)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
LAZY_super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(STATUS)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@R|light/ann/array/ArrayAnnEnumJava|[Types](enumValDef = <implicitArrayOf>(R|light/ann/array/AnnAuxEnum.ANN_ENUM_VAL_A|, R|light/ann/array/AnnAuxEnum.ANN_ENUM_VAL_B|)) public final [ResolvedTo(BODY_RESOLVE)] fun box(): R|kotlin/String| {
|
||||||
|
^box String(OK)
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE RAW TO BODY:
|
||||||
|
FILE: [ResolvedTo(BODY_RESOLVE)] ArrayAnnUsage.kt
|
||||||
|
public final [ResolvedTo(BODY_RESOLVE)] enum class AnnAuxEnum : R|kotlin/Enum<light/ann/array/AnnAuxEnum>| {
|
||||||
|
private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AnnAuxEnum] constructor(): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
super<R|kotlin/Enum<light/ann/array/AnnAuxEnum>|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_A: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AnnAuxEnum] enum entry ANN_ENUM_VAL_B: R|light/ann/array/AnnAuxEnum|
|
||||||
|
public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AnnAuxEnum] fun values(): R|kotlin/Array<light/ann/array/AnnAuxEnum>| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AnnAuxEnum] fun valueOf([ResolvedTo(BODY_RESOLVE)] value: R|kotlin/String|): R|light/ann/array/AnnAuxEnum| {
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=AnnAuxEnum] val entries: R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/enums/EnumEntries<light/ann/array/AnnAuxEnum>|
|
||||||
|
|
||||||
|
}
|
||||||
|
@R|light/ann/array/ArrayAnnEnumJava|[Types](enumValDef = <implicitArrayOf>(R|light/ann/array/AnnAuxEnum.ANN_ENUM_VAL_A|, R|light/ann/array/AnnAuxEnum.ANN_ENUM_VAL_B|)) public final [ResolvedTo(BODY_RESOLVE)] fun box(): R|kotlin/String| {
|
||||||
|
^box String(OK)
|
||||||
|
}
|
||||||
+6
@@ -951,6 +951,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst
|
|||||||
runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/implicitTypeFromFunctionWithDuplicatedName.kt");
|
runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/implicitTypeFromFunctionWithDuplicatedName.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("javaAnnotationWithDefaultValueForenumArray.kt")
|
||||||
|
public void testJavaAnnotationWithDefaultValueForenumArray() throws Exception {
|
||||||
|
runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/javaAnnotationWithDefaultValueForenumArray.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("simpleLoopInOverride.kt")
|
@TestMetadata("simpleLoopInOverride.kt")
|
||||||
public void testSimpleLoopInOverride() throws Exception {
|
public void testSimpleLoopInOverride() throws Exception {
|
||||||
|
|||||||
+6
@@ -951,6 +951,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou
|
|||||||
runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/implicitTypeFromFunctionWithDuplicatedName.kt");
|
runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/implicitTypeFromFunctionWithDuplicatedName.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("javaAnnotationWithDefaultValueForenumArray.kt")
|
||||||
|
public void testJavaAnnotationWithDefaultValueForenumArray() throws Exception {
|
||||||
|
runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/javaAnnotationWithDefaultValueForenumArray.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("simpleLoopInOverride.kt")
|
@TestMetadata("simpleLoopInOverride.kt")
|
||||||
public void testSimpleLoopInOverride() throws Exception {
|
public void testSimpleLoopInOverride() throws Exception {
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.fir.java
|
package org.jetbrains.kotlin.fir.java
|
||||||
|
|
||||||
import com.intellij.psi.PsiMethod
|
import com.intellij.psi.PsiMethod
|
||||||
import com.intellij.psi.impl.light.LightRecordCanonicalConstructor
|
|
||||||
import com.intellij.psi.util.JavaPsiRecordUtil
|
import com.intellij.psi.util.JavaPsiRecordUtil
|
||||||
import org.jetbrains.kotlin.*
|
import org.jetbrains.kotlin.*
|
||||||
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||||
@@ -397,11 +396,13 @@ abstract class FirJavaFacade(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (classIsAnnotation) {
|
if (classIsAnnotation) {
|
||||||
|
val javaTypeParameterStackSnapshot = javaTypeParameterStack.snapshot()
|
||||||
// Cannot load these until the symbol is bound because they may be self-referential.
|
// Cannot load these until the symbol is bound because they may be self-referential.
|
||||||
valueParametersForAnnotationConstructor.forEach { javaMethod, firValueParameter ->
|
valueParametersForAnnotationConstructor.forEach { javaMethod, firValueParameter ->
|
||||||
javaMethod.annotationParameterDefaultValue?.let { javaDefaultValue ->
|
javaMethod.annotationParameterDefaultValue?.let { javaDefaultValue ->
|
||||||
firValueParameter.defaultValue =
|
firValueParameter.lazyDefaultValue = lazy {
|
||||||
javaDefaultValue.toFirExpression(session, javaTypeParameterStack, firValueParameter.returnTypeRef)
|
javaDefaultValue.toFirExpression(session, javaTypeParameterStackSnapshot, firValueParameter.returnTypeRef)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-2
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.java
|
package org.jetbrains.kotlin.fir.java
|
||||||
@@ -28,6 +28,13 @@ class MutableJavaTypeParameterStack : JavaTypeParameterStack() {
|
|||||||
return typeParameterMap.iterator()
|
return typeParameterMap.iterator()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun snapshot(): JavaTypeParameterStack {
|
||||||
|
val snapshot = typeParameterMap.toMap()
|
||||||
|
return object : JavaTypeParameterStack() {
|
||||||
|
override fun get(javaTypeParameter: JavaTypeParameter): FirTypeParameterSymbol = snapshot.getValue(javaTypeParameter)
|
||||||
|
override fun iterator(): Iterator<Map.Entry<JavaTypeParameter, FirTypeParameterSymbol>> = snapshot.iterator()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class JavaTypeParameterStack : Iterable<Map.Entry<JavaTypeParameter, FirTypeParameterSymbol>> {
|
abstract class JavaTypeParameterStack : Iterable<Map.Entry<JavaTypeParameter, FirTypeParameterSymbol>> {
|
||||||
|
|||||||
+9
-3
@@ -39,10 +39,16 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
|
|||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val symbol: FirValueParameterSymbol,
|
override val symbol: FirValueParameterSymbol,
|
||||||
annotationBuilder: () -> List<FirAnnotation>,
|
annotationBuilder: () -> List<FirAnnotation>,
|
||||||
override var defaultValue: FirExpression?,
|
var lazyDefaultValue: Lazy<FirExpression>?,
|
||||||
override val containingFunctionSymbol: FirFunctionSymbol<*>,
|
override val containingFunctionSymbol: FirFunctionSymbol<*>,
|
||||||
override val isVararg: Boolean,
|
override val isVararg: Boolean,
|
||||||
) : FirValueParameter() {
|
) : FirValueParameter() {
|
||||||
|
override var defaultValue: FirExpression?
|
||||||
|
get() = lazyDefaultValue?.value
|
||||||
|
set(value) {
|
||||||
|
lazyDefaultValue = value?.let(::lazyOf)
|
||||||
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
|
|
||||||
@@ -210,7 +216,7 @@ class FirJavaValueParameterBuilder {
|
|||||||
lateinit var returnTypeRef: FirTypeRef
|
lateinit var returnTypeRef: FirTypeRef
|
||||||
lateinit var name: Name
|
lateinit var name: Name
|
||||||
lateinit var annotationBuilder: () -> List<FirAnnotation>
|
lateinit var annotationBuilder: () -> List<FirAnnotation>
|
||||||
var defaultValue: FirExpression? = null
|
var defaultValue: Lazy<FirExpression>? = null
|
||||||
lateinit var containingFunctionSymbol: FirFunctionSymbol<*>
|
lateinit var containingFunctionSymbol: FirFunctionSymbol<*>
|
||||||
var isVararg: Boolean by Delegates.notNull()
|
var isVararg: Boolean by Delegates.notNull()
|
||||||
var isFromSource: Boolean by Delegates.notNull()
|
var isFromSource: Boolean by Delegates.notNull()
|
||||||
@@ -252,7 +258,7 @@ inline fun buildJavaValueParameterCopy(original: FirValueParameter, init: FirJav
|
|||||||
copyBuilder.name = original.name
|
copyBuilder.name = original.name
|
||||||
val annotations = original.annotations
|
val annotations = original.annotations
|
||||||
copyBuilder.annotationBuilder = { annotations }
|
copyBuilder.annotationBuilder = { annotations }
|
||||||
copyBuilder.defaultValue = original.defaultValue
|
copyBuilder.defaultValue = if (original is FirJavaValueParameter) original.lazyDefaultValue else original.defaultValue?.let(::lazyOf)
|
||||||
copyBuilder.containingFunctionSymbol = original.containingFunctionSymbol
|
copyBuilder.containingFunctionSymbol = original.containingFunctionSymbol
|
||||||
copyBuilder.isVararg = original.isVararg
|
copyBuilder.isVararg = original.isVararg
|
||||||
return copyBuilder.apply(init).build()
|
return copyBuilder.apply(init).build()
|
||||||
|
|||||||
-1
@@ -1,6 +1,5 @@
|
|||||||
// IGNORE_LIGHT_ANALYSIS
|
// IGNORE_LIGHT_ANALYSIS
|
||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// MUTE_LL_FIR: KT-62776
|
|
||||||
// FILE: ArrayAnnEnumJava.java
|
// FILE: ArrayAnnEnumJava.java
|
||||||
package light.ann.array;
|
package light.ann.array;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user