[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");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("deprecatedEnumEntry.kt")
|
||||
public void testDeprecatedEnumEntry() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedEnumEntry.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("deprecatedError.kt")
|
||||
public void testDeprecatedError() throws Exception {
|
||||
@@ -9362,6 +9368,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
|
||||
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
|
||||
@TestMetadata("deprecatedHidden.kt")
|
||||
public void testDeprecatedHidden() throws Exception {
|
||||
|
||||
+12
@@ -9350,6 +9350,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
||||
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
|
||||
@TestMetadata("deprecatedError.kt")
|
||||
public void testDeprecatedError() throws Exception {
|
||||
@@ -9362,6 +9368,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
||||
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
|
||||
@TestMetadata("deprecatedHidden.kt")
|
||||
public void testDeprecatedHidden() throws Exception {
|
||||
|
||||
+12
@@ -9350,6 +9350,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
|
||||
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
|
||||
@TestMetadata("deprecatedError.kt")
|
||||
public void testDeprecatedError() throws Exception {
|
||||
@@ -9362,6 +9368,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
|
||||
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
|
||||
@TestMetadata("deprecatedHidden.kt")
|
||||
public void testDeprecatedHidden() throws Exception {
|
||||
|
||||
+12
@@ -9356,6 +9356,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
|
||||
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
|
||||
@TestMetadata("deprecatedError.kt")
|
||||
public void testDeprecatedError() throws Exception {
|
||||
@@ -9368,6 +9374,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
|
||||
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
|
||||
@TestMetadata("deprecatedHidden.kt")
|
||||
public void testDeprecatedHidden() throws Exception {
|
||||
|
||||
-12
@@ -387,7 +387,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(session, constructor) {
|
||||
constructor.transformStatus(this, statusResolver.resolveStatus(constructor, containingClass, isLocal = false))
|
||||
calculateDeprecations(constructor)
|
||||
return transformDeclaration(constructor, data) as FirStatement
|
||||
}
|
||||
|
||||
@@ -397,7 +396,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
): FirStatement = whileAnalysing(session, simpleFunction) {
|
||||
val resolvedStatus = statusResolver.resolveStatus(simpleFunction, containingClass, isLocal = false)
|
||||
simpleFunction.transformStatus(this, resolvedStatus)
|
||||
calculateDeprecations(simpleFunction)
|
||||
return transformDeclaration(simpleFunction, data) as FirStatement
|
||||
}
|
||||
|
||||
@@ -429,7 +427,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
)
|
||||
}
|
||||
|
||||
calculateDeprecations(property)
|
||||
return property
|
||||
}
|
||||
|
||||
@@ -438,7 +435,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(session, field) {
|
||||
field.transformStatus(this, statusResolver.resolveStatus(field, containingClass, isLocal = false))
|
||||
calculateDeprecations(field)
|
||||
return transformDeclaration(field, data) as FirField
|
||||
}
|
||||
|
||||
@@ -451,7 +447,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(session, enumEntry) {
|
||||
enumEntry.transformStatus(this, statusResolver.resolveStatus(enumEntry, containingClass, isLocal = false))
|
||||
calculateDeprecations(enumEntry)
|
||||
return transformDeclaration(enumEntry, data) as FirEnumEntry
|
||||
}
|
||||
|
||||
@@ -459,7 +454,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
valueParameter: FirValueParameter,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement {
|
||||
calculateDeprecations(valueParameter)
|
||||
return transformDeclaration(valueParameter, data) as FirStatement
|
||||
}
|
||||
|
||||
@@ -473,10 +467,4 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformBlock(block: FirBlock, data: FirResolvedDeclarationStatus?): FirStatement {
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -148,6 +149,7 @@ open class FirTypeResolveTransformer(
|
||||
enumEntry.transformReturnTypeRef(this, data)
|
||||
enumEntry.transformTypeParameters(this, data)
|
||||
enumEntry.transformAnnotations(this, data)
|
||||
calculateDeprecations(enumEntry)
|
||||
enumEntry
|
||||
}
|
||||
|
||||
@@ -192,6 +194,7 @@ open class FirTypeResolveTransformer(
|
||||
property.removeDuplicateAnnotationsOfPrimaryConstructorElement()
|
||||
}
|
||||
|
||||
calculateDeprecations(property)
|
||||
property
|
||||
}
|
||||
}
|
||||
@@ -205,6 +208,7 @@ open class FirTypeResolveTransformer(
|
||||
override fun transformField(field: FirField, data: Any?): FirField = whileAnalysing(session, field) {
|
||||
withScopeCleanup {
|
||||
field.transformReturnTypeRef(this, data).transformAnnotations(this, data)
|
||||
calculateDeprecations(field)
|
||||
field
|
||||
}
|
||||
}
|
||||
@@ -218,6 +222,7 @@ open class FirTypeResolveTransformer(
|
||||
simpleFunction.addTypeParametersScope()
|
||||
transformDeclaration(simpleFunction, data).also {
|
||||
unboundCyclesInTypeParametersSupertypes(it as FirTypeParametersOwner)
|
||||
calculateDeprecations(simpleFunction)
|
||||
}
|
||||
}
|
||||
} as FirSimpleFunction
|
||||
@@ -282,6 +287,7 @@ open class FirTypeResolveTransformer(
|
||||
valueParameter.transformReturnTypeRef(this, data)
|
||||
valueParameter.transformAnnotations(this, data)
|
||||
valueParameter.transformVarargTypeToArrayType()
|
||||
calculateDeprecations(valueParameter)
|
||||
valueParameter
|
||||
}
|
||||
}
|
||||
@@ -457,4 +463,10 @@ open class FirTypeResolveTransformer(
|
||||
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? {
|
||||
if (!canBeDeprecated()) return null
|
||||
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||
|
||||
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||
return fir.deprecationsProvider.getDeprecationsInfo(apiVersion)
|
||||
}
|
||||
|
||||
@@ -85,6 +86,7 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
|
||||
else -> lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||
}
|
||||
}
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("deprecatedEnumEntry.kt")
|
||||
public void testDeprecatedEnumEntry() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedEnumEntry.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("deprecatedError.kt")
|
||||
public void testDeprecatedError() throws Exception {
|
||||
@@ -9368,6 +9374,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
||||
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
|
||||
@TestMetadata("deprecatedHidden.kt")
|
||||
public void testDeprecatedHidden() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user