[FIR] Rename FirAnnotation.coneClassLikeType to unexpanded

The same reason
This commit is contained in:
Nikolay Lunyak
2023-01-10 20:48:37 +02:00
committed by Space Team
parent 0c86294ca4
commit f671a8c8a7
10 changed files with 26 additions and 21 deletions
@@ -14,13 +14,13 @@ import org.jetbrains.kotlin.fir.analysis.js.checkers.isEffectivelyExternal
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors
import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.expressions.coneClassLikeType import org.jetbrains.kotlin.fir.expressions.unexpandedConeClassLikeType
import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.toSymbol
object FirJsRuntimeAnnotationChecker : FirBasicDeclarationChecker() { object FirJsRuntimeAnnotationChecker : FirBasicDeclarationChecker() {
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
for (annotation in declaration.annotations) { for (annotation in declaration.annotations) {
val annotationClass = annotation.coneClassLikeType?.lookupTag?.toSymbol(context.session) ?: continue val annotationClass = annotation.unexpandedConeClassLikeType?.lookupTag?.toSymbol(context.session) ?: continue
if (annotationClass.getExplicitAnnotationRetention(context.session) != AnnotationRetention.RUNTIME) continue if (annotationClass.getExplicitAnnotationRetention(context.session) != AnnotationRetention.RUNTIME) continue
if (declaration is FirMemberDeclaration && declaration.symbol.isEffectivelyExternal(context)) { if (declaration is FirMemberDeclaration && declaration.symbol.isEffectivelyExternal(context)) {
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirBasicDeclarationChecker import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirBasicDeclarationChecker
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.classId import org.jetbrains.kotlin.fir.expressions.unexpandedClassId
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.StandardClassIds.Annotations.Repeatable import org.jetbrains.kotlin.name.StandardClassIds.Annotations.Repeatable
import org.jetbrains.kotlin.name.StandardClassIds.Annotations.JvmRepeatable import org.jetbrains.kotlin.name.StandardClassIds.Annotations.JvmRepeatable
@@ -30,8 +30,8 @@ object FirJvmRedundantRepeatableChecker : FirBasicDeclarationChecker() {
reporter.reportOn( reporter.reportOn(
kotlinRepeatable.source, kotlinRepeatable.source,
FirJvmErrors.REDUNDANT_REPEATABLE_ANNOTATION, FirJvmErrors.REDUNDANT_REPEATABLE_ANNOTATION,
kotlinRepeatable.classId?.asSingleFqName() ?: FqName.ROOT, kotlinRepeatable.unexpandedClassId?.asSingleFqName() ?: FqName.ROOT,
javaRepeatable.classId?.asSingleFqName() ?: FqName.ROOT, javaRepeatable.unexpandedClassId?.asSingleFqName() ?: FqName.ROOT,
context context
) )
} }
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.unsubstitutedScope
import org.jetbrains.kotlin.fir.analysis.diagnostics.native.FirNativeErrors.REDUNDANT_SWIFT_REFINEMENT import org.jetbrains.kotlin.fir.analysis.diagnostics.native.FirNativeErrors.REDUNDANT_SWIFT_REFINEMENT
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.coneClassLikeType import org.jetbrains.kotlin.fir.expressions.unexpandedConeClassLikeType
import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
@@ -44,7 +44,8 @@ object FirNativeObjCRefinementChecker : FirCallableDeclarationChecker() {
val objCAnnotations = mutableListOf<FirAnnotation>() val objCAnnotations = mutableListOf<FirAnnotation>()
val swiftAnnotations = mutableListOf<FirAnnotation>() val swiftAnnotations = mutableListOf<FirAnnotation>()
for (annotation in annotations) { for (annotation in annotations) {
val metaAnnotations = annotation.coneClassLikeType?.lookupTag?.toSymbol(session)?.resolvedAnnotationsWithClassIds.orEmpty() val metaAnnotations = annotation.unexpandedConeClassLikeType?.lookupTag
?.toSymbol(session)?.resolvedAnnotationsWithClassIds.orEmpty()
for (metaAnnotation in metaAnnotations) { for (metaAnnotation in metaAnnotations) {
when (metaAnnotation.toAnnotationClassId(session)) { when (metaAnnotation.toAnnotationClassId(session)) {
hidesFromObjCClassId -> { hidesFromObjCClassId -> {
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.coneClassLikeType import org.jetbrains.kotlin.fir.expressions.unexpandedConeClassLikeType
import org.jetbrains.kotlin.fir.isIntersectionOverride import org.jetbrains.kotlin.fir.isIntersectionOverride
import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.toSymbol
@@ -83,7 +83,8 @@ object FirNativeObjCRefinementOverridesChecker : FirClassChecker() {
var hasObjC = false var hasObjC = false
var hasSwift = false var hasSwift = false
for (annotation in resolvedAnnotationsWithClassIds) { for (annotation in resolvedAnnotationsWithClassIds) {
val metaAnnotations = annotation.coneClassLikeType?.lookupTag?.toSymbol(session)?.resolvedAnnotationsWithClassIds.orEmpty() val metaAnnotations = annotation.unexpandedConeClassLikeType?.lookupTag
?.toSymbol(session)?.resolvedAnnotationsWithClassIds.orEmpty()
for (metaAnnotation in metaAnnotations) { for (metaAnnotation in metaAnnotations) {
when (metaAnnotation.toAnnotationClassId(session)) { when (metaAnnotation.toAnnotationClassId(session)) {
hidesFromObjCClassId -> { hidesFromObjCClassId -> {
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.backend
import org.jetbrains.kotlin.fir.declarations.getAnnotationsByClassId import org.jetbrains.kotlin.fir.declarations.getAnnotationsByClassId
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.classId import org.jetbrains.kotlin.fir.expressions.unexpandedConeClassLikeType
import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.languageVersionSettings
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
@@ -148,7 +148,10 @@ class Fir2IrTypeConverter(
} }
for (attributeAnnotation in attributes.customAnnotations) { for (attributeAnnotation in attributes.customAnnotations) {
if (annotations.any { it.classId == attributeAnnotation.classId }) continue val isAlreadyPresentInAnnotations = annotations.any {
it.unexpandedConeClassLikeType == attributeAnnotation.unexpandedConeClassLikeType
}
if (isAlreadyPresentInAnnotations) continue
typeAnnotations += callGenerator.convertToIrConstructorCall(attributeAnnotation) as? IrConstructorCall ?: continue typeAnnotations += callGenerator.convertToIrConstructorCall(attributeAnnotation) as? IrConstructorCall ?: continue
} }
val expandedType = fullyExpandedType(session) val expandedType = fullyExpandedType(session)
@@ -28,13 +28,13 @@ class FirAnnotationTypeQualifierResolver(
) : AbstractAnnotationTypeQualifierResolver<FirAnnotation>(javaTypeEnhancementState), FirSessionComponent { ) : AbstractAnnotationTypeQualifierResolver<FirAnnotation>(javaTypeEnhancementState), FirSessionComponent {
override val FirAnnotation.metaAnnotations: Iterable<FirAnnotation> override val FirAnnotation.metaAnnotations: Iterable<FirAnnotation>
get() = coneClassLikeType?.lookupTag?.toSymbol(session)?.fir?.annotations.orEmpty() get() = unexpandedConeClassLikeType?.lookupTag?.toSymbol(session)?.fir?.annotations.orEmpty()
override val FirAnnotation.key: Any override val FirAnnotation.key: Any
get() = coneClassLikeType!!.lookupTag get() = unexpandedConeClassLikeType!!.lookupTag
override val FirAnnotation.fqName: FqName? override val FirAnnotation.fqName: FqName?
get() = coneClassLikeType?.lookupTag?.classId?.asSingleFqName() get() = unexpandedConeClassLikeType?.lookupTag?.classId?.asSingleFqName()
override fun FirAnnotation.enumArguments(onlyValue: Boolean): Iterable<String> = override fun FirAnnotation.enumArguments(onlyValue: Boolean): Iterable<String> =
argumentMapping.mapping.values.flatMap { argument -> argumentMapping.mapping.values.flatMap { argument ->
@@ -119,8 +119,8 @@ fun List<FirAnnotation>.computeTypeAttributes(session: FirSession, predefined: L
} }
private fun FirAnnotation.tryExpandClassId(session: FirSession): ClassId? { private fun FirAnnotation.tryExpandClassId(session: FirSession): ClassId? {
return when (val directlyExpanded = coneClassLikeType?.directExpansionType(session) { it.expandedConeType }) { return when (val directlyExpanded = unexpandedConeClassLikeType?.directExpansionType(session) { it.expandedConeType }) {
null -> coneClassLikeType?.classId // mutually recursive typealiases null -> unexpandedConeClassLikeType?.classId // mutually recursive typealiases
else -> directlyExpanded.fullyExpandedType(session).classId else -> directlyExpanded.fullyExpandedType(session).classId
} }
} }
@@ -231,4 +231,4 @@ fun hasLowPriorityAnnotation(annotations: List<FirAnnotation>) = annotations.any
} }
fun FirAnnotation.fullyExpandedClassId(useSiteSession: FirSession): ClassId? = fun FirAnnotation.fullyExpandedClassId(useSiteSession: FirSession): ClassId? =
coneClassLikeType?.fullyExpandedType(useSiteSession)?.classId unexpandedConeClassLikeType?.fullyExpandedType(useSiteSession)?.classId
@@ -29,11 +29,11 @@ import org.jetbrains.kotlin.fir.visitors.transformInplace
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.types.ConstantValueKind import org.jetbrains.kotlin.types.ConstantValueKind
inline val FirAnnotation.coneClassLikeType: ConeClassLikeType? inline val FirAnnotation.unexpandedConeClassLikeType: ConeClassLikeType?
get() = ((annotationTypeRef as? FirResolvedTypeRef)?.type as? ConeClassLikeType) get() = ((annotationTypeRef as? FirResolvedTypeRef)?.type as? ConeClassLikeType)
inline val FirAnnotation.unexpandedClassId: ClassId? inline val FirAnnotation.unexpandedClassId: ClassId?
get() = coneClassLikeType?.lookupTag?.classId get() = unexpandedConeClassLikeType?.lookupTag?.classId
fun <T> buildConstOrErrorExpression(source: KtSourceElement?, kind: ConstantValueKind<T>, value: T?, diagnostic: ConeDiagnostic): FirExpression = fun <T> buildConstOrErrorExpression(source: KtSourceElement?, kind: ConstantValueKind<T>, value: T?, diagnostic: ConeDiagnostic): FirExpression =
value?.let { value?.let {
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.lombok.k2.generators
import com.intellij.psi.PsiField import com.intellij.psi.PsiField
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.classId import org.jetbrains.kotlin.fir.expressions.unexpandedClassId
import org.jetbrains.kotlin.fir.java.declarations.FirJavaField import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.SymbolInternals
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
@@ -33,6 +33,6 @@ class RequiredArgsConstructorGeneratorPart(session: FirSession) : AbstractConstr
val hasInitializer = (source?.psi as? PsiField)?.hasInitializer() ?: false val hasInitializer = (source?.psi as? PsiField)?.hasInitializer() ?: false
if (hasInitializer) return false if (hasInitializer) return false
if (isVal) return true if (isVal) return true
return annotations.any { it.classId?.asSingleFqName() in LombokNames.NON_NULL_ANNOTATIONS } return annotations.any { it.unexpandedClassId?.asSingleFqName() in LombokNames.NON_NULL_ANNOTATIONS }
} }
} }