[FIR] Partial implementation of DEPRECATION(_ERROR) diagnostics
No support for inheritance deprecations and deprecations in qualifier's parts
This commit is contained in:
committed by
teamcityserver
parent
9fad55d551
commit
de3f31cf78
+10
@@ -98,6 +98,16 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
||||
val UNKNOWN_CALLABLE_KIND by error<PsiElement>()
|
||||
val MISSING_STDLIB_CLASS by error<PsiElement>()
|
||||
val NO_THIS by error<PsiElement>()
|
||||
|
||||
val DEPRECATION_ERROR by error<PsiElement>(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) {
|
||||
parameter<Symbol>("reference")
|
||||
parameter<String>("message")
|
||||
}
|
||||
|
||||
val DEPRECATION by warning<PsiElement>(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) {
|
||||
parameter<Symbol>("reference")
|
||||
parameter<String>("message")
|
||||
}
|
||||
}
|
||||
|
||||
val CALL_RESOLUTION by object : DiagnosticGroup("Call resolution") {
|
||||
|
||||
@@ -117,6 +117,8 @@ object FirErrors {
|
||||
val UNKNOWN_CALLABLE_KIND by error0<PsiElement>()
|
||||
val MISSING_STDLIB_CLASS by error0<PsiElement>()
|
||||
val NO_THIS by error0<PsiElement>()
|
||||
val DEPRECATION_ERROR by error2<PsiElement, FirBasedSymbol<*>, String>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
||||
val DEPRECATION by warning2<PsiElement, FirBasedSymbol<*>, String>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
||||
|
||||
// Call resolution
|
||||
val CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS by error0<KtExpression>()
|
||||
|
||||
+1
@@ -20,6 +20,7 @@ object CommonExpressionCheckers : ExpressionCheckers() {
|
||||
get() = setOf(
|
||||
FirReservedUnderscoreExpressionChecker,
|
||||
FirExpressionAnnotationChecker,
|
||||
FirDeprecationChecker,
|
||||
)
|
||||
|
||||
override val qualifiedAccessExpressionCheckers: Set<FirQualifiedAccessExpressionChecker>
|
||||
|
||||
+2
-1
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.type.*
|
||||
object CommonTypeCheckers : TypeCheckers() {
|
||||
override val typeRefCheckers: Set<FirTypeRefChecker> = setOf(
|
||||
FirTypeAnnotationChecker,
|
||||
FirSuspendModifierChecker
|
||||
FirSuspendModifierChecker,
|
||||
FirDeprecatedTypeChecker,
|
||||
)
|
||||
}
|
||||
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.analysis.checkers.expression
|
||||
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.toRegularClass
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirResolvable
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
object FirDeprecationChecker : FirBasicExpressionChecker() {
|
||||
|
||||
private val allowedSourceKinds = setOf(
|
||||
FirRealSourceElementKind,
|
||||
FirFakeSourceElementKind.DesugaredIncrementOrDecrement
|
||||
)
|
||||
|
||||
override fun check(expression: FirStatement, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (!allowedSourceKinds.contains(expression.source?.kind)) return
|
||||
if (expression is FirAnnotationCall) return //checked by FirDeprecatedTypeChecker
|
||||
val resolvable = expression as? FirResolvable ?: return
|
||||
val reference = resolvable.calleeReference as? FirResolvedNamedReference ?: return
|
||||
val referencedFir = reference.resolvedSymbol.fir
|
||||
if (referencedFir !is FirAnnotatedDeclaration) return
|
||||
|
||||
reportDeprecationIfNeeded(expression.source, referencedFir, expression, context, reporter)
|
||||
}
|
||||
|
||||
internal fun <T> reportDeprecationIfNeeded(
|
||||
source: FirSourceElement?,
|
||||
referencedFir: T,
|
||||
callSite: FirElement?,
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter
|
||||
) where T : FirAnnotatedDeclaration {
|
||||
val deprecation = getWorstDeprecation(callSite, referencedFir, context) ?: return
|
||||
val diagnostic = when (deprecation.level) {
|
||||
DeprecationLevelValue.ERROR, DeprecationLevelValue.HIDDEN -> FirErrors.DEPRECATION_ERROR
|
||||
DeprecationLevelValue.WARNING -> FirErrors.DEPRECATION
|
||||
}
|
||||
reporter.reportOn(source, diagnostic, referencedFir.symbol, deprecation.message ?: "", context)
|
||||
}
|
||||
|
||||
private fun <T : FirAnnotatedDeclaration> getWorstDeprecation(
|
||||
callSite: FirElement?,
|
||||
fir: T,
|
||||
context: CheckerContext
|
||||
): Deprecation? {
|
||||
val deprecationInfos = listOfNotNull(
|
||||
fir.getDeprecation(callSite),
|
||||
fir.safeAs<FirConstructor>()?.returnTypeRef
|
||||
?.toRegularClass(context.session)
|
||||
?.getDeprecation(callSite)
|
||||
)
|
||||
return deprecationInfos.maxOrNull()
|
||||
}
|
||||
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.analysis.checkers.type
|
||||
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.findClosest
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirDeprecationChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||
|
||||
object FirDeprecatedTypeChecker : FirTypeRefChecker() {
|
||||
|
||||
override fun check(typeRef: FirTypeRef, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (context.findClosest<FirPropertyAccessor>() != null) return
|
||||
|
||||
val resolved = typeRef.coneTypeSafe<ConeClassLikeType>() ?: return
|
||||
val symbol = resolved.lookupTag.toSymbol(context.session) ?: return
|
||||
val referencedFir = symbol.fir
|
||||
|
||||
FirDeprecationChecker.reportDeprecationIfNeeded(typeRef.source, referencedFir, null, context, reporter)
|
||||
}
|
||||
|
||||
}
|
||||
+3
@@ -12,10 +12,13 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.withSuppressedDiagnostics
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
|
||||
object FirTypeAnnotationChecker : FirTypeRefChecker() {
|
||||
override fun check(typeRef: FirTypeRef, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (typeRef !is FirResolvedTypeRef) return
|
||||
|
||||
for (annotation in typeRef.annotations) {
|
||||
withSuppressedDiagnostics(annotation, context) {
|
||||
val annotationTargets = annotation.getAllowedAnnotationTargets(context.session)
|
||||
|
||||
+9
@@ -180,6 +180,15 @@ abstract class AbstractDiagnosticCollectorVisitor(
|
||||
super.visitResolvedTypeRef(resolvedTypeRef, data)
|
||||
}
|
||||
if (resolvedTypeRef.source?.kind is FirFakeSourceElementKind) return
|
||||
|
||||
//the note about is just wrong
|
||||
//if we don't visit resolved type we can't make any diagnostics on them
|
||||
//so here we check resolvedTypeRef
|
||||
if (resolvedTypeRef.type !is ConeClassErrorType) {
|
||||
withSuppressedDiagnostics(resolvedTypeRef) {
|
||||
checkElement(resolvedTypeRef)
|
||||
}
|
||||
}
|
||||
resolvedTypeRef.delegatedTypeRef?.accept(this, data)
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -110,6 +110,8 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_SINCE_
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_SINCE_KOTLIN_WITH_DEPRECATED_LEVEL
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_SINCE_KOTLIN_WITH_UNORDERED_VERSIONS
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_TYPE_PARAMETER_SYNTAX
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATION
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATION_ERROR
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DESERIALIZATION_ERROR
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DYNAMIC_UPPER_BOUND
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.EMPTY_RANGE
|
||||
@@ -427,6 +429,8 @@ class FirDefaultErrorMessages {
|
||||
map.put(VAL_OR_VAR_ON_FUN_PARAMETER, "''{0}'' on function parameter is not allowed", TO_STRING)
|
||||
map.put(VAL_OR_VAR_ON_CATCH_PARAMETER, "''{0}'' on catch parameter is not allowed", TO_STRING)
|
||||
map.put(VAL_OR_VAR_ON_SECONDARY_CONSTRUCTOR_PARAMETER, "''{0}'' on secondary constructor parameter is not allowed", TO_STRING)
|
||||
map.put(DEPRECATION, "''{0}'' is deprecated. {1}", SYMBOL, STRING)
|
||||
map.put(DEPRECATION_ERROR, "''{0}'' is deprecated. {1}", SYMBOL, STRING)
|
||||
|
||||
// Unresolved
|
||||
map.put(INVISIBLE_REFERENCE, "Symbol {0} is invisible", SYMBOL)
|
||||
|
||||
+7
@@ -522,6 +522,13 @@ object LightTreePositioningStrategies {
|
||||
if (node.tokenType in nodeTypesWithOperation) {
|
||||
return markElement(tree.operationReference(node) ?: node, startOffset, endOffset, tree, node)
|
||||
}
|
||||
if (node.tokenType == KtNodeTypes.TYPE_REFERENCE) {
|
||||
val nodeToMark =
|
||||
tree.findChildByType(node, KtNodeTypes.NULLABLE_TYPE)
|
||||
?.let { tree.findChildByType(it, KtNodeTypes.USER_TYPE) }
|
||||
?: node
|
||||
return markElement(nodeToMark, startOffset, endOffset, tree, node)
|
||||
}
|
||||
if (node.tokenType != KtNodeTypes.DOT_QUALIFIED_EXPRESSION &&
|
||||
node.tokenType != KtNodeTypes.SAFE_ACCESS_EXPRESSION &&
|
||||
node.tokenType != KtNodeTypes.CALLABLE_REFERENCE_EXPRESSION
|
||||
|
||||
@@ -72,16 +72,17 @@ internal class OneElementArrayMap<T : Any>(val value: T, val index: Int) : Array
|
||||
}
|
||||
|
||||
internal class ArrayMapImpl<T : Any> private constructor(
|
||||
private var data: Array<Any?>
|
||||
private var data: Array<Any?>,
|
||||
initialSize: Int
|
||||
) : ArrayMap<T>() {
|
||||
companion object {
|
||||
private const val DEFAULT_SIZE = 20
|
||||
private const val INCREASE_K = 2
|
||||
}
|
||||
|
||||
constructor() : this(arrayOfNulls<Any>(DEFAULT_SIZE))
|
||||
constructor() : this(arrayOfNulls<Any>(DEFAULT_SIZE), 0)
|
||||
|
||||
override var size: Int = 0
|
||||
override var size: Int = initialSize
|
||||
private set
|
||||
|
||||
|
||||
@@ -104,7 +105,7 @@ internal class ArrayMapImpl<T : Any> private constructor(
|
||||
return data.getOrNull(index) as T?
|
||||
}
|
||||
|
||||
override fun copy(): ArrayMap<T> = ArrayMapImpl(data.copyOf())
|
||||
override fun copy(): ArrayMap<T> = ArrayMapImpl(data.copyOf(), size)
|
||||
|
||||
override fun iterator(): Iterator<T> {
|
||||
return object : AbstractIterator<T>() {
|
||||
|
||||
@@ -97,7 +97,8 @@ object FirSessionFactory {
|
||||
dependencyList.moduleDataProvider,
|
||||
librariesScope,
|
||||
project,
|
||||
getPackagePartProvider(librariesScope)
|
||||
getPackagePartProvider(librariesScope),
|
||||
languageVersionSettings
|
||||
)
|
||||
|
||||
val mainModuleData = FirModuleDataImpl(
|
||||
|
||||
+2
@@ -219,6 +219,8 @@ fun deserializeClassToSymbol(
|
||||
|
||||
it.sourceElement = containerSource
|
||||
|
||||
it.replaceDeprecation(it.getDeprecationInfos(session.languageVersionSettings.apiVersion))
|
||||
|
||||
classProto.getExtensionOrNull(JvmProtoBuf.classModuleName)?.let { idx ->
|
||||
it.moduleName = nameResolver.getString(idx)
|
||||
}
|
||||
|
||||
+4
-4
@@ -6,9 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.containingClassAttr
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
|
||||
@@ -20,7 +18,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionStub
|
||||
import org.jetbrains.kotlin.fir.resolve.defaultType
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.toEffectiveVisibility
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.computeTypeAttributes
|
||||
@@ -360,6 +357,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
||||
this.setter = setter
|
||||
this.containerSource = c.containerSource
|
||||
this.initializer = c.constDeserializer.loadConstant(proto, symbol.callableId, c.nameResolver)
|
||||
deprecation = annotations.getDeprecationInfosFromAnnotations(c.session.languageVersionSettings.apiVersion, false)
|
||||
}.apply {
|
||||
versionRequirementsTable = c.versionRequirementTable
|
||||
}
|
||||
@@ -421,6 +419,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
||||
)
|
||||
annotations +=
|
||||
c.annotationDeserializer.loadFunctionAnnotations(c.containerSource, proto, local.nameResolver, local.typeTable)
|
||||
deprecation = annotations.getDeprecationInfosFromAnnotations(c.session.languageVersionSettings.apiVersion, false)
|
||||
this.containerSource = c.containerSource
|
||||
}.apply {
|
||||
versionRequirementsTable = c.versionRequirementTable
|
||||
@@ -491,6 +490,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
||||
annotations +=
|
||||
c.annotationDeserializer.loadConstructorAnnotations(c.containerSource, proto, local.nameResolver, local.typeTable)
|
||||
containerSource = c.containerSource
|
||||
deprecation = annotations.getDeprecationInfosFromAnnotations(c.session.languageVersionSettings.apiVersion, false)
|
||||
}.build().apply {
|
||||
containingClassAttr = c.dispatchReceiver!!.lookupTag
|
||||
versionRequirementsTable = c.versionRequirementTable
|
||||
|
||||
@@ -212,6 +212,7 @@ class JavaSymbolProvider(
|
||||
parentClassEffectiveVisibilityCache.remove(classSymbol)
|
||||
firJavaClass.convertSuperTypes(javaClass, javaTypeParameterStack)
|
||||
firJavaClass.addAnnotationsFrom(this@JavaSymbolProvider.session, javaClass, javaTypeParameterStack)
|
||||
firJavaClass.replaceDeprecation(firJavaClass.getDeprecationInfos(session.languageVersionSettings.apiVersion))
|
||||
return firJavaClass
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ class FirJavaClass @FirImplementationDetail internal constructor(
|
||||
) : FirRegularClass() {
|
||||
override val hasLazyNestedClassifiers: Boolean get() = true
|
||||
override val controlFlowGraphReference: FirControlFlowGraphReference? get() = null
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
|
||||
init {
|
||||
symbol.bind(this)
|
||||
@@ -69,6 +70,10 @@ class FirJavaClass @FirImplementationDetail internal constructor(
|
||||
resolvePhase = newResolvePhase
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {}
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
|
||||
@@ -41,6 +41,7 @@ class FirJavaConstructor @FirImplementationDetail constructor(
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
) : FirConstructor() {
|
||||
override val receiverTypeRef: FirTypeRef? get() = null
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
|
||||
init {
|
||||
symbol.bind(this)
|
||||
@@ -132,6 +133,9 @@ class FirJavaConstructor @FirImplementationDetail constructor(
|
||||
}
|
||||
|
||||
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirFieldBuilder
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.languageVersionSettings
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
@@ -59,6 +60,9 @@ class FirJavaField @FirImplementationDetail constructor(
|
||||
|
||||
override val annotations: List<FirAnnotationCall> by lazy { annotationBuilder() }
|
||||
|
||||
override val deprecation: DeprecationsPerUseSite by lazy {
|
||||
annotations.getDeprecationInfosFromAnnotations(moduleData.session.languageVersionSettings.apiVersion, fromJava = true)
|
||||
}
|
||||
|
||||
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirField {
|
||||
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||
@@ -134,6 +138,8 @@ class FirJavaField @FirImplementationDetail constructor(
|
||||
|
||||
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {}
|
||||
|
||||
override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirField {
|
||||
return this
|
||||
}
|
||||
|
||||
@@ -84,6 +84,9 @@ class FirJavaMethod @FirImplementationDetail constructor(
|
||||
|
||||
override val annotations: List<FirAnnotationCall> by lazy { annotationBuilder() }
|
||||
|
||||
//not used actually, because get 'enhanced' into regular FirSimpleFunction
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
returnTypeRef.accept(visitor, data)
|
||||
receiverTypeRef?.accept(visitor, data)
|
||||
@@ -156,6 +159,10 @@ class FirJavaMethod @FirImplementationDetail constructor(
|
||||
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
controlFlowGraphReference = newControlFlowGraphReference
|
||||
}
|
||||
@@ -194,6 +201,13 @@ class FirJavaMethodBuilder : FirFunctionBuilder, FirTypeParametersOwnerBuilder,
|
||||
override var resolvePhase: FirResolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES
|
||||
lateinit var annotationBuilder: () -> List<FirAnnotationCall>
|
||||
|
||||
@Deprecated("Modification of 'deprecation' has no impact for FirJavaFunctionBuilder", level = DeprecationLevel.HIDDEN)
|
||||
override var deprecation: DeprecationsPerUseSite?
|
||||
get() = throw IllegalStateException()
|
||||
set(_) {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
@Deprecated("Modification of 'containerSource' has no impact for FirJavaFunctionBuilder", level = DeprecationLevel.HIDDEN)
|
||||
override var containerSource: DeserializedContainerSource?
|
||||
get() = throw IllegalStateException()
|
||||
@@ -222,7 +236,7 @@ class FirJavaMethodBuilder : FirFunctionBuilder, FirTypeParametersOwnerBuilder,
|
||||
status,
|
||||
symbol,
|
||||
annotationBuilder,
|
||||
dispatchReceiverType,
|
||||
dispatchReceiverType
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -63,6 +63,9 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
|
||||
override val receiverTypeRef: FirTypeRef?
|
||||
get() = null
|
||||
|
||||
override val deprecation: DeprecationsPerUseSite
|
||||
get() = EmptyDeprecationsPerUseSite
|
||||
|
||||
override val initializer: FirExpression?
|
||||
get() = null
|
||||
|
||||
@@ -155,6 +158,10 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
|
||||
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
|
||||
}
|
||||
|
||||
override fun replaceInitializer(newInitializer: FirExpression?) {
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -13,10 +13,9 @@ import org.jetbrains.kotlin.fir.caches.*
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.deserialization.*
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.*
|
||||
import org.jetbrains.kotlin.fir.java.JavaSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.java.topLevelName
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.*
|
||||
import org.jetbrains.kotlin.fir.languageVersionSettings
|
||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.load.java.JavaClassFinder
|
||||
@@ -140,6 +139,7 @@ class KotlinDeserializedJvmSymbolsProvider(
|
||||
kotlinClass.byteContent,
|
||||
)
|
||||
(symbol.fir.annotations as MutableList<FirAnnotationCall>) += annotations
|
||||
symbol.fir.replaceDeprecation(symbol.fir.getDeprecationInfos(session.languageVersionSettings.apiVersion))
|
||||
}
|
||||
|
||||
private fun readClassFromClassFile(classId: ClassId, classFile: KotlinClassFinder.Result.ClassFileContent): FirRegularClassSymbol? {
|
||||
|
||||
+2
@@ -149,6 +149,7 @@ class FirSignatureEnhancement(
|
||||
delegateGetter = enhancedGetterSymbol.fir as FirSimpleFunction
|
||||
delegateSetter = enhancedSetterSymbol?.fir as FirSimpleFunction?
|
||||
status = firElement.status
|
||||
deprecation = getDeprecationsFromAccessors(delegateGetter, delegateSetter, session.languageVersionSettings.apiVersion)
|
||||
}.symbol
|
||||
}
|
||||
else -> {
|
||||
@@ -294,6 +295,7 @@ class FirSignatureEnhancement(
|
||||
else -> throw AssertionError("Unknown Java method to enhance: ${firMethod.render()}")
|
||||
}.apply {
|
||||
annotations += firMethod.annotations
|
||||
deprecation = annotations.getDeprecationInfosFromAnnotations(session.languageVersionSettings.apiVersion, fromJava = true)
|
||||
}.build()
|
||||
|
||||
return function.symbol
|
||||
|
||||
+1
@@ -77,6 +77,7 @@ class JavaClassUseSiteMemberScope(
|
||||
delegateGetter = getterSymbol.fir
|
||||
delegateSetter = setterSymbol?.fir
|
||||
status = getterSymbol.fir.status.copy(newModality = chooseModalityForAccessor(property, delegateGetter))
|
||||
deprecation = getDeprecationsFromAccessors(delegateGetter, delegateSetter, session.languageVersionSettings.apiVersion)
|
||||
}.symbol
|
||||
}
|
||||
}
|
||||
|
||||
+4
-6
@@ -48,20 +48,18 @@ class ValueParameter(
|
||||
}
|
||||
|
||||
return buildProperty {
|
||||
val parameterSource = firValueParameter.source as? FirLightSourceElement
|
||||
val parameterNode = parameterSource?.lighterASTNode
|
||||
source = parameterNode?.toFirLightSourceElement(
|
||||
parameterSource.treeStructure, FirFakeSourceElementKind.PropertyFromParameter
|
||||
)
|
||||
val propertySource = firValueParameter.source?.fakeElement(FirFakeSourceElementKind.PropertyFromParameter)
|
||||
source = propertySource
|
||||
this.moduleData = moduleData
|
||||
origin = FirDeclarationOrigin.Source
|
||||
returnTypeRef = type.copyWithNewSourceKind(FirFakeSourceElementKind.PropertyFromParameter)
|
||||
this.name = name
|
||||
initializer = buildQualifiedAccessExpression {
|
||||
source = firValueParameter.source
|
||||
source = propertySource
|
||||
calleeReference = buildPropertyFromParameterResolvedNamedReference {
|
||||
this.name = name
|
||||
resolvedSymbol = this@ValueParameter.firValueParameter.symbol
|
||||
source = propertySource
|
||||
}
|
||||
}
|
||||
isVar = this@ValueParameter.isVar
|
||||
|
||||
+11
-1
@@ -15,6 +15,8 @@ import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeUnsafe
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -92,7 +94,15 @@ fun FirAnnotatedDeclaration.hasAnnotation(classId: ClassId): Boolean {
|
||||
|
||||
fun FirAnnotationContainer.getAnnotationByFqName(fqName: FqName): FirAnnotationCall? {
|
||||
return annotations.find {
|
||||
(it.annotationTypeRef.coneType as? ConeClassLikeType)?.lookupTag?.classId?.asSingleFqName() == fqName
|
||||
it.annotationTypeRef.coneTypeUnsafe<ConeClassLikeType>().lookupTag.classId.asSingleFqName() == fqName
|
||||
}
|
||||
}
|
||||
|
||||
fun FirAnnotationContainer.getAnnotationsByFqName(fqName: FqName): List<FirAnnotationCall> = annotations.getAnnotationsByFqName(fqName)
|
||||
|
||||
fun List<FirAnnotationCall>.getAnnotationsByFqName(fqName: FqName): List<FirAnnotationCall> {
|
||||
return filter {
|
||||
it.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.lookupTag?.classId?.asSingleFqName() == fqName
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-46
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.declarations
|
||||
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.config.ApiVersion
|
||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
private val HIDDEN_SINCE_NAME = Name.identifier("hiddenSince")
|
||||
|
||||
private object FirDeprecatedSinceVersionKey : FirDeclarationDataKey()
|
||||
|
||||
private var FirCallableDeclaration<*>.deprecatedSinceKotlinCachedValue: DeprecatedSinceValue? by FirDeclarationDataRegistry.data(
|
||||
FirDeprecatedSinceVersionKey
|
||||
)
|
||||
|
||||
private fun FirAnnotationContainer.getHiddenSinceKotlin(): ApiVersion? =
|
||||
getAnnotationByFqName(StandardNames.FqNames.deprecatedSinceKotlin)?.getVersionFromArgument(HIDDEN_SINCE_NAME)
|
||||
|
||||
fun <T> T.getHiddenSinceKotlinCached(): ApiVersion? where T : FirCallableDeclaration<*>, T : FirAnnotationContainer {
|
||||
val cached = deprecatedSinceKotlinCachedValue
|
||||
if (cached != null) return cached.hiddenSince
|
||||
val calculated = getHiddenSinceKotlin()
|
||||
deprecatedSinceKotlinCachedValue = DeprecatedSinceValue(calculated)
|
||||
return calculated
|
||||
}
|
||||
|
||||
|
||||
private fun FirAnnotationCall.getVersionFromArgument(name: Name): ApiVersion? =
|
||||
findArgumentByName(name)?.let { expression ->
|
||||
expression.safeAs<FirConstExpression<*>>()?.value.safeAs<String>()?.let { ApiVersion.parse(it) }
|
||||
}
|
||||
|
||||
private class DeprecatedSinceValue(val hiddenSince: ApiVersion?)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.declarations
|
||||
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.config.ApiVersion
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
private val JAVA_DEPRECATED = FqName("java.lang.Deprecated")
|
||||
private val HIDDEN_SINCE_NAME = Name.identifier("hiddenSince")
|
||||
private val ERROR_SINCE_NAME = Name.identifier("errorSince")
|
||||
private val WARNING_SINCE_NAME = Name.identifier("warningSince")
|
||||
private val MESSAGE_NAME = Name.identifier("message")
|
||||
private val LEVEL_NAME = Name.identifier("level")
|
||||
|
||||
private val JAVA_ORIGINS = setOf(FirDeclarationOrigin.Java, FirDeclarationOrigin.Enhancement)
|
||||
|
||||
fun <T : FirAnnotatedDeclaration> T.getDeprecation(callSite: FirElement?): Deprecation? {
|
||||
val deprecationInfos = mutableListOf<Deprecation>()
|
||||
when (this) {
|
||||
is FirProperty ->
|
||||
if (callSite is FirVariableAssignment) {
|
||||
deprecationInfos.addIfNotNull(
|
||||
getDeprecationForCallSite(AnnotationUseSiteTarget.PROPERTY_SETTER, AnnotationUseSiteTarget.PROPERTY)
|
||||
)
|
||||
} else {
|
||||
deprecationInfos.addIfNotNull(
|
||||
getDeprecationForCallSite(AnnotationUseSiteTarget.PROPERTY_GETTER, AnnotationUseSiteTarget.PROPERTY)
|
||||
)
|
||||
}
|
||||
else -> deprecationInfos.addIfNotNull(getDeprecationForCallSite())
|
||||
}
|
||||
|
||||
return deprecationInfos.firstOrNull()
|
||||
}
|
||||
|
||||
fun FirAnnotationContainer.getDeprecationInfos(currentVersion: ApiVersion): DeprecationsPerUseSite {
|
||||
val deprecationByUseSite = mutableMapOf<AnnotationUseSiteTarget?, Deprecation>()
|
||||
val fromJava = JAVA_ORIGINS.contains(this.safeAs<FirDeclaration>()?.origin)
|
||||
annotations.extractDeprecationInfoPerUseSite(currentVersion, fromJava).toMap(deprecationByUseSite)
|
||||
|
||||
if (this is FirProperty) {
|
||||
getDeprecationsFromAccessors(getter, setter, currentVersion).bySpecificSite?.forEach { (k, v) -> deprecationByUseSite[k] = v }
|
||||
}
|
||||
|
||||
return DeprecationsPerUseSite.fromMap(deprecationByUseSite)
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
fun getDeprecationsFromAccessors(
|
||||
getter: FirFunction?,
|
||||
setter: FirFunction?,
|
||||
currentVersion: ApiVersion
|
||||
): DeprecationsPerUseSite {
|
||||
val perUseSite = buildMap<AnnotationUseSiteTarget, Deprecation> {
|
||||
setter?.getDeprecationInfos(currentVersion)?.all?.let { put(AnnotationUseSiteTarget.PROPERTY_SETTER, it) }
|
||||
getter?.getDeprecationInfos(currentVersion)?.all?.let { put(AnnotationUseSiteTarget.PROPERTY_GETTER, it) }
|
||||
}
|
||||
return if (perUseSite.isEmpty()) EmptyDeprecationsPerUseSite else DeprecationsPerUseSite(null, perUseSite)
|
||||
}
|
||||
|
||||
fun List<FirAnnotationCall>.getDeprecationInfosFromAnnotations(currentVersion: ApiVersion, fromJava: Boolean): DeprecationsPerUseSite {
|
||||
val deprecationByUseSite = extractDeprecationInfoPerUseSite(currentVersion, fromJava).toMap()
|
||||
return DeprecationsPerUseSite.fromMap(deprecationByUseSite)
|
||||
}
|
||||
|
||||
private fun <T : FirAnnotatedDeclaration> T.getDeprecationForCallSite(
|
||||
vararg sites: AnnotationUseSiteTarget
|
||||
): Deprecation? {
|
||||
val deprecations = when (this) {
|
||||
is FirCallableDeclaration -> deprecation
|
||||
is FirClassLikeDeclaration -> deprecation
|
||||
else -> null
|
||||
}
|
||||
return (deprecations ?: EmptyDeprecationsPerUseSite).forUseSite(*sites)
|
||||
}
|
||||
|
||||
private fun FirAnnotationCall.getStringArgument(name: Name): String? =
|
||||
findArgumentByName(name)?.let { expression ->
|
||||
expression.safeAs<FirConstExpression<*>>()?.value.safeAs()
|
||||
}
|
||||
|
||||
private fun FirAnnotationCall.getVersionFromArgument(name: Name): ApiVersion? =
|
||||
getStringArgument(name)?.let { ApiVersion.parse(it) }
|
||||
|
||||
private fun FirAnnotationCall.getDeprecationLevel(): DeprecationLevelValue? {
|
||||
//take last because Annotation might be not resolved yet and arguments passed without explicit names
|
||||
val arg = findArgumentByName(LEVEL_NAME) ?: arguments.lastOrNull()
|
||||
return arg?.let { argument ->
|
||||
val targetExpression = argument as? FirQualifiedAccessExpression ?: return null
|
||||
val targetName = (targetExpression.calleeReference as? FirNamedReference)?.name?.asString() ?: return null
|
||||
DeprecationLevelValue.values().find { it.name == targetName }
|
||||
}
|
||||
}
|
||||
|
||||
private fun List<FirAnnotationCall>.extractDeprecationInfoPerUseSite(
|
||||
currentVersion: ApiVersion,
|
||||
fromJava: Boolean
|
||||
): List<Pair<AnnotationUseSiteTarget?, Deprecation>> {
|
||||
val annotations = getAnnotationsByFqName(StandardNames.FqNames.deprecated).map { it to false } +
|
||||
getAnnotationsByFqName(JAVA_DEPRECATED).map { it to true }
|
||||
return annotations.mapNotNull { (deprecated, fromJavaAnnotation) ->
|
||||
val deprecationLevel = deprecated.getDeprecationLevel() ?: DeprecationLevelValue.WARNING
|
||||
val deprecatedSinceKotlin = getAnnotationsByFqName(StandardNames.FqNames.deprecatedSinceKotlin).firstOrNull()
|
||||
|
||||
fun levelApplied(name: Name, level: DeprecationLevelValue): DeprecationLevelValue? {
|
||||
deprecatedSinceKotlin?.getVersionFromArgument(name)?.takeIf { it <= currentVersion }?.let { return level }
|
||||
return level.takeIf { deprecatedSinceKotlin == null && level == deprecationLevel }
|
||||
}
|
||||
|
||||
val appliedLevel = (levelApplied(HIDDEN_SINCE_NAME, DeprecationLevelValue.HIDDEN)
|
||||
?: levelApplied(ERROR_SINCE_NAME, DeprecationLevelValue.ERROR)
|
||||
?: levelApplied(WARNING_SINCE_NAME, DeprecationLevelValue.WARNING))
|
||||
|
||||
appliedLevel?.let {
|
||||
val inheritable = !fromJavaAnnotation && !fromJava
|
||||
deprecated.useSiteTarget to Deprecation(it, inheritable, deprecated.getStringArgument(MESSAGE_NAME))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,8 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) {
|
||||
CheckDispatchReceiver,
|
||||
CheckExtensionReceiver,
|
||||
CheckLowPriorityInOverloadResolution,
|
||||
PostponedVariablesInitializerResolutionStage
|
||||
PostponedVariablesInitializerResolutionStage,
|
||||
CheckDeprecatedSinceKotlin,
|
||||
)
|
||||
|
||||
object SyntheticSelect : CallKind(
|
||||
@@ -56,7 +57,8 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) {
|
||||
CheckDispatchReceiver,
|
||||
CheckExtensionReceiver,
|
||||
CheckArguments,
|
||||
EagerResolveOfCallableReferences
|
||||
EagerResolveOfCallableReferences,
|
||||
CheckDeprecatedSinceKotlin,
|
||||
)
|
||||
|
||||
object CallableReference : CallKind(
|
||||
@@ -69,7 +71,7 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) {
|
||||
CheckExtensionReceiver,
|
||||
CheckCallableReferenceExpectedType,
|
||||
CheckLowPriorityInOverloadResolution,
|
||||
CheckDeprecatedSinceKotlin
|
||||
CheckDeprecatedSinceKotlin,
|
||||
)
|
||||
|
||||
object SyntheticIdForCallableReferencesResolution : CallKind(
|
||||
|
||||
@@ -297,9 +297,9 @@ internal object CheckCallModifiers : CheckerStage() {
|
||||
|
||||
internal object CheckDeprecatedSinceKotlin : ResolutionStage() {
|
||||
override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) {
|
||||
val fir = (candidate.symbol as? FirFunctionSymbol<*>)?.fir ?: return
|
||||
val deprecatedSince = fir.getHiddenSinceKotlinCached() ?: return
|
||||
if (context.session.languageVersionSettings.apiVersion >= deprecatedSince) {
|
||||
val fir = (candidate.symbol as? FirCallableSymbol<*>)?.fir ?: return
|
||||
val deprecation = fir.getDeprecation(callInfo.callSite)
|
||||
if (deprecation != null && deprecation.level == DeprecationLevelValue.HIDDEN) {
|
||||
sink.yieldDiagnostic(HiddenCandidate)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.resolve.calls
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.getDeprecationsFromAccessors
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isStatic
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.scopes.*
|
||||
@@ -117,6 +118,7 @@ class FirSyntheticPropertiesScope(
|
||||
)
|
||||
delegateGetter = getter
|
||||
delegateSetter = matchingSetter
|
||||
deprecation = getDeprecationsFromAccessors(getter, matchingSetter, session.languageVersionSettings.apiVersion)
|
||||
}
|
||||
val syntheticSymbol = property.symbol
|
||||
(baseScope as? FirUnstableSmartcastTypeScope)?.apply {
|
||||
|
||||
+21
-1
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.languageVersionSettings
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
@@ -103,6 +104,7 @@ open class FirStatusResolveTransformer(
|
||||
*/
|
||||
if (computationStatus != StatusComputationSession.StatusComputationStatus.Computed) {
|
||||
regularClass.transformStatus(this, statusResolver.resolveStatus(regularClass, containingClass, isLocal = false))
|
||||
calculateDeprecations(regularClass)
|
||||
}
|
||||
return transformClass(regularClass, data).also {
|
||||
statusComputationSession.endComputing(regularClass)
|
||||
@@ -311,6 +313,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
): FirStatement {
|
||||
typeAlias.typeParameters.forEach { transformDeclaration(it, data) }
|
||||
typeAlias.transformStatus(this, statusResolver.resolveStatus(typeAlias, containingClass, isLocal = false))
|
||||
calculateDeprecations(typeAlias)
|
||||
return transformDeclaration(typeAlias, data) as FirTypeAlias
|
||||
}
|
||||
|
||||
@@ -467,6 +470,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement {
|
||||
constructor.transformStatus(this, statusResolver.resolveStatus(constructor, containingClass, isLocal = false))
|
||||
calculateDeprecations(constructor)
|
||||
return transformDeclaration(constructor, data) as FirStatement
|
||||
}
|
||||
|
||||
@@ -478,6 +482,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
simpleFunction.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
simpleFunction.transformStatus(this, statusResolver.resolveStatus(simpleFunction, containingClass, isLocal = false))
|
||||
calculateDeprecations(simpleFunction)
|
||||
return transformDeclaration(simpleFunction, data) as FirStatement
|
||||
}
|
||||
|
||||
@@ -492,7 +497,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
|
||||
property.getter?.let { transformPropertyAccessor(it, property) }
|
||||
property.setter?.let { transformPropertyAccessor(it, property) }
|
||||
|
||||
calculateDeprecations(property)
|
||||
return property
|
||||
}
|
||||
|
||||
@@ -501,6 +506,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement {
|
||||
field.transformStatus(this, statusResolver.resolveStatus(field, containingClass, isLocal = false))
|
||||
calculateDeprecations(field)
|
||||
return transformDeclaration(field, data) as FirField
|
||||
}
|
||||
|
||||
@@ -509,6 +515,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement {
|
||||
enumEntry.transformStatus(this, statusResolver.resolveStatus(enumEntry, containingClass, isLocal = false))
|
||||
calculateDeprecations(enumEntry)
|
||||
return transformDeclaration(enumEntry, data) as FirEnumEntry
|
||||
}
|
||||
|
||||
@@ -516,6 +523,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
valueParameter: FirValueParameter,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement {
|
||||
calculateDeprecations(valueParameter)
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return transformDeclaration(valueParameter, data) as FirStatement
|
||||
}
|
||||
@@ -530,4 +538,16 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformBlock(block: FirBlock, data: FirResolvedDeclarationStatus?): FirStatement {
|
||||
return block
|
||||
}
|
||||
|
||||
protected fun calculateDeprecations(regularClass: FirClassLikeDeclaration) {
|
||||
if (regularClass.deprecation == null) {
|
||||
regularClass.replaceDeprecation(regularClass.getDeprecationInfos(session.languageVersionSettings.apiVersion))
|
||||
}
|
||||
}
|
||||
|
||||
protected fun calculateDeprecations(simpleFunction: FirCallableDeclaration) {
|
||||
if (simpleFunction.deprecation == null) {
|
||||
simpleFunction.replaceDeprecation(simpleFunction.getDeprecationInfos(session.languageVersionSettings.apiVersion))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-4
@@ -7,15 +7,12 @@ package org.jetbrains.kotlin.fir.scopes.impl
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.copy
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.*
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
import org.jetbrains.kotlin.fir.originalForSubstitutionOverrideAttr
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ChainedSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||
@@ -115,6 +112,7 @@ object FirFakeOverrideGenerator {
|
||||
typeParameters += configureAnnotationsTypeParametersAndSignature(
|
||||
session, baseFunction, newParameterTypes, newTypeParameters, newReceiverType, newReturnType, fakeOverrideSubstitution
|
||||
).filterIsInstance<FirTypeParameter>()
|
||||
deprecation = baseFunction.deprecation
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,6 +151,7 @@ object FirFakeOverrideGenerator {
|
||||
resolvePhase = baseConstructor.resolvePhase
|
||||
source = baseConstructor.source
|
||||
attributes = baseConstructor.attributes.copy()
|
||||
deprecation = baseConstructor.deprecation
|
||||
}.apply {
|
||||
originalForSubstitutionOverrideAttr = baseConstructor
|
||||
}
|
||||
@@ -310,6 +309,7 @@ object FirFakeOverrideGenerator {
|
||||
newReturnType,
|
||||
fakeOverrideSubstitution
|
||||
)
|
||||
deprecation = baseProperty.deprecation
|
||||
}
|
||||
}
|
||||
|
||||
@@ -462,6 +462,7 @@ object FirFakeOverrideGenerator {
|
||||
delegateGetter = getter
|
||||
delegateSetter = setter
|
||||
status = baseProperty.status
|
||||
deprecation = getDeprecationsFromAccessors(getter, setter, session.languageVersionSettings.apiVersion)
|
||||
}.symbol
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ abstract class FirAnonymousFunction : FirFunction(), FirTypeParametersOwner {
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
abstract override val dispatchReceiverType: ConeKotlinType?
|
||||
@@ -59,6 +60,8 @@ abstract class FirAnonymousFunction : FirFunction(), FirTypeParametersOwner {
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
|
||||
|
||||
@@ -27,6 +27,7 @@ abstract class FirAnonymousObject : FirClass(), FirControlFlowGraphOwner {
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val classKind: ClassKind
|
||||
abstract override val superTypeRefs: List<FirTypeRef>
|
||||
@@ -44,6 +45,8 @@ abstract class FirAnonymousObject : FirClass(), FirControlFlowGraphOwner {
|
||||
|
||||
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
@@ -27,6 +27,7 @@ sealed class FirCallableDeclaration : FirTypedDeclaration() {
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract val receiverTypeRef: FirTypeRef?
|
||||
abstract val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val symbol: FirCallableSymbol<out FirCallableDeclaration>
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitCallableDeclaration(this, data)
|
||||
@@ -41,6 +42,8 @@ sealed class FirCallableDeclaration : FirTypedDeclaration() {
|
||||
|
||||
abstract fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
|
||||
|
||||
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableDeclaration
|
||||
|
||||
+3
@@ -29,6 +29,7 @@ sealed class FirCallableMemberDeclaration : FirCallableDeclaration(), FirMemberD
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val symbol: FirCallableSymbol<out FirCallableDeclaration>
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
@@ -47,6 +48,8 @@ sealed class FirCallableMemberDeclaration : FirCallableDeclaration(), FirMemberD
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
|
||||
|
||||
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirCallableMemberDeclaration
|
||||
|
||||
@@ -27,6 +27,7 @@ sealed class FirClass : FirClassLikeDeclaration(), FirStatement, FirTypeParamete
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val symbol: FirClassSymbol<out FirClass>
|
||||
abstract val classKind: ClassKind
|
||||
@@ -43,6 +44,8 @@ sealed class FirClass : FirClassLikeDeclaration(), FirStatement, FirTypeParamete
|
||||
|
||||
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>)
|
||||
|
||||
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirClass
|
||||
|
||||
@@ -26,6 +26,7 @@ sealed class FirClassLikeDeclaration : FirAnnotatedDeclaration(), FirStatement {
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val symbol: FirClassLikeSymbol<out FirClassLikeDeclaration>
|
||||
abstract val deprecation: DeprecationsPerUseSite?
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitClassLikeDeclaration(this, data)
|
||||
|
||||
@@ -35,5 +36,7 @@ sealed class FirClassLikeDeclaration : FirAnnotatedDeclaration(), FirStatement {
|
||||
|
||||
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
|
||||
|
||||
abstract fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirClassLikeDeclaration
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ abstract class FirConstructor : FirFunction(), FirTypeParameterRefsOwner {
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
@@ -55,6 +56,8 @@ abstract class FirConstructor : FirFunction(), FirTypeParameterRefsOwner {
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
|
||||
|
||||
@@ -30,6 +30,7 @@ abstract class FirEnumEntry : FirVariable() {
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
@@ -56,6 +57,8 @@ abstract class FirEnumEntry : FirVariable() {
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceInitializer(newInitializer: FirExpression?)
|
||||
|
||||
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirEnumEntry
|
||||
|
||||
@@ -33,6 +33,7 @@ abstract class FirErrorFunction : FirFunction(), FirDiagnosticHolder {
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
abstract override val dispatchReceiverType: ConeKotlinType?
|
||||
@@ -55,6 +56,8 @@ abstract class FirErrorFunction : FirFunction(), FirDiagnosticHolder {
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
|
||||
|
||||
@@ -32,6 +32,7 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder {
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
@@ -59,6 +60,8 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder {
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceInitializer(newInitializer: FirExpression?)
|
||||
|
||||
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirErrorProperty
|
||||
|
||||
@@ -30,6 +30,7 @@ abstract class FirField : FirVariable() {
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
@@ -56,6 +57,8 @@ abstract class FirField : FirVariable() {
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceInitializer(newInitializer: FirExpression?)
|
||||
|
||||
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirField
|
||||
|
||||
@@ -33,6 +33,7 @@ sealed class FirFunction : FirCallableMemberDeclaration(), FirTargetElement, Fir
|
||||
abstract override val annotations: List<FirAnnotationCall>
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
@@ -54,6 +55,8 @@ sealed class FirFunction : FirCallableMemberDeclaration(), FirTargetElement, Fir
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
abstract fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
|
||||
|
||||
@@ -33,6 +33,7 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFl
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
abstract override val dispatchReceiverType: ConeKotlinType?
|
||||
@@ -64,6 +65,8 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFl
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceInitializer(newInitializer: FirExpression?)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
@@ -31,6 +31,7 @@ abstract class FirPropertyAccessor : FirFunction(), FirContractDescriptionOwner,
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
abstract override val dispatchReceiverType: ConeKotlinType?
|
||||
@@ -56,6 +57,8 @@ abstract class FirPropertyAccessor : FirFunction(), FirContractDescriptionOwner,
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
|
||||
|
||||
@@ -28,6 +28,7 @@ abstract class FirRegularClass : FirClass(), FirMemberDeclaration, FirControlFlo
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val classKind: ClassKind
|
||||
abstract override val declarations: List<FirDeclaration>
|
||||
@@ -49,6 +50,8 @@ abstract class FirRegularClass : FirClass(), FirMemberDeclaration, FirControlFlo
|
||||
|
||||
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>)
|
||||
|
||||
@@ -32,6 +32,7 @@ abstract class FirSimpleFunction : FirFunction(), FirContractDescriptionOwner, F
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
abstract override val dispatchReceiverType: ConeKotlinType?
|
||||
@@ -56,6 +57,8 @@ abstract class FirSimpleFunction : FirFunction(), FirContractDescriptionOwner, F
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
|
||||
|
||||
@@ -25,6 +25,7 @@ abstract class FirTypeAlias : FirClassLikeDeclaration(), FirMemberDeclaration, F
|
||||
abstract override val resolvePhase: FirResolvePhase
|
||||
abstract override val origin: FirDeclarationOrigin
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val typeParameters: List<FirTypeParameter>
|
||||
abstract val name: Name
|
||||
@@ -40,6 +41,8 @@ abstract class FirTypeAlias : FirClassLikeDeclaration(), FirMemberDeclaration, F
|
||||
|
||||
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract fun replaceExpandedTypeRef(newExpandedTypeRef: FirTypeRef)
|
||||
|
||||
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirTypeAlias
|
||||
|
||||
@@ -31,6 +31,7 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner {
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
@@ -62,6 +63,8 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner {
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract override fun replaceInitializer(newInitializer: FirExpression?)
|
||||
|
||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||
|
||||
@@ -31,6 +31,7 @@ sealed class FirVariable : FirCallableMemberDeclaration(), FirStatement {
|
||||
abstract override val attributes: FirDeclarationAttributes
|
||||
abstract override val returnTypeRef: FirTypeRef
|
||||
abstract override val receiverTypeRef: FirTypeRef?
|
||||
abstract override val deprecation: DeprecationsPerUseSite?
|
||||
abstract override val typeParameters: List<FirTypeParameterRef>
|
||||
abstract override val status: FirDeclarationStatus
|
||||
abstract override val containerSource: DeserializedContainerSource?
|
||||
@@ -57,6 +58,8 @@ sealed class FirVariable : FirCallableMemberDeclaration(), FirStatement {
|
||||
|
||||
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
|
||||
|
||||
abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?)
|
||||
|
||||
abstract fun replaceInitializer(newInitializer: FirExpression?)
|
||||
|
||||
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirVariable
|
||||
|
||||
+2
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.builder
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
@@ -40,6 +41,7 @@ interface FirAbstractConstructorBuilder : FirFunctionBuilder {
|
||||
abstract override var attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: MutableList<FirAnnotationCall>
|
||||
abstract override var returnTypeRef: FirTypeRef
|
||||
abstract override var deprecation: DeprecationsPerUseSite?
|
||||
abstract override var status: FirDeclarationStatus
|
||||
abstract override var containerSource: DeserializedContainerSource?
|
||||
abstract override var dispatchReceiverType: ConeKotlinType?
|
||||
|
||||
+3
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
@@ -47,6 +48,7 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
override lateinit var returnTypeRef: FirTypeRef
|
||||
var receiverTypeRef: FirTypeRef? = null
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
override var containerSource: DeserializedContainerSource? = null
|
||||
override var dispatchReceiverType: ConeKotlinType? = null
|
||||
var controlFlowGraphReference: FirControlFlowGraphReference? = null
|
||||
@@ -69,6 +71,7 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu
|
||||
annotations,
|
||||
returnTypeRef,
|
||||
receiverTypeRef,
|
||||
deprecation,
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
controlFlowGraphReference,
|
||||
|
||||
+3
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
@@ -39,6 +40,7 @@ class FirAnonymousObjectBuilder : FirDeclarationBuilder, FirClassBuilder, FirAnn
|
||||
override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
override lateinit var origin: FirDeclarationOrigin
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
|
||||
override lateinit var classKind: ClassKind
|
||||
override val superTypeRefs: MutableList<FirTypeRef> = mutableListOf()
|
||||
@@ -54,6 +56,7 @@ class FirAnonymousObjectBuilder : FirDeclarationBuilder, FirClassBuilder, FirAnn
|
||||
resolvePhase,
|
||||
origin,
|
||||
attributes,
|
||||
deprecation,
|
||||
typeParameters,
|
||||
classKind,
|
||||
superTypeRefs,
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
@@ -35,6 +36,7 @@ interface FirClassBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilder
|
||||
abstract override var origin: FirDeclarationOrigin
|
||||
abstract override var attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: MutableList<FirAnnotationCall>
|
||||
abstract var deprecation: DeprecationsPerUseSite?
|
||||
abstract val typeParameters: MutableList<FirTypeParameterRef>
|
||||
abstract var classKind: ClassKind
|
||||
abstract val superTypeRefs: MutableList<FirTypeRef>
|
||||
|
||||
+4
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
@@ -43,6 +44,7 @@ open class FirConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotationC
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
override lateinit var returnTypeRef: FirTypeRef
|
||||
override var receiverTypeRef: FirTypeRef? = null
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
|
||||
override lateinit var status: FirDeclarationStatus
|
||||
override var containerSource: DeserializedContainerSource? = null
|
||||
@@ -62,6 +64,7 @@ open class FirConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotationC
|
||||
attributes,
|
||||
returnTypeRef,
|
||||
receiverTypeRef,
|
||||
deprecation,
|
||||
typeParameters,
|
||||
status,
|
||||
containerSource,
|
||||
@@ -104,6 +107,7 @@ inline fun buildConstructorCopy(original: FirConstructor, init: FirConstructorBu
|
||||
copyBuilder.attributes = original.attributes.copy()
|
||||
copyBuilder.returnTypeRef = original.returnTypeRef
|
||||
copyBuilder.receiverTypeRef = original.receiverTypeRef
|
||||
copyBuilder.deprecation = original.deprecation
|
||||
copyBuilder.typeParameters.addAll(original.typeParameters)
|
||||
copyBuilder.status = original.status
|
||||
copyBuilder.containerSource = original.containerSource
|
||||
|
||||
+3
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -43,6 +44,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
lateinit var returnTypeRef: FirTypeRef
|
||||
var receiverTypeRef: FirTypeRef? = null
|
||||
var deprecation: DeprecationsPerUseSite? = null
|
||||
var containerSource: DeserializedContainerSource? = null
|
||||
var dispatchReceiverType: ConeKotlinType? = null
|
||||
var initializer: FirExpression? = null
|
||||
@@ -67,6 +69,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
attributes,
|
||||
returnTypeRef,
|
||||
receiverTypeRef,
|
||||
deprecation,
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
initializer,
|
||||
|
||||
+3
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -40,6 +41,7 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder {
|
||||
lateinit var origin: FirDeclarationOrigin
|
||||
var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
lateinit var returnTypeRef: FirTypeRef
|
||||
var deprecation: DeprecationsPerUseSite? = null
|
||||
val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
|
||||
lateinit var status: FirDeclarationStatus
|
||||
var containerSource: DeserializedContainerSource? = null
|
||||
@@ -57,6 +59,7 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder {
|
||||
origin,
|
||||
attributes,
|
||||
returnTypeRef,
|
||||
deprecation,
|
||||
typeParameters,
|
||||
status,
|
||||
containerSource,
|
||||
|
||||
+3
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -43,6 +44,7 @@ class FirErrorFunctionBuilder : FirAnnotationContainerBuilder {
|
||||
lateinit var origin: FirDeclarationOrigin
|
||||
var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
var deprecation: DeprecationsPerUseSite? = null
|
||||
var containerSource: DeserializedContainerSource? = null
|
||||
var dispatchReceiverType: ConeKotlinType? = null
|
||||
val valueParameters: MutableList<FirValueParameter> = mutableListOf()
|
||||
@@ -57,6 +59,7 @@ class FirErrorFunctionBuilder : FirAnnotationContainerBuilder {
|
||||
origin,
|
||||
attributes,
|
||||
annotations,
|
||||
deprecation,
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
valueParameters,
|
||||
|
||||
+3
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -42,6 +43,7 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder {
|
||||
var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
lateinit var origin: FirDeclarationOrigin
|
||||
var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
var deprecation: DeprecationsPerUseSite? = null
|
||||
var containerSource: DeserializedContainerSource? = null
|
||||
var dispatchReceiverType: ConeKotlinType? = null
|
||||
lateinit var name: Name
|
||||
@@ -56,6 +58,7 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder {
|
||||
resolvePhase,
|
||||
origin,
|
||||
attributes,
|
||||
deprecation,
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
name,
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -42,6 +43,7 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
|
||||
override lateinit var origin: FirDeclarationOrigin
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
open lateinit var returnTypeRef: FirTypeRef
|
||||
open var deprecation: DeprecationsPerUseSite? = null
|
||||
open val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
|
||||
open lateinit var status: FirDeclarationStatus
|
||||
open var containerSource: DeserializedContainerSource? = null
|
||||
@@ -61,6 +63,7 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
|
||||
origin,
|
||||
attributes,
|
||||
returnTypeRef,
|
||||
deprecation,
|
||||
typeParameters,
|
||||
status,
|
||||
containerSource,
|
||||
|
||||
+2
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -37,6 +38,7 @@ interface FirFunctionBuilder : FirDeclarationBuilder, FirAnnotationContainerBuil
|
||||
abstract override var attributes: FirDeclarationAttributes
|
||||
abstract override val annotations: MutableList<FirAnnotationCall>
|
||||
abstract var returnTypeRef: FirTypeRef
|
||||
abstract var deprecation: DeprecationsPerUseSite?
|
||||
abstract var status: FirDeclarationStatus
|
||||
abstract var containerSource: DeserializedContainerSource?
|
||||
abstract var dispatchReceiverType: ConeKotlinType?
|
||||
|
||||
+3
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
@@ -43,6 +44,7 @@ class FirPrimaryConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotatio
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
override lateinit var returnTypeRef: FirTypeRef
|
||||
override var receiverTypeRef: FirTypeRef? = null
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
|
||||
override lateinit var status: FirDeclarationStatus
|
||||
override var containerSource: DeserializedContainerSource? = null
|
||||
@@ -62,6 +64,7 @@ class FirPrimaryConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotatio
|
||||
attributes,
|
||||
returnTypeRef,
|
||||
receiverTypeRef,
|
||||
deprecation,
|
||||
typeParameters,
|
||||
status,
|
||||
containerSource,
|
||||
|
||||
+4
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -45,6 +46,7 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui
|
||||
override lateinit var origin: FirDeclarationOrigin
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
override lateinit var returnTypeRef: FirTypeRef
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
override lateinit var status: FirDeclarationStatus
|
||||
override var containerSource: DeserializedContainerSource? = null
|
||||
override var dispatchReceiverType: ConeKotlinType? = null
|
||||
@@ -65,6 +67,7 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui
|
||||
origin,
|
||||
attributes,
|
||||
returnTypeRef,
|
||||
deprecation,
|
||||
status,
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
@@ -100,6 +103,7 @@ inline fun buildPropertyAccessorCopy(original: FirPropertyAccessor, init: FirPro
|
||||
copyBuilder.origin = original.origin
|
||||
copyBuilder.attributes = original.attributes.copy()
|
||||
copyBuilder.returnTypeRef = original.returnTypeRef
|
||||
copyBuilder.deprecation = original.deprecation
|
||||
copyBuilder.status = original.status
|
||||
copyBuilder.containerSource = original.containerSource
|
||||
copyBuilder.dispatchReceiverType = original.dispatchReceiverType
|
||||
|
||||
+4
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -46,6 +47,7 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder,
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
lateinit var returnTypeRef: FirTypeRef
|
||||
var receiverTypeRef: FirTypeRef? = null
|
||||
var deprecation: DeprecationsPerUseSite? = null
|
||||
lateinit var status: FirDeclarationStatus
|
||||
var containerSource: DeserializedContainerSource? = null
|
||||
var dispatchReceiverType: ConeKotlinType? = null
|
||||
@@ -71,6 +73,7 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder,
|
||||
attributes,
|
||||
returnTypeRef,
|
||||
receiverTypeRef,
|
||||
deprecation,
|
||||
status,
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
@@ -112,6 +115,7 @@ inline fun buildPropertyCopy(original: FirProperty, init: FirPropertyBuilder.()
|
||||
copyBuilder.attributes = original.attributes.copy()
|
||||
copyBuilder.returnTypeRef = original.returnTypeRef
|
||||
copyBuilder.receiverTypeRef = original.receiverTypeRef
|
||||
copyBuilder.deprecation = original.deprecation
|
||||
copyBuilder.status = original.status
|
||||
copyBuilder.containerSource = original.containerSource
|
||||
copyBuilder.dispatchReceiverType = original.dispatchReceiverType
|
||||
|
||||
+4
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
@@ -41,6 +42,7 @@ open class FirRegularClassBuilder : FirClassBuilder, FirTypeParameterRefsOwnerBu
|
||||
override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
override lateinit var origin: FirDeclarationOrigin
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
|
||||
override lateinit var classKind: ClassKind
|
||||
override val declarations: MutableList<FirDeclaration> = mutableListOf()
|
||||
@@ -59,6 +61,7 @@ open class FirRegularClassBuilder : FirClassBuilder, FirTypeParameterRefsOwnerBu
|
||||
resolvePhase,
|
||||
origin,
|
||||
attributes,
|
||||
deprecation,
|
||||
typeParameters,
|
||||
classKind,
|
||||
declarations,
|
||||
@@ -93,6 +96,7 @@ inline fun buildRegularClassCopy(original: FirRegularClass, init: FirRegularClas
|
||||
copyBuilder.resolvePhase = original.resolvePhase
|
||||
copyBuilder.origin = original.origin
|
||||
copyBuilder.attributes = original.attributes.copy()
|
||||
copyBuilder.deprecation = original.deprecation
|
||||
copyBuilder.typeParameters.addAll(original.typeParameters)
|
||||
copyBuilder.classKind = original.classKind
|
||||
copyBuilder.declarations.addAll(original.declarations)
|
||||
|
||||
+4
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -46,6 +47,7 @@ open class FirSimpleFunctionBuilder : FirFunctionBuilder, FirTypeParametersOwner
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
override lateinit var returnTypeRef: FirTypeRef
|
||||
open var receiverTypeRef: FirTypeRef? = null
|
||||
override var deprecation: DeprecationsPerUseSite? = null
|
||||
override lateinit var status: FirDeclarationStatus
|
||||
override var containerSource: DeserializedContainerSource? = null
|
||||
override var dispatchReceiverType: ConeKotlinType? = null
|
||||
@@ -66,6 +68,7 @@ open class FirSimpleFunctionBuilder : FirFunctionBuilder, FirTypeParametersOwner
|
||||
attributes,
|
||||
returnTypeRef,
|
||||
receiverTypeRef,
|
||||
deprecation,
|
||||
status,
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
@@ -102,6 +105,7 @@ inline fun buildSimpleFunctionCopy(original: FirSimpleFunction, init: FirSimpleF
|
||||
copyBuilder.attributes = original.attributes.copy()
|
||||
copyBuilder.returnTypeRef = original.returnTypeRef
|
||||
copyBuilder.receiverTypeRef = original.receiverTypeRef
|
||||
copyBuilder.deprecation = original.deprecation
|
||||
copyBuilder.status = original.status
|
||||
copyBuilder.containerSource = original.containerSource
|
||||
copyBuilder.dispatchReceiverType = original.dispatchReceiverType
|
||||
|
||||
+4
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -37,6 +38,7 @@ class FirTypeAliasBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder
|
||||
override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
override lateinit var origin: FirDeclarationOrigin
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
var deprecation: DeprecationsPerUseSite? = null
|
||||
lateinit var status: FirDeclarationStatus
|
||||
override val typeParameters: MutableList<FirTypeParameter> = mutableListOf()
|
||||
lateinit var name: Name
|
||||
@@ -51,6 +53,7 @@ class FirTypeAliasBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder
|
||||
resolvePhase,
|
||||
origin,
|
||||
attributes,
|
||||
deprecation,
|
||||
status,
|
||||
typeParameters,
|
||||
name,
|
||||
@@ -81,6 +84,7 @@ inline fun buildTypeAliasCopy(original: FirTypeAlias, init: FirTypeAliasBuilder.
|
||||
copyBuilder.resolvePhase = original.resolvePhase
|
||||
copyBuilder.origin = original.origin
|
||||
copyBuilder.attributes = original.attributes.copy()
|
||||
copyBuilder.deprecation = original.deprecation
|
||||
copyBuilder.status = original.status
|
||||
copyBuilder.typeParameters.addAll(original.typeParameters)
|
||||
copyBuilder.name = original.name
|
||||
|
||||
+4
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -42,6 +43,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
open lateinit var origin: FirDeclarationOrigin
|
||||
open var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
open lateinit var returnTypeRef: FirTypeRef
|
||||
open var deprecation: DeprecationsPerUseSite? = null
|
||||
open var containerSource: DeserializedContainerSource? = null
|
||||
open var dispatchReceiverType: ConeKotlinType? = null
|
||||
open lateinit var name: Name
|
||||
@@ -60,6 +62,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder {
|
||||
origin,
|
||||
attributes,
|
||||
returnTypeRef,
|
||||
deprecation,
|
||||
containerSource,
|
||||
dispatchReceiverType,
|
||||
name,
|
||||
@@ -94,6 +97,7 @@ inline fun buildValueParameterCopy(original: FirValueParameter, init: FirValuePa
|
||||
copyBuilder.origin = original.origin
|
||||
copyBuilder.attributes = original.attributes.copy()
|
||||
copyBuilder.returnTypeRef = original.returnTypeRef
|
||||
copyBuilder.deprecation = original.deprecation
|
||||
copyBuilder.containerSource = original.containerSource
|
||||
copyBuilder.dispatchReceiverType = original.dispatchReceiverType
|
||||
copyBuilder.name = original.name
|
||||
|
||||
+6
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
import org.jetbrains.kotlin.fir.FirLabel
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
@@ -40,6 +41,7 @@ internal class FirAnonymousFunctionImpl(
|
||||
override val annotations: MutableList<FirAnnotationCall>,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var receiverTypeRef: FirTypeRef?,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
override var controlFlowGraphReference: FirControlFlowGraphReference?,
|
||||
@@ -134,6 +136,10 @@ internal class FirAnonymousFunctionImpl(
|
||||
receiverTypeRef = newReceiverTypeRef
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
controlFlowGraphReference = newControlFlowGraphReference
|
||||
}
|
||||
|
||||
+6
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
@@ -32,6 +33,7 @@ internal class FirAnonymousObjectImpl(
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val typeParameters: MutableList<FirTypeParameterRef>,
|
||||
override val classKind: ClassKind,
|
||||
override val superTypeRefs: MutableList<FirTypeRef>,
|
||||
@@ -87,6 +89,10 @@ internal class FirAnonymousObjectImpl(
|
||||
resolvePhase = newResolvePhase
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>) {
|
||||
superTypeRefs.clear()
|
||||
superTypeRefs.addAll(newSuperTypeRefs)
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
@@ -37,6 +38,7 @@ internal class FirConstructorImpl(
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var receiverTypeRef: FirTypeRef?,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val typeParameters: MutableList<FirTypeParameterRef>,
|
||||
override var status: FirDeclarationStatus,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
@@ -131,6 +133,10 @@ internal class FirConstructorImpl(
|
||||
receiverTypeRef = newReceiverTypeRef
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
controlFlowGraphReference = newControlFlowGraphReference
|
||||
}
|
||||
|
||||
+6
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -38,6 +39,7 @@ internal class FirDefaultSetterValueParameter(
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var receiverTypeRef: FirTypeRef?,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
override var initializer: FirExpression?,
|
||||
@@ -150,6 +152,10 @@ internal class FirDefaultSetterValueParameter(
|
||||
receiverTypeRef = newReceiverTypeRef
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceInitializer(newInitializer: FirExpression?) {
|
||||
initializer = newInitializer
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -35,6 +36,7 @@ internal class FirEnumEntryImpl(
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val typeParameters: MutableList<FirTypeParameterRef>,
|
||||
override var status: FirDeclarationStatus,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
@@ -128,6 +130,10 @@ internal class FirEnumEntryImpl(
|
||||
|
||||
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceInitializer(newInitializer: FirExpression?) {
|
||||
initializer = newInitializer
|
||||
}
|
||||
|
||||
+6
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -38,6 +39,7 @@ internal class FirErrorFunctionImpl(
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override val annotations: MutableList<FirAnnotationCall>,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
override val valueParameters: MutableList<FirValueParameter>,
|
||||
@@ -114,6 +116,10 @@ internal class FirErrorFunctionImpl(
|
||||
|
||||
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
controlFlowGraphReference = newControlFlowGraphReference
|
||||
}
|
||||
|
||||
+6
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -37,6 +38,7 @@ internal class FirErrorPropertyImpl(
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
override val name: Name,
|
||||
@@ -126,5 +128,9 @@ internal class FirErrorPropertyImpl(
|
||||
|
||||
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceInitializer(newInitializer: FirExpression?) {}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
import org.jetbrains.kotlin.fir.FirImplementationDetail
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -36,6 +37,7 @@ class FirFieldImpl @FirImplementationDetail constructor(
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val typeParameters: MutableList<FirTypeParameterRef>,
|
||||
override var status: FirDeclarationStatus,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
@@ -129,6 +131,10 @@ class FirFieldImpl @FirImplementationDetail constructor(
|
||||
|
||||
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceInitializer(newInitializer: FirExpression?) {
|
||||
initializer = newInitializer
|
||||
}
|
||||
|
||||
+6
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
@@ -37,6 +38,7 @@ internal class FirPrimaryConstructor(
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var receiverTypeRef: FirTypeRef?,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val typeParameters: MutableList<FirTypeParameterRef>,
|
||||
override var status: FirDeclarationStatus,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
@@ -131,6 +133,10 @@ internal class FirPrimaryConstructor(
|
||||
receiverTypeRef = newReceiverTypeRef
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
controlFlowGraphReference = newControlFlowGraphReference
|
||||
}
|
||||
|
||||
+6
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirImplementationDetail
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -38,6 +39,7 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override var status: FirDeclarationStatus,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
@@ -129,6 +131,10 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
|
||||
|
||||
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
controlFlowGraphReference = newControlFlowGraphReference
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -39,6 +40,7 @@ internal class FirPropertyImpl(
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var receiverTypeRef: FirTypeRef?,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override var status: FirDeclarationStatus,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
@@ -154,6 +156,10 @@ internal class FirPropertyImpl(
|
||||
receiverTypeRef = newReceiverTypeRef
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceInitializer(newInitializer: FirExpression?) {
|
||||
initializer = newInitializer
|
||||
}
|
||||
|
||||
+6
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
@@ -34,6 +35,7 @@ internal class FirRegularClassImpl(
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val typeParameters: MutableList<FirTypeParameterRef>,
|
||||
override val classKind: ClassKind,
|
||||
override val declarations: MutableList<FirDeclaration>,
|
||||
@@ -106,6 +108,10 @@ internal class FirRegularClassImpl(
|
||||
resolvePhase = newResolvePhase
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
controlFlowGraphReference = newControlFlowGraphReference
|
||||
}
|
||||
|
||||
+6
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -38,6 +39,7 @@ internal class FirSimpleFunctionImpl(
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var receiverTypeRef: FirTypeRef?,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override var status: FirDeclarationStatus,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
@@ -132,6 +134,10 @@ internal class FirSimpleFunctionImpl(
|
||||
receiverTypeRef = newReceiverTypeRef
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
controlFlowGraphReference = newControlFlowGraphReference
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -30,6 +31,7 @@ internal class FirTypeAliasImpl(
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override var status: FirDeclarationStatus,
|
||||
override val typeParameters: MutableList<FirTypeParameter>,
|
||||
override val name: Name,
|
||||
@@ -80,6 +82,10 @@ internal class FirTypeAliasImpl(
|
||||
resolvePhase = newResolvePhase
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceExpandedTypeRef(newExpandedTypeRef: FirTypeRef) {
|
||||
expandedTypeRef = newExpandedTypeRef
|
||||
}
|
||||
|
||||
+6
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
@@ -37,6 +38,7 @@ internal class FirValueParameterImpl(
|
||||
override val origin: FirDeclarationOrigin,
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var returnTypeRef: FirTypeRef,
|
||||
override var deprecation: DeprecationsPerUseSite?,
|
||||
override val containerSource: DeserializedContainerSource?,
|
||||
override val dispatchReceiverType: ConeKotlinType?,
|
||||
override val name: Name,
|
||||
@@ -133,6 +135,10 @@ internal class FirValueParameterImpl(
|
||||
|
||||
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
deprecation = newDeprecation
|
||||
}
|
||||
|
||||
override fun replaceInitializer(newInitializer: FirExpression?) {}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.utils.keysToMap
|
||||
import org.jetbrains.kotlin.utils.keysToMapExceptNulls
|
||||
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
|
||||
class DeprecationsPerUseSite(
|
||||
val all: Deprecation?,
|
||||
val bySpecificSite: Map<AnnotationUseSiteTarget, Deprecation>?
|
||||
) {
|
||||
fun forUseSite(vararg sites: AnnotationUseSiteTarget): Deprecation? {
|
||||
if (bySpecificSite != null) {
|
||||
for (site in sites) {
|
||||
bySpecificSite[site]?.let { return it }
|
||||
}
|
||||
}
|
||||
return all
|
||||
}
|
||||
|
||||
fun isEmpty(): Boolean = all == null && bySpecificSite == null
|
||||
fun isNotEmpty(): Boolean = !isEmpty()
|
||||
|
||||
fun combineMin(other: DeprecationsPerUseSite): DeprecationsPerUseSite {
|
||||
if (isEmpty() || isEmpty()) return EmptyDeprecationsPerUseSite
|
||||
|
||||
return DeprecationsPerUseSite(
|
||||
if (all == null || other.all == null) null else minOf(all, other.all),
|
||||
if (bySpecificSite == null || other.bySpecificSite == null) {
|
||||
null
|
||||
} else {
|
||||
bySpecificSite.keys.intersect(other.bySpecificSite.keys).keysToMap { target ->
|
||||
minOf(bySpecificSite[target]!!, other.bySpecificSite[target]!!)
|
||||
}
|
||||
}
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
fun combinePreferLeft(other: DeprecationsPerUseSite): DeprecationsPerUseSite {
|
||||
return DeprecationsPerUseSite(
|
||||
all ?: other.all,
|
||||
if (bySpecificSite == null || other.bySpecificSite == null) {
|
||||
bySpecificSite ?: other.bySpecificSite
|
||||
} else {
|
||||
bySpecificSite.keys.union(other.bySpecificSite.keys).keysToMapExceptNulls { target ->
|
||||
bySpecificSite[target] ?: other.bySpecificSite[target]
|
||||
}
|
||||
}
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
fun inheritableOnly(): DeprecationsPerUseSite =
|
||||
DeprecationsPerUseSite(
|
||||
all?.takeIf { it.inheritable },
|
||||
bySpecificSite?.filterValues { it.inheritable }
|
||||
)
|
||||
|
||||
override fun toString(): String =
|
||||
if (isEmpty()) "NoDeprecation"
|
||||
else "org.jetbrains.kotlin.fir.declarations.DeprecationInfoForUseSites(all=$all, bySpecificSite=$bySpecificSite)"
|
||||
|
||||
companion object {
|
||||
fun fromMap(perUseSite: Map<AnnotationUseSiteTarget?, Deprecation>): DeprecationsPerUseSite {
|
||||
if (perUseSite.isEmpty()) return EmptyDeprecationsPerUseSite
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val specificCallSite = perUseSite.filterKeys { it != null } as Map<AnnotationUseSiteTarget, Deprecation>
|
||||
return DeprecationsPerUseSite(
|
||||
perUseSite[null],
|
||||
specificCallSite.takeIf { it.isNotEmpty() }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data class Deprecation(
|
||||
val level: DeprecationLevelValue,
|
||||
val inheritable: Boolean,
|
||||
val message: String? = null
|
||||
) : Comparable<Deprecation> {
|
||||
override fun compareTo(other: Deprecation): Int {
|
||||
val lr = level.compareTo(other.level)
|
||||
//to prefer inheritable deprecation
|
||||
return if (lr == 0 && !inheritable && other.inheritable) 1
|
||||
else lr
|
||||
}
|
||||
}
|
||||
|
||||
// values from kotlin.DeprecationLevel
|
||||
enum class DeprecationLevelValue {
|
||||
WARNING, ERROR, HIDDEN
|
||||
}
|
||||
|
||||
val EmptyDeprecationsPerUseSite = DeprecationsPerUseSite(null, null)
|
||||
|
||||
+1
@@ -39,6 +39,7 @@ abstract class FirDefaultPropertyAccessor(
|
||||
origin,
|
||||
FirDeclarationAttributes(),
|
||||
propertyTypeRef,
|
||||
deprecation = null,
|
||||
status = if (effectiveVisibility == null)
|
||||
FirDeclarationStatusImpl(visibility, Modality.FINAL)
|
||||
else
|
||||
|
||||
+6
-1
@@ -29,7 +29,8 @@ class FirSyntheticProperty(
|
||||
override val status: FirDeclarationStatus,
|
||||
override var resolvePhase: FirResolvePhase,
|
||||
override val getter: FirSyntheticPropertyAccessor,
|
||||
override val setter: FirSyntheticPropertyAccessor? = null
|
||||
override val setter: FirSyntheticPropertyAccessor? = null,
|
||||
override val deprecation: DeprecationsPerUseSite? = null
|
||||
) : FirProperty() {
|
||||
init {
|
||||
symbol.bind(this)
|
||||
@@ -145,6 +146,10 @@ class FirSyntheticProperty(
|
||||
throw AssertionError("Mutation of synthetic property isn't supported")
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
throw AssertionError("Mutation of synthetic property isn't supported")
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
throw AssertionError("Mutation of synthetic property isn't supported")
|
||||
}
|
||||
|
||||
+7
@@ -48,6 +48,9 @@ class FirSyntheticPropertyAccessor(
|
||||
|
||||
override val receiverTypeRef: FirTypeRef?
|
||||
get() = null
|
||||
|
||||
override val deprecation: DeprecationsPerUseSite?
|
||||
get() = delegate.deprecation
|
||||
|
||||
override val valueParameters: List<FirValueParameter>
|
||||
get() = delegate.valueParameters
|
||||
@@ -135,6 +138,10 @@ class FirSyntheticPropertyAccessor(
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
}
|
||||
|
||||
override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
}
|
||||
|
||||
override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
}
|
||||
|
||||
+5
-1
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.declarations.synthetic
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol
|
||||
@@ -16,16 +17,19 @@ class FirSyntheticPropertyBuilder {
|
||||
lateinit var name: Name
|
||||
lateinit var symbol: FirAccessorSymbol
|
||||
lateinit var delegateGetter: FirSimpleFunction
|
||||
lateinit var deprecation: DeprecationsPerUseSite
|
||||
|
||||
var status: FirDeclarationStatus? = null
|
||||
var delegateSetter: FirSimpleFunction? = null
|
||||
|
||||
|
||||
fun build(): FirSyntheticProperty = FirSyntheticProperty(
|
||||
moduleData, name, isVar = delegateSetter != null, symbol = symbol,
|
||||
status = status ?: delegateGetter.status,
|
||||
resolvePhase = delegateGetter.resolvePhase,
|
||||
getter = FirSyntheticPropertyAccessor(delegateGetter, isGetter = true),
|
||||
setter = delegateSetter?.let { FirSyntheticPropertyAccessor(it, isGetter = false) }
|
||||
setter = delegateSetter?.let { FirSyntheticPropertyAccessor(it, isGetter = false) },
|
||||
deprecation = deprecation
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -85,6 +85,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
|
||||
callableDeclaration.configure {
|
||||
+field("receiverTypeRef", typeRef, nullable = true, withReplace = true).withTransform()
|
||||
+field("deprecation", deprecationsPerUseSiteType, nullable = true).withReplace().apply { isMutable = true }
|
||||
+symbol("FirCallableSymbol", "out FirCallableDeclaration")
|
||||
}
|
||||
|
||||
@@ -233,6 +234,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
|
||||
classLikeDeclaration.configure {
|
||||
+symbol("FirClassLikeSymbol", "out FirClassLikeDeclaration")
|
||||
+field("deprecation", deprecationsPerUseSiteType, nullable = true).withReplace().apply { isMutable = true}
|
||||
}
|
||||
|
||||
klass.configure {
|
||||
|
||||
@@ -91,3 +91,5 @@ val callableReferenceMappedArgumentsType = type("fir.resolve.calls", "CallableRe
|
||||
val functionCallOrigin = type("fir.expressions", "FirFunctionCallOrigin")
|
||||
|
||||
val resolvedDeclarationStatusImplType = type("fir.declarations.impl", "FirResolvedDeclarationStatusImpl")
|
||||
|
||||
val deprecationsPerUseSiteType = type("fir.declarations", "DeprecationsPerUseSite")
|
||||
|
||||
@@ -955,6 +955,7 @@ object PositioningStrategies {
|
||||
is KtOperationExpression -> element.operationReference
|
||||
is KtWhenConditionInRange -> element.operationReference
|
||||
is KtAnnotationEntry -> element.calleeExpression ?: element
|
||||
is KtTypeReference -> (element.typeElement as? KtNullableType)?.innerType ?: element
|
||||
else -> element
|
||||
}
|
||||
while (locateReferencedName && result is KtParenthesizedExpression) {
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ package foo
|
||||
|
||||
fun f() {
|
||||
class Local1 {
|
||||
fun g() : <!UNRESOLVED_REFERENCE!>bar.X?<!> = null
|
||||
fun g() : <!UNRESOLVED_REFERENCE!>bar.X<!>? = null
|
||||
}
|
||||
class Local2 {
|
||||
fun g() : foo.bar.X? = null
|
||||
|
||||
@@ -5,8 +5,8 @@ package foobar.a
|
||||
import java.*
|
||||
|
||||
val a : java.util.List<Int>? = null
|
||||
val a2 : <!UNRESOLVED_REFERENCE!>util.List<Int>?<!> = null
|
||||
val a3 : <!UNRESOLVED_REFERENCE!>LinkedList<Int>?<!> = null
|
||||
val a2 : <!UNRESOLVED_REFERENCE!>util.List<Int><!>? = null
|
||||
val a3 : <!UNRESOLVED_REFERENCE!>LinkedList<Int><!>? = null
|
||||
|
||||
// FILE: b.kt
|
||||
package foobar
|
||||
@@ -20,7 +20,7 @@ package foobar.a
|
||||
import java.util.*
|
||||
|
||||
val b : List<Int>? = <!INITIALIZER_TYPE_MISMATCH!>a<!>
|
||||
val b1 : <!UNRESOLVED_REFERENCE!>util.List<Int>?<!> = a
|
||||
val b1 : <!UNRESOLVED_REFERENCE!>util.List<Int><!>? = a
|
||||
|
||||
// FILE: d.kt
|
||||
package foobar
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
@Deprecated("text")
|
||||
annotation class obsolete()
|
||||
|
||||
@Deprecated("text")
|
||||
annotation class obsoleteWithParam(val text: String)
|
||||
|
||||
@obsolete class Obsolete
|
||||
|
||||
@obsoleteWithParam("text") class Obsolete2
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
@Deprecated("text")
|
||||
annotation class obsolete()
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
// FILE: A.kt
|
||||
class A(s: String) {
|
||||
@Deprecated("")
|
||||
constructor(i: Int) : this(i.toString()) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
public class B extends A {
|
||||
@Deprecated
|
||||
public B(int i) {
|
||||
|
||||
}
|
||||
|
||||
public B(String s) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: C.kt
|
||||
class C @Deprecated("") constructor(s: String) {
|
||||
}
|
||||
|
||||
// FILE: use.kt
|
||||
fun use(a: A, b: B, c: C) {
|
||||
A(3)
|
||||
A("")
|
||||
B(3)
|
||||
B("")
|
||||
C("s")
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
// FILE: A.kt
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
@Deprecated("alas", level = DeprecationLevel.ERROR)
|
||||
fun foo() {}
|
||||
|
||||
@Deprecated("alas", level = DeprecationLevel.ERROR)
|
||||
class C
|
||||
|
||||
fun test(c: C) {
|
||||
foo()
|
||||
C()
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
@Deprecated("alas", level = DeprecationLevel.ERROR)
|
||||
fun foo() {}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user