[FIR] move deprecations calculation on TYPES phase
can be moved to COMPILER_REQUIRED_ANNOTATIONS phase in the future ^KT-57256 Fixed
This commit is contained in:
committed by
Space Team
parent
f644eb7988
commit
19dbe69651
+12
@@ -9350,6 +9350,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
|
|||||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt");
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deprecatedEnumEntry.kt")
|
||||||
|
public void testDeprecatedEnumEntry() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedEnumEntry.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("deprecatedError.kt")
|
@TestMetadata("deprecatedError.kt")
|
||||||
public void testDeprecatedError() throws Exception {
|
public void testDeprecatedError() throws Exception {
|
||||||
@@ -9362,6 +9368,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
|
|||||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt");
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deprecatedField.kt")
|
||||||
|
public void testDeprecatedField() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedField.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("deprecatedHidden.kt")
|
@TestMetadata("deprecatedHidden.kt")
|
||||||
public void testDeprecatedHidden() throws Exception {
|
public void testDeprecatedHidden() throws Exception {
|
||||||
|
|||||||
+12
@@ -9350,6 +9350,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
|||||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt");
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deprecatedEnumEntry.kt")
|
||||||
|
public void testDeprecatedEnumEntry() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedEnumEntry.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("deprecatedError.kt")
|
@TestMetadata("deprecatedError.kt")
|
||||||
public void testDeprecatedError() throws Exception {
|
public void testDeprecatedError() throws Exception {
|
||||||
@@ -9362,6 +9368,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
|||||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt");
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deprecatedField.kt")
|
||||||
|
public void testDeprecatedField() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedField.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("deprecatedHidden.kt")
|
@TestMetadata("deprecatedHidden.kt")
|
||||||
public void testDeprecatedHidden() throws Exception {
|
public void testDeprecatedHidden() throws Exception {
|
||||||
|
|||||||
+12
@@ -9350,6 +9350,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
|
|||||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt");
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deprecatedEnumEntry.kt")
|
||||||
|
public void testDeprecatedEnumEntry() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedEnumEntry.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("deprecatedError.kt")
|
@TestMetadata("deprecatedError.kt")
|
||||||
public void testDeprecatedError() throws Exception {
|
public void testDeprecatedError() throws Exception {
|
||||||
@@ -9362,6 +9368,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
|
|||||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt");
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deprecatedField.kt")
|
||||||
|
public void testDeprecatedField() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedField.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("deprecatedHidden.kt")
|
@TestMetadata("deprecatedHidden.kt")
|
||||||
public void testDeprecatedHidden() throws Exception {
|
public void testDeprecatedHidden() throws Exception {
|
||||||
|
|||||||
+12
@@ -9356,6 +9356,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
|
|||||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt");
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deprecatedEnumEntry.kt")
|
||||||
|
public void testDeprecatedEnumEntry() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedEnumEntry.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("deprecatedError.kt")
|
@TestMetadata("deprecatedError.kt")
|
||||||
public void testDeprecatedError() throws Exception {
|
public void testDeprecatedError() throws Exception {
|
||||||
@@ -9368,6 +9374,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
|
|||||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt");
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deprecatedField.kt")
|
||||||
|
public void testDeprecatedField() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedField.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("deprecatedHidden.kt")
|
@TestMetadata("deprecatedHidden.kt")
|
||||||
public void testDeprecatedHidden() throws Exception {
|
public void testDeprecatedHidden() throws Exception {
|
||||||
|
|||||||
-12
@@ -387,7 +387,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
data: FirResolvedDeclarationStatus?
|
data: FirResolvedDeclarationStatus?
|
||||||
): FirStatement = whileAnalysing(session, constructor) {
|
): FirStatement = whileAnalysing(session, constructor) {
|
||||||
constructor.transformStatus(this, statusResolver.resolveStatus(constructor, containingClass, isLocal = false))
|
constructor.transformStatus(this, statusResolver.resolveStatus(constructor, containingClass, isLocal = false))
|
||||||
calculateDeprecations(constructor)
|
|
||||||
return transformDeclaration(constructor, data) as FirStatement
|
return transformDeclaration(constructor, data) as FirStatement
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -397,7 +396,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
): FirStatement = whileAnalysing(session, simpleFunction) {
|
): FirStatement = whileAnalysing(session, simpleFunction) {
|
||||||
val resolvedStatus = statusResolver.resolveStatus(simpleFunction, containingClass, isLocal = false)
|
val resolvedStatus = statusResolver.resolveStatus(simpleFunction, containingClass, isLocal = false)
|
||||||
simpleFunction.transformStatus(this, resolvedStatus)
|
simpleFunction.transformStatus(this, resolvedStatus)
|
||||||
calculateDeprecations(simpleFunction)
|
|
||||||
return transformDeclaration(simpleFunction, data) as FirStatement
|
return transformDeclaration(simpleFunction, data) as FirStatement
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -429,7 +427,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
calculateDeprecations(property)
|
|
||||||
return property
|
return property
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -438,7 +435,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
data: FirResolvedDeclarationStatus?
|
data: FirResolvedDeclarationStatus?
|
||||||
): FirStatement = whileAnalysing(session, field) {
|
): FirStatement = whileAnalysing(session, field) {
|
||||||
field.transformStatus(this, statusResolver.resolveStatus(field, containingClass, isLocal = false))
|
field.transformStatus(this, statusResolver.resolveStatus(field, containingClass, isLocal = false))
|
||||||
calculateDeprecations(field)
|
|
||||||
return transformDeclaration(field, data) as FirField
|
return transformDeclaration(field, data) as FirField
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -451,7 +447,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
data: FirResolvedDeclarationStatus?
|
data: FirResolvedDeclarationStatus?
|
||||||
): FirStatement = whileAnalysing(session, enumEntry) {
|
): FirStatement = whileAnalysing(session, enumEntry) {
|
||||||
enumEntry.transformStatus(this, statusResolver.resolveStatus(enumEntry, containingClass, isLocal = false))
|
enumEntry.transformStatus(this, statusResolver.resolveStatus(enumEntry, containingClass, isLocal = false))
|
||||||
calculateDeprecations(enumEntry)
|
|
||||||
return transformDeclaration(enumEntry, data) as FirEnumEntry
|
return transformDeclaration(enumEntry, data) as FirEnumEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -459,7 +454,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
valueParameter: FirValueParameter,
|
valueParameter: FirValueParameter,
|
||||||
data: FirResolvedDeclarationStatus?
|
data: FirResolvedDeclarationStatus?
|
||||||
): FirStatement {
|
): FirStatement {
|
||||||
calculateDeprecations(valueParameter)
|
|
||||||
return transformDeclaration(valueParameter, data) as FirStatement
|
return transformDeclaration(valueParameter, data) as FirStatement
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -473,10 +467,4 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
override fun transformBlock(block: FirBlock, data: FirResolvedDeclarationStatus?): FirStatement {
|
override fun transformBlock(block: FirBlock, data: FirResolvedDeclarationStatus?): FirStatement {
|
||||||
return block
|
return block
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun calculateDeprecations(simpleFunction: FirCallableDeclaration) {
|
|
||||||
if (simpleFunction.deprecationsProvider is UnresolvedDeprecationProvider) {
|
|
||||||
simpleFunction.replaceDeprecationsProvider(simpleFunction.getDeprecationsProvider(session))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+12
@@ -133,6 +133,7 @@ open class FirTypeResolveTransformer(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
calculateDeprecations(result)
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -148,6 +149,7 @@ open class FirTypeResolveTransformer(
|
|||||||
enumEntry.transformReturnTypeRef(this, data)
|
enumEntry.transformReturnTypeRef(this, data)
|
||||||
enumEntry.transformTypeParameters(this, data)
|
enumEntry.transformTypeParameters(this, data)
|
||||||
enumEntry.transformAnnotations(this, data)
|
enumEntry.transformAnnotations(this, data)
|
||||||
|
calculateDeprecations(enumEntry)
|
||||||
enumEntry
|
enumEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,6 +194,7 @@ open class FirTypeResolveTransformer(
|
|||||||
property.removeDuplicateAnnotationsOfPrimaryConstructorElement()
|
property.removeDuplicateAnnotationsOfPrimaryConstructorElement()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
calculateDeprecations(property)
|
||||||
property
|
property
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,6 +208,7 @@ open class FirTypeResolveTransformer(
|
|||||||
override fun transformField(field: FirField, data: Any?): FirField = whileAnalysing(session, field) {
|
override fun transformField(field: FirField, data: Any?): FirField = whileAnalysing(session, field) {
|
||||||
withScopeCleanup {
|
withScopeCleanup {
|
||||||
field.transformReturnTypeRef(this, data).transformAnnotations(this, data)
|
field.transformReturnTypeRef(this, data).transformAnnotations(this, data)
|
||||||
|
calculateDeprecations(field)
|
||||||
field
|
field
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -218,6 +222,7 @@ open class FirTypeResolveTransformer(
|
|||||||
simpleFunction.addTypeParametersScope()
|
simpleFunction.addTypeParametersScope()
|
||||||
transformDeclaration(simpleFunction, data).also {
|
transformDeclaration(simpleFunction, data).also {
|
||||||
unboundCyclesInTypeParametersSupertypes(it as FirTypeParametersOwner)
|
unboundCyclesInTypeParametersSupertypes(it as FirTypeParametersOwner)
|
||||||
|
calculateDeprecations(simpleFunction)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} as FirSimpleFunction
|
} as FirSimpleFunction
|
||||||
@@ -282,6 +287,7 @@ open class FirTypeResolveTransformer(
|
|||||||
valueParameter.transformReturnTypeRef(this, data)
|
valueParameter.transformReturnTypeRef(this, data)
|
||||||
valueParameter.transformAnnotations(this, data)
|
valueParameter.transformAnnotations(this, data)
|
||||||
valueParameter.transformVarargTypeToArrayType()
|
valueParameter.transformVarargTypeToArrayType()
|
||||||
|
calculateDeprecations(valueParameter)
|
||||||
valueParameter
|
valueParameter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -457,4 +463,10 @@ open class FirTypeResolveTransformer(
|
|||||||
AnnotationUseSiteTarget.CONSTRUCTOR_PARAMETER in it.useSiteTargetsFromMetaAnnotation(session) == isParameter
|
AnnotationUseSiteTarget.CONSTRUCTOR_PARAMETER in it.useSiteTargetsFromMetaAnnotation(session) == isParameter
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun calculateDeprecations(callableDeclaration: FirCallableDeclaration) {
|
||||||
|
if (callableDeclaration.deprecationsProvider is UnresolvedDeprecationProvider) {
|
||||||
|
callableDeclaration.replaceDeprecationsProvider(callableDeclaration.getDeprecationsProvider(session))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,8 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
|
|||||||
|
|
||||||
fun getDeprecation(apiVersion: ApiVersion): DeprecationsPerUseSite? {
|
fun getDeprecation(apiVersion: ApiVersion): DeprecationsPerUseSite? {
|
||||||
if (!canBeDeprecated()) return null
|
if (!canBeDeprecated()) return null
|
||||||
lazyResolveToPhase(FirResolvePhase.STATUS)
|
|
||||||
|
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
return fir.deprecationsProvider.getDeprecationsInfo(apiVersion)
|
return fir.deprecationsProvider.getDeprecationsInfo(apiVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,6 +86,7 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
|
|||||||
else -> lazyResolveToPhase(FirResolvePhase.TYPES)
|
else -> lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun toString(): String = "${this::class.simpleName} $callableId"
|
override fun toString(): String = "${this::class.simpleName} $callableId"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
|
|
||||||
|
// FILE: A.kt
|
||||||
|
enum class A {
|
||||||
|
@Deprecated("")
|
||||||
|
DeprecatedEntry,
|
||||||
|
RegularEntry
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: use.kt
|
||||||
|
fun use() {
|
||||||
|
A.<!DEPRECATION!>DeprecatedEntry<!>
|
||||||
|
A.RegularEntry
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
|
|
||||||
|
// FILE: JavaClass.java
|
||||||
|
public class JavaClass {
|
||||||
|
@Deprecated
|
||||||
|
public int deprecatedField = 4;
|
||||||
|
public int regularField = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: use.kt
|
||||||
|
fun use(j: JavaClass) {
|
||||||
|
j.<!DEPRECATION!>deprecatedField<!>
|
||||||
|
j.regularField
|
||||||
|
}
|
||||||
Generated
+12
@@ -9356,6 +9356,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt");
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deprecatedEnumEntry.kt")
|
||||||
|
public void testDeprecatedEnumEntry() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedEnumEntry.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("deprecatedError.kt")
|
@TestMetadata("deprecatedError.kt")
|
||||||
public void testDeprecatedError() throws Exception {
|
public void testDeprecatedError() throws Exception {
|
||||||
@@ -9368,6 +9374,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt");
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deprecatedField.kt")
|
||||||
|
public void testDeprecatedField() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedField.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("deprecatedHidden.kt")
|
@TestMetadata("deprecatedHidden.kt")
|
||||||
public void testDeprecatedHidden() throws Exception {
|
public void testDeprecatedHidden() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user