diff --git a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/enum.fir.txt b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/enum.fir.txt index 76e0c5910bf..76aebf6029f 100644 --- a/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/enum.fir.txt +++ b/analysis/low-level-api-fir/testdata/innerDeclarationsResolve/enum.fir.txt @@ -21,6 +21,6 @@ FILE: enum.kt } public final static [BODY_RESOLVE] val entries: R|kotlin/enums/EnumEntries| - public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| + public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries| } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt b/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt index cc85e3f1375..6ae721d8e79 100644 --- a/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt +++ b/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt @@ -7,13 +7,13 @@ FILE: annotationParameters.kt } public final static [RAW_FIR] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [RAW_FIR] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [RAW_FIR] [ContainingClassKey=X] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public final static [RAW_FIR] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| } @@ -45,13 +45,13 @@ FILE: annotationParameters.kt } public final static [RAW_FIR] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [RAW_FIR] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [RAW_FIR] [ContainingClassKey=X] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public final static [RAW_FIR] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| } @@ -83,13 +83,13 @@ FILE: annotationParameters.kt } public final static [RAW_FIR] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [RAW_FIR] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [RAW_FIR] [ContainingClassKey=X] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public final static [RAW_FIR] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| } @@ -121,13 +121,13 @@ FILE: annotationParameters.kt } public final static [RAW_FIR] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [RAW_FIR] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [RAW_FIR] [ContainingClassKey=X] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public final static [RAW_FIR] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| } @@ -159,13 +159,13 @@ FILE: annotationParameters.kt } public final static [RAW_FIR] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [RAW_FIR] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [RAW_FIR] [ContainingClassKey=X] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public final static [RAW_FIR] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| } @@ -197,13 +197,13 @@ FILE: annotationParameters.kt } public final static [RAW_FIR] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [RAW_FIR] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [RAW_FIR] [ContainingClassKey=X] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public final static [RAW_FIR] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| } @@ -235,13 +235,13 @@ FILE: annotationParameters.kt } public final static [RAW_FIR] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [RAW_FIR] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [RAW_FIR] [ContainingClassKey=X] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public final static [RAW_FIR] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| } @@ -273,14 +273,14 @@ FILE: annotationParameters.kt } public final static [STATUS] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [STATUS] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [STATUS] [ContainingClassKey=X] fun valueOf([STATUS] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| - public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| + public final static [STATUS] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public [STATUS] get(): R|kotlin/enums/EnumEntries| } public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { @@ -311,14 +311,14 @@ FILE: annotationParameters.kt } public final static [STATUS] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [STATUS] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [STATUS] [ContainingClassKey=X] fun valueOf([STATUS] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| - public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| + public final static [STATUS] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public [STATUS] get(): R|kotlin/enums/EnumEntries| } public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { @@ -350,14 +350,14 @@ FILE: annotationParameters.kt } public final static [STATUS] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [STATUS] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [STATUS] [ContainingClassKey=X] fun valueOf([STATUS] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| - public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| + public final static [STATUS] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public [STATUS] get(): R|kotlin/enums/EnumEntries| } public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { @@ -389,14 +389,14 @@ FILE: annotationParameters.kt } public final static [STATUS] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [STATUS] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [STATUS] [ContainingClassKey=X] fun valueOf([STATUS] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| - public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| + public final static [STATUS] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public [STATUS] get(): R|kotlin/enums/EnumEntries| } public final [SUPER_TYPES] annotation class Anno : R|kotlin/Annotation| { @@ -428,14 +428,14 @@ FILE: annotationParameters.kt } public final static [STATUS] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [STATUS] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [STATUS] [ContainingClassKey=X] fun valueOf([STATUS] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| - public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| + public final static [STATUS] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public [STATUS] get(): R|kotlin/enums/EnumEntries| } public final [SUPER_TYPES] annotation class Anno : R|kotlin/Annotation| { @@ -467,14 +467,14 @@ FILE: annotationParameters.kt } public final static [STATUS] [ContainingClassKey=X] enum entry A: R|X| - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun values(): R|kotlin/Array| { + public final static [STATUS] [ContainingClassKey=X] fun values(): R|kotlin/Array| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|X| { + public final static [STATUS] [ContainingClassKey=X] fun valueOf([STATUS] value: R|kotlin/String|): R|X| { } - public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| - public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| + public final static [STATUS] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| + public [STATUS] get(): R|kotlin/enums/EnumEntries| } public final [SUPER_TYPES] annotation class Anno : R|kotlin/Annotation| { @@ -513,7 +513,7 @@ FILE: annotationParameters.kt } public final static [BODY_RESOLVE] [ContainingClassKey=X] val entries: R|kotlin/enums/EnumEntries| - public [RAW_FIR] get(): R|kotlin/enums/EnumEntries| + public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries| } public final [BODY_RESOLVE] annotation class Anno : R|kotlin/Annotation| { diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt index 62cf9244dc2..e258f39bb2f 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt @@ -245,6 +245,7 @@ abstract class FirJavaFacade( val classIsAnnotation = javaClass.classKind == ClassKind.ANNOTATION_CLASS val moduleData = getModuleDataForClass(javaClass) return buildJavaClass { + resolvePhase = FirResolvePhase.BODY_RESOLVE source = javaClass.toSourceElement() this.moduleData = moduleData symbol = classSymbol diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/EnumClassUtils.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/EnumClassUtils.kt index 52f49c8033b..ce3588baca5 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/EnumClassUtils.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/EnumClassUtils.kt @@ -15,8 +15,10 @@ import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fakeElement import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus -import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.declarations.builder.* +import org.jetbrains.kotlin.fir.declarations.builder.FirRegularClassBuilder +import org.jetbrains.kotlin.fir.declarations.builder.buildProperty +import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction +import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl @@ -55,7 +57,7 @@ fun FirRegularClassBuilder.generateValuesFunction( isExpect = makeExpect } symbol = FirNamedFunctionSymbol(CallableId(packageFqName, classFqName, ENUM_VALUES)) - resolvePhase = FirResolvePhase.BODY_RESOLVE + resolvePhase = this@generateValuesFunction.resolvePhase body = buildEmptyExpressionBlock().also { it.replaceTypeRef(returnTypeRef) } @@ -104,9 +106,9 @@ fun FirRegularClassBuilder.generateValueOfFunction( isCrossinline = false isNoinline = false isVararg = false - resolvePhase = FirResolvePhase.BODY_RESOLVE + resolvePhase = this@generateValueOfFunction.resolvePhase } - resolvePhase = FirResolvePhase.BODY_RESOLVE + resolvePhase = this@generateValueOfFunction.resolvePhase body = buildEmptyExpressionBlock().also { it.replaceTypeRef(returnTypeRef) } @@ -141,7 +143,7 @@ fun FirRegularClassBuilder.generateEntriesGetter( isExpect = makeExpect } symbol = FirPropertySymbol(CallableId(packageFqName, classFqName, ENUM_ENTRIES)) - resolvePhase = FirResolvePhase.BODY_RESOLVE + resolvePhase = this@generateEntriesGetter.resolvePhase getter = FirDefaultPropertyGetter( sourceElement?.fakeElement(KtFakeSourceElementKind.EnumGeneratedDeclaration), moduleData, FirDeclarationOrigin.Source, returnTypeRef.copyWithNewSourceKind(KtFakeSourceElementKind.EnumGeneratedDeclaration),