[FIR] add FirSession parameter to whileAnalysing
It will be needed in the following commits
This commit is contained in:
committed by
Space Team
parent
d6d8bf4cbd
commit
90436abb23
+3
-3
@@ -278,7 +278,7 @@ abstract class AbstractDiagnosticCollectorVisitor(
|
||||
val existingContext = context
|
||||
context = context.addQualifiedAccessOrAnnotationCall(qualifiedAccessOrAnnotationCall)
|
||||
try {
|
||||
return whileAnalysing(qualifiedAccessOrAnnotationCall) {
|
||||
return whileAnalysing(context.session, qualifiedAccessOrAnnotationCall) {
|
||||
block()
|
||||
}
|
||||
} finally {
|
||||
@@ -293,7 +293,7 @@ abstract class AbstractDiagnosticCollectorVisitor(
|
||||
val existingContext = context
|
||||
context = context.addGetClassCall(getClassCall)
|
||||
try {
|
||||
return whileAnalysing(getClassCall) {
|
||||
return whileAnalysing(context.session, getClassCall) {
|
||||
block()
|
||||
}
|
||||
} finally {
|
||||
@@ -308,7 +308,7 @@ abstract class AbstractDiagnosticCollectorVisitor(
|
||||
val existingContext = context
|
||||
context = context.addDeclaration(declaration)
|
||||
try {
|
||||
return whileAnalysing(declaration) {
|
||||
return whileAnalysing(context.session, declaration) {
|
||||
block()
|
||||
}
|
||||
} finally {
|
||||
|
||||
+8
-8
@@ -87,7 +87,7 @@ class FirElementSerializer private constructor(
|
||||
return builder
|
||||
}
|
||||
|
||||
fun classProto(klass: FirClass): ProtoBuf.Class.Builder = whileAnalysing(klass) {
|
||||
fun classProto(klass: FirClass): ProtoBuf.Class.Builder = whileAnalysing(session, klass) {
|
||||
val builder = ProtoBuf.Class.newBuilder()
|
||||
|
||||
val regularClass = klass as? FirRegularClass
|
||||
@@ -248,7 +248,7 @@ class FirElementSerializer private constructor(
|
||||
useSiteTarget == AnnotationUseSiteTarget.SETTER_PARAMETER && isSetter
|
||||
}
|
||||
|
||||
fun propertyProto(property: FirProperty): ProtoBuf.Property.Builder? = whileAnalysing(property) {
|
||||
fun propertyProto(property: FirProperty): ProtoBuf.Property.Builder? = whileAnalysing(session, property) {
|
||||
if (!extension.shouldSerializeProperty(property)) return null
|
||||
|
||||
val builder = ProtoBuf.Property.newBuilder()
|
||||
@@ -356,7 +356,7 @@ class FirElementSerializer private constructor(
|
||||
return builder
|
||||
}
|
||||
|
||||
fun functionProto(function: FirFunction): ProtoBuf.Function.Builder? = whileAnalysing(function) {
|
||||
fun functionProto(function: FirFunction): ProtoBuf.Function.Builder? = whileAnalysing(session, function) {
|
||||
if (!extension.shouldSerializeFunction(function)) return null
|
||||
|
||||
val builder = ProtoBuf.Function.newBuilder()
|
||||
@@ -450,7 +450,7 @@ class FirElementSerializer private constructor(
|
||||
return builder
|
||||
}
|
||||
|
||||
private fun typeAliasProto(typeAlias: FirTypeAlias): ProtoBuf.TypeAlias.Builder? = whileAnalysing(typeAlias) {
|
||||
private fun typeAliasProto(typeAlias: FirTypeAlias): ProtoBuf.TypeAlias.Builder? = whileAnalysing(session, typeAlias) {
|
||||
if (!extension.shouldSerializeTypeAlias(typeAlias)) return null
|
||||
|
||||
val builder = ProtoBuf.TypeAlias.newBuilder()
|
||||
@@ -497,14 +497,14 @@ class FirElementSerializer private constructor(
|
||||
return builder
|
||||
}
|
||||
|
||||
private fun enumEntryProto(enumEntry: FirEnumEntry): ProtoBuf.EnumEntry.Builder = whileAnalysing(enumEntry) {
|
||||
private fun enumEntryProto(enumEntry: FirEnumEntry): ProtoBuf.EnumEntry.Builder = whileAnalysing(session, enumEntry) {
|
||||
val builder = ProtoBuf.EnumEntry.newBuilder()
|
||||
builder.name = getSimpleNameIndex(enumEntry.name)
|
||||
extension.serializeEnumEntry(enumEntry, builder)
|
||||
return builder
|
||||
}
|
||||
|
||||
private fun constructorProto(constructor: FirConstructor): ProtoBuf.Constructor.Builder = whileAnalysing(constructor) {
|
||||
private fun constructorProto(constructor: FirConstructor): ProtoBuf.Constructor.Builder = whileAnalysing(session, constructor) {
|
||||
val builder = ProtoBuf.Constructor.newBuilder()
|
||||
|
||||
val local = createChildSerializer(constructor)
|
||||
@@ -543,7 +543,7 @@ class FirElementSerializer private constructor(
|
||||
private fun valueParameterProto(
|
||||
parameter: FirValueParameter,
|
||||
additionalAnnotations: List<FirAnnotation> = emptyList()
|
||||
): ProtoBuf.ValueParameter.Builder = whileAnalysing(parameter) {
|
||||
): ProtoBuf.ValueParameter.Builder = whileAnalysing(session, parameter) {
|
||||
val builder = ProtoBuf.ValueParameter.newBuilder()
|
||||
|
||||
val declaresDefaultValue = parameter.defaultValue != null // TODO: || parameter.isActualParameterWithAnyExpectedDefault
|
||||
@@ -580,7 +580,7 @@ class FirElementSerializer private constructor(
|
||||
return builder
|
||||
}
|
||||
|
||||
private fun typeParameterProto(typeParameter: FirTypeParameter): ProtoBuf.TypeParameter.Builder = whileAnalysing(typeParameter) {
|
||||
private fun typeParameterProto(typeParameter: FirTypeParameter): ProtoBuf.TypeParameter.Builder = whileAnalysing(session, typeParameter) {
|
||||
val builder = ProtoBuf.TypeParameter.newBuilder()
|
||||
|
||||
builder.id = getTypeParameterId(typeParameter)
|
||||
|
||||
@@ -76,7 +76,7 @@ class Fir2IrVisitor(
|
||||
TODO("Should not be here: ${element::class} ${element.render()}")
|
||||
}
|
||||
|
||||
override fun visitField(field: FirField, data: Any?): IrField = whileAnalysing(field) {
|
||||
override fun visitField(field: FirField, data: Any?): IrField = whileAnalysing(session, field) {
|
||||
if (field.isSynthetic) {
|
||||
return declarationStorage.getCachedIrDelegateOrBackingField(field)!!.apply {
|
||||
// If this is a property backing field, then it has no separate initializer,
|
||||
@@ -105,13 +105,13 @@ class Fir2IrVisitor(
|
||||
|
||||
// ==================================================================================
|
||||
|
||||
override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Any?): IrElement = whileAnalysing(typeAlias) {
|
||||
override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Any?): IrElement = whileAnalysing(session, typeAlias) {
|
||||
val irTypeAlias = classifierStorage.getCachedTypeAlias(typeAlias)!!
|
||||
annotationGenerator.generate(irTypeAlias, typeAlias)
|
||||
return irTypeAlias
|
||||
}
|
||||
|
||||
override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Any?): IrElement = whileAnalysing(enumEntry) {
|
||||
override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Any?): IrElement = whileAnalysing(session, enumEntry) {
|
||||
val irEnumEntry = classifierStorage.getCachedIrEnumEntry(enumEntry)!!
|
||||
annotationGenerator.generate(irEnumEntry, enumEntry)
|
||||
val correspondingClass = irEnumEntry.correspondingClass
|
||||
@@ -168,7 +168,7 @@ class Fir2IrVisitor(
|
||||
return irEnumEntry
|
||||
}
|
||||
|
||||
override fun visitRegularClass(regularClass: FirRegularClass, data: Any?): IrElement = whileAnalysing(regularClass) {
|
||||
override fun visitRegularClass(regularClass: FirRegularClass, data: Any?): IrElement = whileAnalysing(session, regularClass) {
|
||||
if (regularClass.visibility == Visibilities.Local) {
|
||||
val irParent = conversionScope.parentFromStack()
|
||||
// NB: for implicit types it is possible that local class is already cached
|
||||
@@ -217,7 +217,7 @@ class Fir2IrVisitor(
|
||||
return visitAnonymousObject(anonymousObjectExpression.anonymousObject, data)
|
||||
}
|
||||
|
||||
override fun visitAnonymousObject(anonymousObject: FirAnonymousObject, data: Any?): IrElement = whileAnalysing(anonymousObject) {
|
||||
override fun visitAnonymousObject(anonymousObject: FirAnonymousObject, data: Any?): IrElement = whileAnalysing(session, anonymousObject) {
|
||||
val irParent = conversionScope.parentFromStack()
|
||||
// NB: for implicit types it is possible that anonymous object is already cached
|
||||
val irAnonymousObject = classifierStorage.getCachedIrClass(anonymousObject)?.apply { this.parent = irParent }
|
||||
@@ -250,7 +250,7 @@ class Fir2IrVisitor(
|
||||
|
||||
// ==================================================================================
|
||||
|
||||
override fun visitConstructor(constructor: FirConstructor, data: Any?): IrElement = whileAnalysing(constructor) {
|
||||
override fun visitConstructor(constructor: FirConstructor, data: Any?): IrElement = whileAnalysing(session, constructor) {
|
||||
val irConstructor = declarationStorage.getCachedIrConstructor(constructor)!!
|
||||
return conversionScope.withFunction(irConstructor) {
|
||||
memberGenerator.convertFunctionContent(irConstructor, constructor, containingClass = conversionScope.containerFirClass())
|
||||
@@ -260,7 +260,7 @@ class Fir2IrVisitor(
|
||||
override fun visitAnonymousInitializer(
|
||||
anonymousInitializer: FirAnonymousInitializer,
|
||||
data: Any?
|
||||
): IrElement = whileAnalysing(anonymousInitializer) {
|
||||
): IrElement = whileAnalysing(session, anonymousInitializer) {
|
||||
val irAnonymousInitializer = declarationStorage.getCachedIrAnonymousInitializer(anonymousInitializer)!!
|
||||
declarationStorage.enterScope(irAnonymousInitializer)
|
||||
irAnonymousInitializer.body = convertToIrBlockBody(anonymousInitializer.body!!)
|
||||
@@ -268,7 +268,7 @@ class Fir2IrVisitor(
|
||||
return irAnonymousInitializer
|
||||
}
|
||||
|
||||
override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: Any?): IrElement = whileAnalysing(simpleFunction) {
|
||||
override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: Any?): IrElement = whileAnalysing(session, simpleFunction) {
|
||||
val irFunction = if (simpleFunction.visibility == Visibilities.Local) {
|
||||
declarationStorage.createIrFunction(
|
||||
simpleFunction, irParent = conversionScope.parent(), predefinedOrigin = IrDeclarationOrigin.LOCAL_FUNCTION, isLocal = true
|
||||
@@ -290,7 +290,7 @@ class Fir2IrVisitor(
|
||||
override fun visitAnonymousFunction(
|
||||
anonymousFunction: FirAnonymousFunction,
|
||||
data: Any?
|
||||
): IrElement = whileAnalysing(anonymousFunction) {
|
||||
): IrElement = whileAnalysing(session, anonymousFunction) {
|
||||
return anonymousFunction.convertWithOffsets { startOffset, endOffset ->
|
||||
val irFunction = declarationStorage.createIrFunction(
|
||||
anonymousFunction,
|
||||
@@ -312,7 +312,7 @@ class Fir2IrVisitor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun visitLocalVariable(variable: FirProperty): IrElement = whileAnalysing(variable) {
|
||||
private fun visitLocalVariable(variable: FirProperty): IrElement = whileAnalysing(session, variable) {
|
||||
assert(variable.isLocal)
|
||||
val delegate = variable.delegate
|
||||
if (delegate != null) {
|
||||
@@ -362,7 +362,7 @@ class Fir2IrVisitor(
|
||||
this@insertImplicitCast.cast(baseExpression, valueType, expectedType)
|
||||
}
|
||||
|
||||
override fun visitProperty(property: FirProperty, data: Any?): IrElement = whileAnalysing(property) {
|
||||
override fun visitProperty(property: FirProperty, data: Any?): IrElement = whileAnalysing(session, property) {
|
||||
if (property.isLocal) return visitLocalVariable(property)
|
||||
val irProperty = declarationStorage.getCachedIrProperty(property)
|
||||
?: return IrErrorExpressionImpl(
|
||||
@@ -470,14 +470,14 @@ class Fir2IrVisitor(
|
||||
return result
|
||||
}
|
||||
|
||||
override fun visitFunctionCall(functionCall: FirFunctionCall, data: Any?): IrExpression = whileAnalysing(functionCall) {
|
||||
override fun visitFunctionCall(functionCall: FirFunctionCall, data: Any?): IrExpression = whileAnalysing(session, functionCall) {
|
||||
return convertToIrCall(functionCall = functionCall, annotationMode = false)
|
||||
}
|
||||
|
||||
override fun visitSafeCallExpression(
|
||||
safeCallExpression: FirSafeCallExpression,
|
||||
data: Any?
|
||||
): IrElement = whileAnalysing(safeCallExpression) {
|
||||
): IrElement = whileAnalysing(session, safeCallExpression) {
|
||||
val explicitReceiverExpression = convertToIrExpression(safeCallExpression.receiver)
|
||||
|
||||
val (receiverVariable, variableSymbol) = components.createTemporaryVariableForSafeCallConstruction(
|
||||
@@ -504,7 +504,7 @@ class Fir2IrVisitor(
|
||||
return callGenerator.convertToIrConstructorCall(annotation)
|
||||
}
|
||||
|
||||
override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: Any?): IrElement = whileAnalysing(annotationCall) {
|
||||
override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: Any?): IrElement = whileAnalysing(session, annotationCall) {
|
||||
return callGenerator.convertToIrConstructorCall(annotationCall)
|
||||
}
|
||||
|
||||
@@ -519,7 +519,7 @@ class Fir2IrVisitor(
|
||||
private fun convertQualifiedAccessExpression(
|
||||
qualifiedAccessExpression: FirQualifiedAccessExpression,
|
||||
annotationMode: Boolean = false
|
||||
): IrExpression = whileAnalysing(qualifiedAccessExpression) {
|
||||
): IrExpression = whileAnalysing(session, qualifiedAccessExpression) {
|
||||
val explicitReceiverExpression = convertToIrReceiverExpression(
|
||||
qualifiedAccessExpression.explicitReceiver, qualifiedAccessExpression.calleeReference
|
||||
)
|
||||
@@ -542,7 +542,7 @@ class Fir2IrVisitor(
|
||||
override fun visitThisReceiverExpression(
|
||||
thisReceiverExpression: FirThisReceiverExpression,
|
||||
data: Any?
|
||||
): IrElement = whileAnalysing(thisReceiverExpression) {
|
||||
): IrElement = whileAnalysing(session, thisReceiverExpression) {
|
||||
val calleeReference = thisReceiverExpression.calleeReference
|
||||
val boundSymbol = calleeReference.boundSymbol
|
||||
if (boundSymbol is FirClassSymbol) {
|
||||
@@ -625,7 +625,7 @@ class Fir2IrVisitor(
|
||||
}
|
||||
|
||||
override fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess, data: Any?): IrElement {
|
||||
return whileAnalysing(callableReferenceAccess) {
|
||||
return whileAnalysing(session, callableReferenceAccess) {
|
||||
convertCallableReferenceAccess(callableReferenceAccess, false)
|
||||
}
|
||||
}
|
||||
@@ -644,7 +644,7 @@ class Fir2IrVisitor(
|
||||
override fun visitVariableAssignment(
|
||||
variableAssignment: FirVariableAssignment,
|
||||
data: Any?
|
||||
): IrElement = whileAnalysing(variableAssignment) {
|
||||
): IrElement = whileAnalysing(session, variableAssignment) {
|
||||
val explicitReceiverExpression = convertToIrReceiverExpression(
|
||||
variableAssignment.explicitReceiver, variableAssignment.calleeReference
|
||||
)
|
||||
@@ -1234,7 +1234,7 @@ class Fir2IrVisitor(
|
||||
override fun visitStringConcatenationCall(
|
||||
stringConcatenationCall: FirStringConcatenationCall,
|
||||
data: Any?
|
||||
): IrElement = whileAnalysing(stringConcatenationCall) {
|
||||
): IrElement = whileAnalysing(session, stringConcatenationCall) {
|
||||
return stringConcatenationCall.convertWithOffsets { startOffset, endOffset ->
|
||||
val arguments = mutableListOf<IrExpression>()
|
||||
val sb = StringBuilder()
|
||||
@@ -1282,12 +1282,12 @@ class Fir2IrVisitor(
|
||||
}
|
||||
|
||||
override fun visitEqualityOperatorCall(equalityOperatorCall: FirEqualityOperatorCall, data: Any?): IrElement {
|
||||
return whileAnalysing(equalityOperatorCall) {
|
||||
return whileAnalysing(session, equalityOperatorCall) {
|
||||
operatorGenerator.convertEqualityOperatorCall(equalityOperatorCall)
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitCheckNotNullCall(checkNotNullCall: FirCheckNotNullCall, data: Any?): IrElement = whileAnalysing(checkNotNullCall) {
|
||||
override fun visitCheckNotNullCall(checkNotNullCall: FirCheckNotNullCall, data: Any?): IrElement = whileAnalysing(session, checkNotNullCall) {
|
||||
return checkNotNullCall.convertWithOffsets { startOffset, endOffset ->
|
||||
IrCallImpl(
|
||||
startOffset, endOffset,
|
||||
@@ -1303,7 +1303,7 @@ class Fir2IrVisitor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitGetClassCall(getClassCall: FirGetClassCall, data: Any?): IrElement = whileAnalysing(getClassCall) {
|
||||
override fun visitGetClassCall(getClassCall: FirGetClassCall, data: Any?): IrElement = whileAnalysing(session, getClassCall) {
|
||||
val argument = getClassCall.argument
|
||||
val irType = getClassCall.typeRef.toIrType()
|
||||
val irClassType =
|
||||
@@ -1368,14 +1368,14 @@ class Fir2IrVisitor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitArrayOfCall(arrayOfCall: FirArrayOfCall, data: Any?): IrElement = whileAnalysing(arrayOfCall) {
|
||||
override fun visitArrayOfCall(arrayOfCall: FirArrayOfCall, data: Any?): IrElement = whileAnalysing(session, arrayOfCall) {
|
||||
return convertToArrayOfCall(arrayOfCall, annotationMode = false)
|
||||
}
|
||||
|
||||
override fun visitAugmentedArraySetCall(
|
||||
augmentedArraySetCall: FirAugmentedArraySetCall,
|
||||
data: Any?
|
||||
): IrElement = whileAnalysing(augmentedArraySetCall) {
|
||||
): IrElement = whileAnalysing(session, augmentedArraySetCall) {
|
||||
return augmentedArraySetCall.convertWithOffsets { startOffset, endOffset ->
|
||||
IrErrorCallExpressionImpl(
|
||||
startOffset, endOffset, irBuiltIns.unitType,
|
||||
|
||||
+12
-12
@@ -143,7 +143,7 @@ open class FirDesignatedStatusResolveTransformer(
|
||||
override fun transformClassContent(
|
||||
firClass: FirClass,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(firClass) {
|
||||
): FirStatement = whileAnalysing(session, firClass) {
|
||||
if (designation.shouldSkipClass(firClass)) return firClass
|
||||
firClass.symbol.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||
val classLocated = designation.classLocated
|
||||
@@ -238,7 +238,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformDeclaration(
|
||||
declaration: FirDeclaration,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirDeclaration = whileAnalysing(declaration) {
|
||||
): FirDeclaration = whileAnalysing(session, declaration) {
|
||||
return when (declaration) {
|
||||
is FirCallableDeclaration -> {
|
||||
if (declaration is FirFunction) {
|
||||
@@ -257,7 +257,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformTypeAlias(
|
||||
typeAlias: FirTypeAlias,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(typeAlias) {
|
||||
): FirStatement = whileAnalysing(session, typeAlias) {
|
||||
typeAlias.typeParameters.forEach { transformDeclaration(it, data) }
|
||||
typeAlias.transformStatus(this, statusResolver.resolveStatus(typeAlias, containingClass, isLocal = false))
|
||||
return transformDeclaration(typeAlias, data) as FirTypeAlias
|
||||
@@ -266,7 +266,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformRegularClass(
|
||||
regularClass: FirRegularClass,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(regularClass) {
|
||||
): FirStatement = whileAnalysing(session, regularClass) {
|
||||
transformClassContent(regularClass, data)
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformAnonymousObject(
|
||||
anonymousObject: FirAnonymousObject,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(anonymousObject) {
|
||||
): FirStatement = whileAnalysing(session, anonymousObject) {
|
||||
transformClassContent(anonymousObject, data)
|
||||
}
|
||||
|
||||
@@ -314,7 +314,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformClass(
|
||||
klass: FirClass,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(klass) {
|
||||
): FirStatement = whileAnalysing(session, klass) {
|
||||
return storeClass(klass) {
|
||||
klass.typeParameters.forEach { it.transformSingle(this, data) }
|
||||
transformDeclarationContent(klass, data)
|
||||
@@ -379,7 +379,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
propertyAccessor: FirPropertyAccessor,
|
||||
containingProperty: FirProperty,
|
||||
overriddenStatuses: List<FirResolvedDeclarationStatus> = emptyList(),
|
||||
): Unit = whileAnalysing(propertyAccessor) {
|
||||
): Unit = whileAnalysing(session, propertyAccessor) {
|
||||
propertyAccessor.transformStatus(
|
||||
this,
|
||||
statusResolver.resolveStatus(
|
||||
@@ -397,7 +397,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformConstructor(
|
||||
constructor: FirConstructor,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(constructor) {
|
||||
): FirStatement = whileAnalysing(session, constructor) {
|
||||
constructor.transformStatus(this, statusResolver.resolveStatus(constructor, containingClass, isLocal = false))
|
||||
calculateDeprecations(constructor)
|
||||
return transformDeclaration(constructor, data) as FirStatement
|
||||
@@ -406,7 +406,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformSimpleFunction(
|
||||
simpleFunction: FirSimpleFunction,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(simpleFunction) {
|
||||
): FirStatement = whileAnalysing(session, simpleFunction) {
|
||||
val resolvedStatus = statusResolver.resolveStatus(simpleFunction, containingClass, isLocal = false)
|
||||
simpleFunction.transformStatus(this, resolvedStatus)
|
||||
calculateDeprecations(simpleFunction)
|
||||
@@ -416,7 +416,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformProperty(
|
||||
property: FirProperty,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(property) {
|
||||
): FirStatement = whileAnalysing(session, property) {
|
||||
val overridden = statusResolver.getOverriddenProperties(property, containingClass)
|
||||
|
||||
val overriddenProperties = overridden.map { it.status as FirResolvedDeclarationStatus }
|
||||
@@ -448,7 +448,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformField(
|
||||
field: FirField,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(field) {
|
||||
): FirStatement = whileAnalysing(session, field) {
|
||||
field.transformStatus(this, statusResolver.resolveStatus(field, containingClass, isLocal = false))
|
||||
calculateDeprecations(field)
|
||||
return transformDeclaration(field, data) as FirField
|
||||
@@ -461,7 +461,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
override fun transformEnumEntry(
|
||||
enumEntry: FirEnumEntry,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement = whileAnalysing(enumEntry) {
|
||||
): FirStatement = whileAnalysing(session, enumEntry) {
|
||||
enumEntry.transformStatus(this, statusResolver.resolveStatus(enumEntry, containingClass, isLocal = false))
|
||||
calculateDeprecations(enumEntry)
|
||||
return transformDeclaration(enumEntry, data) as FirEnumEntry
|
||||
|
||||
+9
-9
@@ -78,7 +78,7 @@ open class FirTypeResolveTransformer(
|
||||
}
|
||||
|
||||
override fun transformRegularClass(regularClass: FirRegularClass, data: Any?): FirStatement {
|
||||
whileAnalysing(regularClass) {
|
||||
whileAnalysing(session, regularClass) {
|
||||
withClassDeclarationCleanup(classDeclarationsStack, regularClass) {
|
||||
withScopeCleanup {
|
||||
regularClass.addTypeParametersScope()
|
||||
@@ -99,21 +99,21 @@ open class FirTypeResolveTransformer(
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformConstructor(constructor: FirConstructor, data: Any?): FirConstructor = whileAnalysing(constructor) {
|
||||
override fun transformConstructor(constructor: FirConstructor, data: Any?): FirConstructor = whileAnalysing(session, constructor) {
|
||||
return withScopeCleanup {
|
||||
constructor.addTypeParametersScope()
|
||||
transformDeclaration(constructor, data)
|
||||
} as FirConstructor
|
||||
}
|
||||
|
||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: Any?): FirTypeAlias = whileAnalysing(typeAlias) {
|
||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: Any?): FirTypeAlias = whileAnalysing(session, typeAlias) {
|
||||
return withScopeCleanup {
|
||||
typeAlias.addTypeParametersScope()
|
||||
transformDeclaration(typeAlias, data)
|
||||
} as FirTypeAlias
|
||||
}
|
||||
|
||||
override fun transformEnumEntry(enumEntry: FirEnumEntry, data: Any?): FirEnumEntry = whileAnalysing(enumEntry) {
|
||||
override fun transformEnumEntry(enumEntry: FirEnumEntry, data: Any?): FirEnumEntry = whileAnalysing(session, enumEntry) {
|
||||
enumEntry.transformReturnTypeRef(this, data)
|
||||
enumEntry.transformTypeParameters(this, data)
|
||||
enumEntry.transformAnnotations(this, data)
|
||||
@@ -124,7 +124,7 @@ open class FirTypeResolveTransformer(
|
||||
return receiverParameter.transformAnnotations(this, data).transformTypeRef(this, data)
|
||||
}
|
||||
|
||||
override fun transformProperty(property: FirProperty, data: Any?): FirProperty = whileAnalysing(property) {
|
||||
override fun transformProperty(property: FirProperty, data: Any?): FirProperty = whileAnalysing(session, property) {
|
||||
return withScopeCleanup {
|
||||
property.addTypeParametersScope()
|
||||
property.transformTypeParameters(this, data)
|
||||
@@ -156,7 +156,7 @@ open class FirTypeResolveTransformer(
|
||||
property.setter?.valueParameters?.map { it.replaceReturnTypeRef(property.returnTypeRef) }
|
||||
}
|
||||
|
||||
override fun transformField(field: FirField, data: Any?): FirField = whileAnalysing(field) {
|
||||
override fun transformField(field: FirField, data: Any?): FirField = whileAnalysing(session, field) {
|
||||
return withScopeCleanup {
|
||||
field.transformReturnTypeRef(this, data).transformAnnotations(this, data)
|
||||
field
|
||||
@@ -166,7 +166,7 @@ open class FirTypeResolveTransformer(
|
||||
override fun transformSimpleFunction(
|
||||
simpleFunction: FirSimpleFunction,
|
||||
data: Any?
|
||||
): FirSimpleFunction = whileAnalysing(simpleFunction) {
|
||||
): FirSimpleFunction = whileAnalysing(session, simpleFunction) {
|
||||
return withScopeCleanup {
|
||||
simpleFunction.addTypeParametersScope()
|
||||
transformDeclaration(simpleFunction, data).also {
|
||||
@@ -217,7 +217,7 @@ open class FirTypeResolveTransformer(
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformValueParameter(valueParameter: FirValueParameter, data: Any?): FirStatement = whileAnalysing(valueParameter) {
|
||||
override fun transformValueParameter(valueParameter: FirValueParameter, data: Any?): FirStatement = whileAnalysing(session, valueParameter) {
|
||||
valueParameter.transformReturnTypeRef(this, data)
|
||||
valueParameter.transformAnnotations(this, data)
|
||||
valueParameter.transformVarargTypeToArrayType()
|
||||
@@ -232,7 +232,7 @@ open class FirTypeResolveTransformer(
|
||||
shouldNotBeCalled()
|
||||
}
|
||||
|
||||
override fun transformAnnotationCall(annotationCall: FirAnnotationCall, data: Any?): FirStatement = whileAnalysing(annotationCall) {
|
||||
override fun transformAnnotationCall(annotationCall: FirAnnotationCall, data: Any?): FirStatement = whileAnalysing(session, annotationCall) {
|
||||
when (val originalTypeRef = annotationCall.annotationTypeRef) {
|
||||
is FirResolvedTypeRef -> {
|
||||
when (annotationCall.annotationResolvePhase) {
|
||||
|
||||
+19
-16
@@ -38,7 +38,10 @@ import org.jetbrains.kotlin.fir.resolve.inference.ResolvedLambdaAtom
|
||||
import org.jetbrains.kotlin.fir.resolve.inference.extractLambdaInfoFromFunctionalType
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.createTypeSubstitutorByTypeConstructor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.*
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirCallCompletionResultsWriterTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirStatusResolver
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.toExpectedType
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.transformVarargTypeToArrayType
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirMemberTypeParameterScope
|
||||
import org.jetbrains.kotlin.fir.symbols.constructStarProjectedType
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
@@ -111,7 +114,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformProperty(property: FirProperty, data: ResolutionMode): FirProperty = whileAnalysing(property) {
|
||||
override fun transformProperty(property: FirProperty, data: ResolutionMode): FirProperty = whileAnalysing(session, property) {
|
||||
require(property !is FirSyntheticProperty) { "Synthetic properties should not be processed by body transformers" }
|
||||
|
||||
if (property.isLocal) {
|
||||
@@ -207,7 +210,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformField(field: FirField, data: ResolutionMode): FirField = whileAnalysing(field) {
|
||||
override fun transformField(field: FirField, data: ResolutionMode): FirField = whileAnalysing(session, field) {
|
||||
val returnTypeRef = field.returnTypeRef
|
||||
if (implicitTypeOnly) return field
|
||||
if (field.initializerResolved) return field
|
||||
@@ -374,7 +377,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
return delegateExpression
|
||||
}
|
||||
|
||||
private fun transformLocalVariable(variable: FirProperty): FirProperty = whileAnalysing(variable) {
|
||||
private fun transformLocalVariable(variable: FirProperty): FirProperty = whileAnalysing(session, variable) {
|
||||
assert(variable.isLocal)
|
||||
val delegate = variable.delegate
|
||||
|
||||
@@ -456,7 +459,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
accessor: FirPropertyAccessor,
|
||||
enhancedTypeRef: FirTypeRef,
|
||||
owner: FirProperty
|
||||
): Unit = whileAnalysing(accessor) {
|
||||
): Unit = whileAnalysing(session, accessor) {
|
||||
context.withPropertyAccessor(owner, accessor, components) {
|
||||
if (accessor is FirDefaultPropertyAccessor || accessor.body == null) {
|
||||
transformFunction(accessor, withExpectedType(enhancedTypeRef))
|
||||
@@ -491,7 +494,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
)
|
||||
}
|
||||
|
||||
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): FirStatement = whileAnalysing(regularClass) {
|
||||
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): FirStatement = whileAnalysing(session, regularClass) {
|
||||
return context.withContainingClass(regularClass) {
|
||||
if (regularClass.isLocal && regularClass !in context.targetedLocalClasses) {
|
||||
return regularClass.runAllPhasesForLocalClass(
|
||||
@@ -520,7 +523,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
return result
|
||||
}
|
||||
|
||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: ResolutionMode): FirTypeAlias = whileAnalysing(typeAlias) {
|
||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: ResolutionMode): FirTypeAlias = whileAnalysing(session, typeAlias) {
|
||||
if (typeAlias.isLocal && typeAlias !in context.targetedLocalClasses) {
|
||||
return typeAlias.runAllPhasesForLocalClass(
|
||||
transformer,
|
||||
@@ -560,7 +563,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
override fun transformAnonymousObject(
|
||||
anonymousObject: FirAnonymousObject,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(anonymousObject) {
|
||||
): FirStatement = whileAnalysing(session, anonymousObject) {
|
||||
if (anonymousObject !in context.targetedLocalClasses) {
|
||||
return anonymousObject.runAllPhasesForLocalClass(
|
||||
transformer,
|
||||
@@ -618,7 +621,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
override fun transformSimpleFunction(
|
||||
simpleFunction: FirSimpleFunction,
|
||||
data: ResolutionMode
|
||||
): FirSimpleFunction = whileAnalysing(simpleFunction) {
|
||||
): FirSimpleFunction = whileAnalysing(session, simpleFunction) {
|
||||
if (simpleFunction.bodyResolved) {
|
||||
return simpleFunction
|
||||
}
|
||||
@@ -682,7 +685,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
override fun transformFunction(
|
||||
function: FirFunction,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(function) {
|
||||
): FirStatement = whileAnalysing(session, function) {
|
||||
val functionIsNotAnalyzed = !function.bodyResolved
|
||||
if (functionIsNotAnalyzed) {
|
||||
dataFlowAnalyzer.enterFunction(function)
|
||||
@@ -697,7 +700,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
} as FirStatement
|
||||
}
|
||||
|
||||
override fun transformConstructor(constructor: FirConstructor, data: ResolutionMode): FirConstructor = whileAnalysing(constructor) {
|
||||
override fun transformConstructor(constructor: FirConstructor, data: ResolutionMode): FirConstructor = whileAnalysing(session, constructor) {
|
||||
if (implicitTypeOnly) return constructor
|
||||
val container = context.containerIfAny as? FirRegularClass
|
||||
if (constructor.isPrimary && container?.classKind == ClassKind.ANNOTATION_CLASS) {
|
||||
@@ -738,7 +741,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
override fun transformAnonymousInitializer(
|
||||
anonymousInitializer: FirAnonymousInitializer,
|
||||
data: ResolutionMode
|
||||
): FirAnonymousInitializer = whileAnalysing(anonymousInitializer) {
|
||||
): FirAnonymousInitializer = whileAnalysing(session, anonymousInitializer) {
|
||||
if (implicitTypeOnly) return anonymousInitializer
|
||||
dataFlowAnalyzer.enterInitBlock(anonymousInitializer)
|
||||
return context.withAnonymousInitializer(anonymousInitializer, session) {
|
||||
@@ -753,7 +756,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
override fun transformValueParameter(
|
||||
valueParameter: FirValueParameter,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(valueParameter) {
|
||||
): FirStatement = whileAnalysing(session, valueParameter) {
|
||||
dataFlowAnalyzer.enterValueParameter(valueParameter)
|
||||
val result = context.withValueParameter(valueParameter, session) {
|
||||
transformDeclarationContent(
|
||||
@@ -772,7 +775,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
override fun transformAnonymousFunction(
|
||||
anonymousFunction: FirAnonymousFunction,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(anonymousFunction) {
|
||||
): FirStatement = whileAnalysing(session, anonymousFunction) {
|
||||
// Either ContextDependent, ContextIndependent or WithExpectedType could be here
|
||||
if (data !is ResolutionMode.LambdaResolution) {
|
||||
anonymousFunction.transformReturnTypeRef(transformer, ResolutionMode.ContextIndependent)
|
||||
@@ -1023,7 +1026,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
override fun transformBackingField(
|
||||
backingField: FirBackingField,
|
||||
data: ResolutionMode,
|
||||
): FirStatement = whileAnalysing(backingField) {
|
||||
): FirStatement = whileAnalysing(session, backingField) {
|
||||
val propertyType = data.expectedType
|
||||
val initializerData = if (backingField.returnTypeRef is FirResolvedTypeRef) {
|
||||
withExpectedType(backingField.returnTypeRef)
|
||||
@@ -1127,7 +1130,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirAbstractBodyResolve
|
||||
return element
|
||||
}
|
||||
|
||||
override fun transformValueParameter(valueParameter: FirValueParameter, data: Any?): FirStatement = whileAnalysing(valueParameter) {
|
||||
override fun transformValueParameter(valueParameter: FirValueParameter, data: Any?): FirStatement = whileAnalysing(valueParameter.moduleData.session, valueParameter) {
|
||||
if (valueParameter.returnTypeRef is FirImplicitTypeRef) {
|
||||
valueParameter.replaceReturnTypeRef(
|
||||
valueParameter.returnTypeRef.resolvedTypeFromPrototype(
|
||||
|
||||
+15
-15
@@ -84,7 +84,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformQualifiedAccessExpression(
|
||||
qualifiedAccessExpression: FirQualifiedAccessExpression,
|
||||
data: ResolutionMode,
|
||||
): FirStatement = whileAnalysing(qualifiedAccessExpression) {
|
||||
): FirStatement = whileAnalysing(session, qualifiedAccessExpression) {
|
||||
transformQualifiedAccessExpression(qualifiedAccessExpression, data, isUsedAsReceiver = false)
|
||||
}
|
||||
|
||||
@@ -338,7 +338,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
safeCallExpression: FirSafeCallExpression,
|
||||
data: ResolutionMode
|
||||
): FirStatement {
|
||||
whileAnalysing(safeCallExpression) {
|
||||
whileAnalysing(session, safeCallExpression) {
|
||||
withContainingSafeCallExpression(safeCallExpression) {
|
||||
safeCallExpression.transformAnnotations(this, ResolutionMode.ContextIndependent)
|
||||
safeCallExpression.transformReceiver(this, ResolutionMode.ContextIndependent)
|
||||
@@ -377,7 +377,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
return checkedSafeCallSubject
|
||||
}
|
||||
|
||||
override fun transformFunctionCall(functionCall: FirFunctionCall, data: ResolutionMode): FirStatement = whileAnalysing(functionCall) {
|
||||
override fun transformFunctionCall(functionCall: FirFunctionCall, data: ResolutionMode): FirStatement = whileAnalysing(session, functionCall) {
|
||||
val calleeReference = functionCall.calleeReference
|
||||
if (
|
||||
(calleeReference is FirResolvedNamedReference || calleeReference is FirErrorNamedReference) &&
|
||||
@@ -542,7 +542,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformComparisonExpression(
|
||||
comparisonExpression: FirComparisonExpression,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(comparisonExpression) {
|
||||
): FirStatement = whileAnalysing(session, comparisonExpression) {
|
||||
return (comparisonExpression.transformChildren(transformer, ResolutionMode.ContextIndependent) as FirComparisonExpression).also {
|
||||
it.resultType = comparisonExpression.typeRef.resolvedTypeFromPrototype(builtinTypes.booleanType.type)
|
||||
dataFlowAnalyzer.exitComparisonExpressionCall(it)
|
||||
@@ -552,7 +552,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformAssignmentOperatorStatement(
|
||||
assignmentOperatorStatement: FirAssignmentOperatorStatement,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(assignmentOperatorStatement) {
|
||||
): FirStatement = whileAnalysing(session, assignmentOperatorStatement) {
|
||||
val operation = assignmentOperatorStatement.operation
|
||||
require(operation != FirOperation.ASSIGN)
|
||||
|
||||
@@ -679,7 +679,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformEqualityOperatorCall(
|
||||
equalityOperatorCall: FirEqualityOperatorCall,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(equalityOperatorCall) {
|
||||
): FirStatement = whileAnalysing(session, equalityOperatorCall) {
|
||||
// Currently, we use expectedType=Any? for both operands
|
||||
// In FE1.0, it's only used for the right
|
||||
// But it seems a bit inconsistent (see KT-47409)
|
||||
@@ -852,7 +852,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformBinaryLogicExpression(
|
||||
binaryLogicExpression: FirBinaryLogicExpression,
|
||||
data: ResolutionMode,
|
||||
): FirStatement = whileAnalysing(binaryLogicExpression) {
|
||||
): FirStatement = whileAnalysing(session, binaryLogicExpression) {
|
||||
val booleanType = binaryLogicExpression.typeRef.resolvedTypeFromPrototype(builtinTypes.booleanType.type)
|
||||
return binaryLogicExpression.also(dataFlowAnalyzer::enterBinaryLogicExpression)
|
||||
.transformLeftOperand(this, ResolutionMode.WithExpectedType(booleanType))
|
||||
@@ -866,7 +866,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformVariableAssignment(
|
||||
variableAssignment: FirVariableAssignment,
|
||||
data: ResolutionMode,
|
||||
): FirStatement = whileAnalysing(variableAssignment) {
|
||||
): FirStatement = whileAnalysing(session, variableAssignment) {
|
||||
// val resolvedAssignment = transformCallee(variableAssignment)
|
||||
variableAssignment.transformAnnotations(transformer, ResolutionMode.ContextIndependent)
|
||||
val resolvedAssignment = callResolver.resolveVariableAccessAndSelectCandidate(variableAssignment, isUsedAsReceiver = false)
|
||||
@@ -912,7 +912,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformCallableReferenceAccess(
|
||||
callableReferenceAccess: FirCallableReferenceAccess,
|
||||
data: ResolutionMode,
|
||||
): FirStatement = whileAnalysing(callableReferenceAccess) {
|
||||
): FirStatement = whileAnalysing(session, callableReferenceAccess) {
|
||||
if (callableReferenceAccess.calleeReference is FirResolvedNamedReference) {
|
||||
return callableReferenceAccess
|
||||
}
|
||||
@@ -953,7 +953,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformGetClassCall(
|
||||
getClassCall: FirGetClassCall,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(getClassCall) {
|
||||
): FirStatement = whileAnalysing(session, getClassCall) {
|
||||
getClassCall.transformAnnotations(transformer, ResolutionMode.ContextIndependent)
|
||||
val arg = getClassCall.argument
|
||||
val dataForLhs = if (arg is FirConstExpression<*>) {
|
||||
@@ -1096,7 +1096,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformAnnotationCall(
|
||||
annotationCall: FirAnnotationCall,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(annotationCall) {
|
||||
): FirStatement = whileAnalysing(session, annotationCall) {
|
||||
if (annotationCall.resolved) return annotationCall
|
||||
annotationCall.transformAnnotationTypeRef(transformer, ResolutionMode.ContextIndependent)
|
||||
annotationCall.replaceAnnotationResolvePhase(FirAnnotationResolvePhase.Types)
|
||||
@@ -1129,7 +1129,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformDelegatedConstructorCall(
|
||||
delegatedConstructorCall: FirDelegatedConstructorCall,
|
||||
data: ResolutionMode,
|
||||
): FirStatement = whileAnalysing(delegatedConstructorCall) {
|
||||
): FirStatement = whileAnalysing(session, delegatedConstructorCall) {
|
||||
if (transformer.implicitTypeOnly) return delegatedConstructorCall
|
||||
when (delegatedConstructorCall.calleeReference) {
|
||||
is FirResolvedNamedReference, is FirErrorNamedReference -> return delegatedConstructorCall
|
||||
@@ -1239,7 +1239,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformAugmentedArraySetCall(
|
||||
augmentedArraySetCall: FirAugmentedArraySetCall,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(augmentedArraySetCall) {
|
||||
): FirStatement = whileAnalysing(session, augmentedArraySetCall) {
|
||||
/*
|
||||
* a[b] += c can be desugared to:
|
||||
*
|
||||
@@ -1470,7 +1470,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
)
|
||||
}
|
||||
|
||||
override fun transformArrayOfCall(arrayOfCall: FirArrayOfCall, data: ResolutionMode): FirStatement = whileAnalysing(arrayOfCall) {
|
||||
override fun transformArrayOfCall(arrayOfCall: FirArrayOfCall, data: ResolutionMode): FirStatement = whileAnalysing(session, arrayOfCall) {
|
||||
if (data is ResolutionMode.ContextDependent) {
|
||||
arrayOfCall.transformChildren(transformer, data)
|
||||
return arrayOfCall
|
||||
@@ -1484,7 +1484,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
override fun transformStringConcatenationCall(
|
||||
stringConcatenationCall: FirStringConcatenationCall,
|
||||
data: ResolutionMode
|
||||
): FirStatement = whileAnalysing(stringConcatenationCall) {
|
||||
): FirStatement = whileAnalysing(session, stringConcatenationCall) {
|
||||
dataFlowAnalyzer.enterStringConcatenationCall()
|
||||
stringConcatenationCall.transformChildren(transformer, ResolutionMode.ContextIndependent)
|
||||
dataFlowAnalyzer.exitStringConcatenationCall(stringConcatenationCall)
|
||||
|
||||
@@ -6,10 +6,16 @@
|
||||
package org.jetbrains.kotlin.fir
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.*
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.KtPsiSourceElement
|
||||
import org.jetbrains.kotlin.KtRealPsiSourceElement
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fakeElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirContextReceiver
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
@@ -20,8 +26,6 @@ import org.jetbrains.kotlin.fir.types.builder.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.*
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
// TODO: rewrite
|
||||
fun FirBlock.returnExpressions(): List<FirExpression> = listOfNotNull(statements.lastOrNull() as? FirExpression)
|
||||
@@ -133,7 +137,8 @@ fun FirDeclarationStatus.copy(
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <R> whileAnalysing(element: FirElement, block: () -> R) = org.jetbrains.kotlin.util.whileAnalysing(element.source, block)
|
||||
inline fun <R> whileAnalysing(@Suppress("UNUSED_PARAMETER") session: FirSession, element: FirElement, block: () -> R) =
|
||||
org.jetbrains.kotlin.util.whileAnalysing(element.source, block)
|
||||
|
||||
inline fun <R> withFileAnalysisExceptionWrapping(file: FirFile, block: () -> R): R {
|
||||
return org.jetbrains.kotlin.util.withFileAnalysisExceptionWrapping(
|
||||
|
||||
Reference in New Issue
Block a user