[FIR] Fix all usages of declarationSiteSession

This commit is contained in:
Dmitriy Novozhilov
2021-04-29 17:44:07 +03:00
committed by TeamCityServer
parent a15316de24
commit 5cfa8694d4
177 changed files with 775 additions and 625 deletions
@@ -46,6 +46,7 @@ import org.jetbrains.kotlin.util.OperatorNameConventions
@ThreadSafeMutableState
class JavaSymbolProvider(
session: FirSession,
val baseModuleData: FirModuleData,
val project: Project,
private val searchScope: GlobalSearchScope,
) : FirSymbolProvider(session) {
@@ -103,7 +104,7 @@ class JavaSymbolProvider(
javaTypeParameterStack: JavaTypeParameterStack
): FirTypeParameter {
return FirTypeParameterBuilder().apply {
declarationSiteSession = session
moduleData = this@JavaSymbolProvider.baseModuleData
origin = FirDeclarationOrigin.Java
this.name = this@toFirTypeParameter.name
symbol = firSymbol
@@ -230,7 +231,7 @@ class JavaSymbolProvider(
val classIsAnnotation = javaClass.classKind == ClassKind.ANNOTATION_CLASS
return buildJavaClass {
source = (javaClass as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement()
declarationSiteSession = session
moduleData = this@JavaSymbolProvider.baseModuleData
symbol = classSymbol
name = javaClass.name
val visibility = javaClass.visibility
@@ -325,11 +326,11 @@ class JavaSymbolProvider(
if (classKind == ClassKind.ENUM_CLASS) {
generateValuesFunction(
session,
baseModuleData,
classId.packageFqName,
classId.relativeClassName
)
generateValueOfFunction(session, classId.packageFqName, classId.relativeClassName)
generateValueOfFunction(baseModuleData, classId.packageFqName, classId.relativeClassName)
}
if (classIsAnnotation) {
declarations +=
@@ -373,7 +374,7 @@ class JavaSymbolProvider(
return when {
javaField.isEnumEntry -> buildEnumEntry {
source = (javaField as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement()
declarationSiteSession = session
moduleData = this@JavaSymbolProvider.baseModuleData
symbol = FirVariableSymbol(fieldId)
name = fieldName
status = FirResolvedDeclarationStatusImpl(
@@ -395,7 +396,7 @@ class JavaSymbolProvider(
}
else -> buildJavaField {
source = (javaField as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement()
declarationSiteSession = session
moduleData = this@JavaSymbolProvider.baseModuleData
symbol = FirFieldSymbol(fieldId)
name = fieldName
status = FirResolvedDeclarationStatusImpl(
@@ -443,7 +444,7 @@ class JavaSymbolProvider(
val methodSymbol = FirNamedFunctionSymbol(methodId)
val returnType = javaMethod.returnType
return buildJavaMethod {
declarationSiteSession = session
moduleData = this@JavaSymbolProvider.baseModuleData
source = (javaMethod as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement()
symbol = methodSymbol
name = methodName
@@ -454,7 +455,7 @@ class JavaSymbolProvider(
typeParameters += javaMethod.typeParameters.convertTypeParameters(javaTypeParameterStack)
for ((index, valueParameter) in javaMethod.valueParameters.withIndex()) {
valueParameters += valueParameter.toFirValueParameter(
this@JavaSymbolProvider.session, index, javaTypeParameterStack,
this@JavaSymbolProvider.session, moduleData, index, javaTypeParameterStack,
)
}
annotationBuilder = { javaMethod.annotations.map { it.toFirAnnotationCall(session, javaTypeParameterStack) } }
@@ -491,7 +492,7 @@ class JavaSymbolProvider(
buildJavaValueParameter {
source = (javaMethod as? JavaElementImpl<*>)?.psi
?.toFirPsiSourceElement(FirFakeSourceElementKind.ImplicitJavaAnnotationConstructor)
declarationSiteSession = session
moduleData = this@JavaSymbolProvider.baseModuleData
returnTypeRef = firJavaMethod.returnTypeRef
name = javaMethod.name
isVararg = javaMethod.returnType is JavaArrayType && javaMethod.name == VALUE_METHOD_NAME
@@ -509,7 +510,7 @@ class JavaSymbolProvider(
val constructorSymbol = FirConstructorSymbol(constructorId)
return buildJavaConstructor {
source = (javaConstructor as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement()
declarationSiteSession = session
moduleData = this@JavaSymbolProvider.baseModuleData
symbol = constructorSymbol
isInner = javaClass.outerClass != null && !javaClass.isStatic
val isThisInner = this.isInner
@@ -536,7 +537,7 @@ class JavaSymbolProvider(
annotationBuilder = { javaConstructor.annotations.map { it.toFirAnnotationCall(session, javaTypeParameterStack) } }
for ((index, valueParameter) in javaConstructor.valueParameters.withIndex()) {
valueParameters += valueParameter.toFirValueParameter(
this@JavaSymbolProvider.session, index, javaTypeParameterStack,
this@JavaSymbolProvider.session, moduleData, index, javaTypeParameterStack,
)
}
} else {
@@ -555,7 +556,7 @@ class JavaSymbolProvider(
): FirJavaConstructor {
return buildJavaConstructor {
source = classSource
declarationSiteSession = session
moduleData = this@JavaSymbolProvider.baseModuleData
symbol = FirConstructorSymbol(constructorId)
status = FirResolvedDeclarationStatusImpl(Visibilities.Public, Modality.FINAL, EffectiveVisibility.Public)
returnTypeRef = buildResolvedTypeRef {
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.expectedConeType
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.firUnsafe
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.*
@@ -48,6 +47,7 @@ import org.jetbrains.kotlin.load.java.typeEnhancement.TypeComponentPosition
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.types.ConstantValueKind
import org.jetbrains.kotlin.types.Variance.*
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
@@ -57,6 +57,33 @@ import java.lang.annotation.Documented
import java.lang.annotation.Retention
import java.lang.annotation.Target
import java.util.*
import kotlin.Any
import kotlin.Array
import kotlin.Boolean
import kotlin.BooleanArray
import kotlin.Byte
import kotlin.ByteArray
import kotlin.Char
import kotlin.CharArray
import kotlin.Double
import kotlin.DoubleArray
import kotlin.Float
import kotlin.FloatArray
import kotlin.Int
import kotlin.IntArray
import kotlin.Long
import kotlin.LongArray
import kotlin.Short
import kotlin.ShortArray
import kotlin.String
import kotlin.Suppress
import kotlin.also
import kotlin.arrayOf
import kotlin.emptyArray
import kotlin.error
import kotlin.let
import kotlin.run
import kotlin.to
internal val JavaModifierListOwner.modality: Modality
get() = when {
@@ -586,11 +613,11 @@ internal fun MutableList<FirAnnotationCall>.addAnnotationsFrom(
}
internal fun JavaValueParameter.toFirValueParameter(
session: FirSession, index: Int, javaTypeParameterStack: JavaTypeParameterStack
session: FirSession, moduleData: FirModuleData, index: Int, javaTypeParameterStack: JavaTypeParameterStack
): FirValueParameter {
return buildJavaValueParameter {
source = (this@toFirValueParameter as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement()
declarationSiteSession = session
this.moduleData = moduleData
name = this@toFirValueParameter.name ?: Name.identifier("p$index")
returnTypeRef = type.toFirJavaTypeRef(session, javaTypeParameterStack)
isVararg = this@toFirValueParameter.isVararg
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.fir.java.declarations
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.FirImplementationDetail
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.*
@@ -31,7 +31,7 @@ import kotlin.properties.Delegates
@OptIn(FirImplementationDetail::class)
class FirJavaClass @FirImplementationDetail internal constructor(
override val source: FirSourceElement?,
override val declarationSiteSession: FirSession,
override val moduleData: FirModuleData,
override var resolvePhase: FirResolvePhase,
override val name: Name,
override val annotations: MutableList<FirAnnotationCall>,
@@ -140,7 +140,7 @@ internal class FirJavaClassBuilder : FirRegularClassBuilder(), FirAnnotationCont
override fun build(): FirJavaClass {
return FirJavaClass(
source,
declarationSiteSession,
moduleData,
resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES,
name,
annotations,
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.java.declarations
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirSession
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.*
@@ -29,7 +29,7 @@ import kotlin.properties.Delegates
@OptIn(FirImplementationDetail::class)
class FirJavaConstructor @FirImplementationDetail constructor(
override val source: FirSourceElement?,
override val declarationSiteSession: FirSession,
override val moduleData: FirModuleData,
override val symbol: FirConstructorSymbol,
override val isPrimary: Boolean,
override var returnTypeRef: FirTypeRef,
@@ -151,7 +151,7 @@ class FirJavaConstructorBuilder : FirConstructorBuilder() {
override fun build(): FirJavaConstructor {
return FirJavaConstructor(
source,
declarationSiteSession,
moduleData,
symbol,
isPrimary,
returnTypeRef,
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.java.declarations
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirSession
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.*
@@ -33,7 +33,7 @@ import kotlin.properties.Delegates
@OptIn(FirImplementationDetail::class)
class FirJavaField @FirImplementationDetail constructor(
override val source: FirSourceElement?,
override val declarationSiteSession: FirSession,
override val moduleData: FirModuleData,
override val symbol: FirFieldSymbol,
override val name: Name,
override var resolvePhase: FirResolvePhase,
@@ -156,7 +156,7 @@ internal class FirJavaFieldBuilder : FirFieldBuilder() {
override fun build(): FirJavaField {
return FirJavaField(
source,
declarationSiteSession,
moduleData,
symbol as FirFieldSymbol,
name,
resolvePhase,
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.java.declarations
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirSession
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
@@ -51,7 +51,7 @@ import kotlin.properties.Delegates
@OptIn(FirImplementationDetail::class)
class FirJavaMethod @FirImplementationDetail constructor(
override val source: FirSourceElement?,
override val declarationSiteSession: FirSession,
override val moduleData: FirModuleData,
override var resolvePhase: FirResolvePhase,
override val attributes: FirDeclarationAttributes,
override var returnTypeRef: FirTypeRef,
@@ -181,7 +181,7 @@ val ALL_JAVA_OPERATION_NAMES =
@FirBuilderDsl
class FirJavaMethodBuilder : FirFunctionBuilder, FirTypeParametersOwnerBuilder, FirAnnotationContainerBuilder {
override var source: FirSourceElement? = null
override lateinit var declarationSiteSession: FirSession
override lateinit var moduleData: FirModuleData
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override lateinit var returnTypeRef: FirTypeRef
override val valueParameters: MutableList<FirValueParameter> = mutableListOf()
@@ -209,7 +209,7 @@ class FirJavaMethodBuilder : FirFunctionBuilder, FirTypeParametersOwnerBuilder,
override fun build(): FirJavaMethod {
return FirJavaMethod(
source,
declarationSiteSession,
moduleData,
resolvePhase,
attributes,
returnTypeRef as FirJavaTypeRef,
@@ -235,7 +235,7 @@ inline fun buildJavaMethodCopy(original: FirSimpleFunction, init: FirJavaMethodB
}
val copyBuilder = FirJavaMethodBuilder()
copyBuilder.source = original.source
copyBuilder.declarationSiteSession = original.declarationSiteSession
copyBuilder.moduleData = original.moduleData
copyBuilder.resolvePhase = original.resolvePhase
copyBuilder.attributes = original.attributes.copy()
copyBuilder.returnTypeRef = original.returnTypeRef
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.fir.java.declarations
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirSession
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.*
@@ -27,7 +27,7 @@ import kotlin.contracts.contract
@OptIn(FirImplementationDetail::class)
class FirJavaValueParameter @FirImplementationDetail constructor(
override val source: FirSourceElement?,
override val declarationSiteSession: FirSession,
override val moduleData: FirModuleData,
override var resolvePhase: FirResolvePhase,
override val attributes: FirDeclarationAttributes,
override var returnTypeRef: FirTypeRef,
@@ -146,7 +146,7 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
@FirBuilderDsl
class FirJavaValueParameterBuilder {
var source: FirSourceElement? = null
lateinit var declarationSiteSession: FirSession
lateinit var moduleData: FirModuleData
var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
lateinit var returnTypeRef: FirTypeRef
lateinit var name: Name
@@ -158,7 +158,7 @@ class FirJavaValueParameterBuilder {
fun build(): FirJavaValueParameter {
return FirJavaValueParameter(
source,
declarationSiteSession,
moduleData,
resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES,
attributes,
returnTypeRef,
@@ -182,7 +182,7 @@ inline fun buildJavaValueParameterCopy(original: FirValueParameter, init: FirJav
}
val copyBuilder = FirJavaValueParameterBuilder()
copyBuilder.source = original.source
copyBuilder.declarationSiteSession = original.declarationSiteSession
copyBuilder.moduleData = original.moduleData
copyBuilder.attributes = original.attributes.copy()
copyBuilder.returnTypeRef = original.returnTypeRef
copyBuilder.name = original.name
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.java.deserialization
import com.intellij.openapi.progress.ProcessCanceledException
import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.ThreadSafeMutableState
import org.jetbrains.kotlin.fir.caches.*
@@ -34,13 +35,13 @@ import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErr
@ThreadSafeMutableState
class KotlinDeserializedJvmSymbolsProvider(
session: FirSession,
moduleData: FirModuleData,
kotlinScopeProvider: FirKotlinScopeProvider,
private val packagePartProvider: PackagePartProvider,
private val kotlinClassFinder: KotlinClassFinder,
private val javaSymbolProvider: JavaSymbolProvider,
javaClassFinder: JavaClassFinder,
) : AbstractFirDeserializedSymbolsProvider(session, kotlinScopeProvider) {
) : AbstractFirDeserializedSymbolsProvider(moduleData, kotlinScopeProvider) {
private val knownNameInPackageCache = KnownNameInPackageCache(session, javaClassFinder)
private val annotationsLoader = AnnotationsLoader(session)
@@ -68,7 +69,7 @@ class KotlinDeserializedJvmSymbolsProvider(
PackagePartsCacheData(
packageProto,
FirDeserializationContext.createForPackage(
packageFqName, packageProto, nameResolver, session,
packageFqName, packageProto, nameResolver, moduleData,
JvmBinaryAnnotationDeserializer(session, kotlinJvmBinaryClass, kotlinClassFinder, byteContent),
FirConstDeserializer(session, facadeBinaryClass ?: kotlinJvmBinaryClass),
source
@@ -37,6 +37,8 @@ class FirSignatureEnhancement(
private val session: FirSession,
private val overridden: FirSimpleFunction.() -> List<FirCallableMemberDeclaration<*>>
) {
private val moduleData = session.moduleData
private val javaTypeParameterStack: JavaTypeParameterStack =
if (owner is FirJavaClass) owner.javaTypeParameterStack else JavaTypeParameterStack.EMPTY
@@ -94,7 +96,7 @@ class FirSignatureEnhancement(
val symbol = FirFieldSymbol(original.callableId)
buildJavaField {
source = firElement.source
declarationSiteSession = session
moduleData = this@FirSignatureEnhancement.moduleData
this.symbol = symbol
this.name = name
returnTypeRef = newReturnTypeRef
@@ -131,7 +133,7 @@ class FirSignatureEnhancement(
setterDelegate?.symbol
}
return buildSyntheticProperty {
declarationSiteSession = session
moduleData = this@FirSignatureEnhancement.moduleData
this.name = name
symbol = FirAccessorSymbol(accessorSymbol.callableId, accessorSymbol.accessorId)
delegateGetter = enhancedGetterSymbol.fir as FirSimpleFunction
@@ -207,7 +209,7 @@ class FirSignatureEnhancement(
buildValueParameter {
source = valueParameter.source
declarationSiteSession = session
moduleData = this@FirSignatureEnhancement.moduleData
origin = FirDeclarationOrigin.Enhancement
returnTypeRef = enhancedReturnType
this.name = valueParameter.name
@@ -255,7 +257,7 @@ class FirSignatureEnhancement(
}
}.apply {
source = firMethod.source
declarationSiteSession = session
moduleData = this@FirSignatureEnhancement.moduleData
resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES
origin = FirDeclarationOrigin.Enhancement
this.valueParameters += newValueParameters
@@ -265,7 +267,7 @@ class FirSignatureEnhancement(
is FirJavaMethod -> {
FirSimpleFunctionBuilder().apply {
source = firMethod.source
declarationSiteSession = session
moduleData = this@FirSignatureEnhancement.moduleData
origin = FirDeclarationOrigin.Enhancement
returnTypeRef = newReturnTypeRef
receiverTypeRef = newReceiverTypeRef
@@ -9,11 +9,12 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticPropertyAccessor
import org.jetbrains.kotlin.fir.moduleData
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
@@ -43,7 +44,7 @@ class JavaAnnotationSyntheticPropertiesScope(
val callableId = CallableId(classId, name)
FirAccessorSymbol(callableId, callableId).also {
val accessor = FirSyntheticPropertyAccessor(function, isGetter = true)
FirSyntheticProperty(session, name, isVar = false, it, function.status, function.resolvePhase, accessor)
FirSyntheticProperty(session.moduleData, name, isVar = false, it, function.status, function.resolvePhase, accessor)
}
}
processor(symbol)
@@ -17,8 +17,6 @@ import org.jetbrains.kotlin.fir.scopes.*
import org.jetbrains.kotlin.fir.scopes.impl.AbstractFirUseSiteMemberScope
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmDescriptor
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmSignature
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.load.java.BuiltinSpecialProperties
@@ -28,7 +26,9 @@ import org.jetbrains.kotlin.load.java.SpecialGenericSignatures.Companion.ERASED_
import org.jetbrains.kotlin.load.java.SpecialGenericSignatures.Companion.sameAsBuiltinMethodWithErasedValueParameters
import org.jetbrains.kotlin.load.java.SpecialGenericSignatures.Companion.sameAsRenamedInJvmBuiltin
import org.jetbrains.kotlin.load.java.getPropertyNamesCandidatesByAccessorName
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.types.AbstractTypeChecker
class JavaClassUseSiteMemberScope(
@@ -61,7 +61,7 @@ class JavaClassUseSiteMemberScope(
): FirAccessorSymbol {
return accessorByNameMap.getOrPut(property.name) {
buildSyntheticProperty {
declarationSiteSession = session
moduleData = session.moduleData
name = property.name
symbol = FirAccessorSymbol(
accessorId = getterSymbol.callableId,