Get rid of FirElement.session usages inside fir:java
This commit is contained in:
@@ -80,11 +80,11 @@ class JavaSymbolProvider(
|
|||||||
isTopLevel = classId.relativeClassName.parent().isRoot, isStatic = javaClass.isStatic
|
isTopLevel = classId.relativeClassName.parent().isRoot, isStatic = javaClass.isStatic
|
||||||
).apply {
|
).apply {
|
||||||
for (typeParameter in javaClass.typeParameters) {
|
for (typeParameter in javaClass.typeParameters) {
|
||||||
typeParameters += createTypeParameterSymbol(session, typeParameter.name).fir
|
typeParameters += createTypeParameterSymbol(this@JavaSymbolProvider.session, typeParameter.name).fir
|
||||||
}
|
}
|
||||||
addAnnotationsFrom(javaClass)
|
addAnnotationsFrom(this@JavaSymbolProvider.session, javaClass)
|
||||||
for (supertype in javaClass.supertypes) {
|
for (supertype in javaClass.supertypes) {
|
||||||
superTypeRefs += supertype.toFirResolvedTypeRef(session)
|
superTypeRefs += supertype.toFirResolvedTypeRef(this@JavaSymbolProvider.session)
|
||||||
}
|
}
|
||||||
// TODO: may be we can process fields & methods later.
|
// TODO: may be we can process fields & methods later.
|
||||||
// However, they should be built up to override resolve stage
|
// However, they should be built up to override resolve stage
|
||||||
@@ -94,13 +94,13 @@ class JavaSymbolProvider(
|
|||||||
val fieldSymbol = FirFieldSymbol(fieldId)
|
val fieldSymbol = FirFieldSymbol(fieldId)
|
||||||
val returnType = javaField.type
|
val returnType = javaField.type
|
||||||
val firJavaField = FirJavaField(
|
val firJavaField = FirJavaField(
|
||||||
session, fieldSymbol, fieldName,
|
this@JavaSymbolProvider.session, fieldSymbol, fieldName,
|
||||||
javaField.visibility, javaField.modality,
|
javaField.visibility, javaField.modality,
|
||||||
returnTypeRef = returnType.toFirJavaTypeRef(session),
|
returnTypeRef = returnType.toFirJavaTypeRef(this@JavaSymbolProvider.session),
|
||||||
isVar = !javaField.isFinal,
|
isVar = !javaField.isFinal,
|
||||||
isStatic = javaField.isStatic
|
isStatic = javaField.isStatic
|
||||||
).apply {
|
).apply {
|
||||||
addAnnotationsFrom(javaField)
|
addAnnotationsFrom(this@JavaSymbolProvider.session, javaField)
|
||||||
}
|
}
|
||||||
declarations += firJavaField
|
declarations += firJavaField
|
||||||
}
|
}
|
||||||
@@ -110,17 +110,17 @@ class JavaSymbolProvider(
|
|||||||
val methodSymbol = FirFunctionSymbol(methodId)
|
val methodSymbol = FirFunctionSymbol(methodId)
|
||||||
val returnType = javaMethod.returnType
|
val returnType = javaMethod.returnType
|
||||||
val firJavaMethod = FirJavaMethod(
|
val firJavaMethod = FirJavaMethod(
|
||||||
session, methodSymbol, methodName,
|
this@JavaSymbolProvider.session, methodSymbol, methodName,
|
||||||
javaMethod.visibility, javaMethod.modality,
|
javaMethod.visibility, javaMethod.modality,
|
||||||
returnTypeRef = returnType.toFirJavaTypeRef(session),
|
returnTypeRef = returnType.toFirJavaTypeRef(this@JavaSymbolProvider.session),
|
||||||
isStatic = javaMethod.isStatic
|
isStatic = javaMethod.isStatic
|
||||||
).apply {
|
).apply {
|
||||||
for (typeParameter in javaMethod.typeParameters) {
|
for (typeParameter in javaMethod.typeParameters) {
|
||||||
typeParameters += createTypeParameterSymbol(session, typeParameter.name).fir
|
typeParameters += createTypeParameterSymbol(this@JavaSymbolProvider.session, typeParameter.name).fir
|
||||||
}
|
}
|
||||||
addAnnotationsFrom(javaMethod)
|
addAnnotationsFrom(this@JavaSymbolProvider.session, javaMethod)
|
||||||
for (valueParameter in javaMethod.valueParameters) {
|
for (valueParameter in javaMethod.valueParameters) {
|
||||||
valueParameters += valueParameter.toFirValueParameters(session)
|
valueParameters += valueParameter.toFirValueParameters(this@JavaSymbolProvider.session)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
declarations += firJavaMethod
|
declarations += firJavaMethod
|
||||||
@@ -129,19 +129,19 @@ class JavaSymbolProvider(
|
|||||||
val constructorId = CallableId(classId.packageFqName, classId.relativeClassName, classId.shortClassName)
|
val constructorId = CallableId(classId.packageFqName, classId.relativeClassName, classId.shortClassName)
|
||||||
val constructorSymbol = FirFunctionSymbol(constructorId)
|
val constructorSymbol = FirFunctionSymbol(constructorId)
|
||||||
val firJavaConstructor = FirJavaConstructor(
|
val firJavaConstructor = FirJavaConstructor(
|
||||||
session, constructorSymbol, javaConstructor.visibility,
|
this@JavaSymbolProvider.session, constructorSymbol, javaConstructor.visibility,
|
||||||
FirResolvedTypeRefImpl(
|
FirResolvedTypeRefImpl(
|
||||||
session, null,
|
this@JavaSymbolProvider.session, null,
|
||||||
firSymbol.constructType(emptyArray(), false),
|
firSymbol.constructType(emptyArray(), false),
|
||||||
false, emptyList()
|
false, emptyList()
|
||||||
)
|
)
|
||||||
).apply {
|
).apply {
|
||||||
for (typeParameter in javaConstructor.typeParameters) {
|
for (typeParameter in javaConstructor.typeParameters) {
|
||||||
typeParameters += createTypeParameterSymbol(session, typeParameter.name).fir
|
typeParameters += createTypeParameterSymbol(this@JavaSymbolProvider.session, typeParameter.name).fir
|
||||||
}
|
}
|
||||||
addAnnotationsFrom(javaConstructor)
|
addAnnotationsFrom(this@JavaSymbolProvider.session, javaConstructor)
|
||||||
for (valueParameter in javaConstructor.valueParameters) {
|
for (valueParameter in javaConstructor.valueParameters) {
|
||||||
valueParameters += valueParameter.toFirValueParameters(session)
|
valueParameters += valueParameter.toFirValueParameters(this@JavaSymbolProvider.session)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
declarations += firJavaConstructor
|
declarations += firJavaConstructor
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ internal fun ClassId.toConeKotlinType(
|
|||||||
return ConeClassTypeImpl(lookupTag, typeArguments, isNullable)
|
return ConeClassTypeImpl(lookupTag, typeArguments, isNullable)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun FirTypeRef.toNotNullConeKotlinType(): ConeKotlinType =
|
internal fun FirTypeRef.toNotNullConeKotlinType(session: FirSession): ConeKotlinType =
|
||||||
when (this) {
|
when (this) {
|
||||||
is FirResolvedTypeRef -> type
|
is FirResolvedTypeRef -> type
|
||||||
is FirJavaTypeRef -> {
|
is FirJavaTypeRef -> {
|
||||||
@@ -159,7 +159,7 @@ internal fun JavaAnnotation.toFirAnnotationCall(session: FirSession): FirAnnotat
|
|||||||
return FirAnnotationCallImpl(
|
return FirAnnotationCallImpl(
|
||||||
session, psi = null, useSiteTarget = null,
|
session, psi = null, useSiteTarget = null,
|
||||||
annotationTypeRef = FirResolvedTypeRefImpl(
|
annotationTypeRef = FirResolvedTypeRefImpl(
|
||||||
session = session,
|
session,
|
||||||
psi = null,
|
psi = null,
|
||||||
type = ConeClassTypeImpl(FirClassSymbol(classId!!).toLookupTag(), emptyArray(), isNullable = false),
|
type = ConeClassTypeImpl(FirClassSymbol(classId!!).toLookupTag(), emptyArray(), isNullable = false),
|
||||||
isMarkedNullable = true,
|
isMarkedNullable = true,
|
||||||
@@ -172,7 +172,7 @@ internal fun JavaAnnotation.toFirAnnotationCall(session: FirSession): FirAnnotat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun FirAbstractAnnotatedElement.addAnnotationsFrom(javaAnnotationOwner: JavaAnnotationOwner) {
|
internal fun FirAbstractAnnotatedElement.addAnnotationsFrom(session: FirSession, javaAnnotationOwner: JavaAnnotationOwner) {
|
||||||
for (annotation in javaAnnotationOwner.annotations) {
|
for (annotation in javaAnnotationOwner.annotations) {
|
||||||
annotations += annotation.toFirAnnotationCall(session)
|
annotations += annotation.toFirAnnotationCall(session)
|
||||||
}
|
}
|
||||||
@@ -184,7 +184,7 @@ internal fun JavaValueParameter.toFirValueParameters(session: FirSession): FirVa
|
|||||||
returnTypeRef = type.toFirJavaTypeRef(session),
|
returnTypeRef = type.toFirJavaTypeRef(session),
|
||||||
isVararg = isVararg
|
isVararg = isVararg
|
||||||
).apply {
|
).apply {
|
||||||
addAnnotationsFrom(this@toFirValueParameters)
|
addAnnotationsFrom(session, this@toFirValueParameters)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
-8
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.java.enhancement
|
package org.jetbrains.kotlin.fir.java.enhancement
|
||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
||||||
@@ -41,10 +42,11 @@ internal class EnhancementSignatureParts(
|
|||||||
((this as? ConeLookupTagBasedType)?.lookupTag as? ConeClassLikeLookupTag)?.classId?.asSingleFqName()?.toUnsafe()
|
((this as? ConeLookupTagBasedType)?.lookupTag as? ConeClassLikeLookupTag)?.classId?.asSingleFqName()?.toUnsafe()
|
||||||
|
|
||||||
internal fun enhance(
|
internal fun enhance(
|
||||||
|
session: FirSession,
|
||||||
jsr305State: Jsr305State,
|
jsr305State: Jsr305State,
|
||||||
predefined: TypeEnhancementInfo? = null
|
predefined: TypeEnhancementInfo? = null
|
||||||
): PartEnhancementResult {
|
): PartEnhancementResult {
|
||||||
val qualifiers = computeIndexedQualifiersForOverride(jsr305State)
|
val qualifiers = computeIndexedQualifiersForOverride(session, jsr305State)
|
||||||
|
|
||||||
val qualifiersWithPredefined = predefined?.let {
|
val qualifiersWithPredefined = predefined?.let {
|
||||||
IndexedJavaTypeQualifiers(qualifiers.size) { index ->
|
IndexedJavaTypeQualifiers(qualifiers.size) { index ->
|
||||||
@@ -52,7 +54,7 @@ internal class EnhancementSignatureParts(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val containsFunctionN = current.toNotNullConeKotlinType().contains {
|
val containsFunctionN = current.toNotNullConeKotlinType(session).contains {
|
||||||
if (it is ConeClassErrorType) false
|
if (it is ConeClassErrorType) false
|
||||||
else {
|
else {
|
||||||
val classId = it.lookupTag.classId
|
val classId = it.lookupTag.classId
|
||||||
@@ -61,7 +63,7 @@ internal class EnhancementSignatureParts(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val enhancedCurrent = current.enhance(qualifiersWithPredefined ?: qualifiers)
|
val enhancedCurrent = current.enhance(session, qualifiersWithPredefined ?: qualifiers)
|
||||||
return PartEnhancementResult(
|
return PartEnhancementResult(
|
||||||
enhancedCurrent, wereChanges = true, containsFunctionN = containsFunctionN
|
enhancedCurrent, wereChanges = true, containsFunctionN = containsFunctionN
|
||||||
)
|
)
|
||||||
@@ -133,7 +135,7 @@ internal class EnhancementSignatureParts(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirTypeRef.extractQualifiers(): JavaTypeQualifiers {
|
private fun FirTypeRef.extractQualifiers(session: FirSession): JavaTypeQualifiers {
|
||||||
val (lower, upper) = when (this) {
|
val (lower, upper) = when (this) {
|
||||||
is FirResolvedTypeRef -> {
|
is FirResolvedTypeRef -> {
|
||||||
val type = this.type
|
val type = this.type
|
||||||
@@ -214,16 +216,17 @@ internal class EnhancementSignatureParts(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun FirTypeRef.computeQualifiersForOverride(
|
private fun FirTypeRef.computeQualifiersForOverride(
|
||||||
|
session: FirSession,
|
||||||
fromSupertypes: Collection<FirTypeRef>,
|
fromSupertypes: Collection<FirTypeRef>,
|
||||||
defaultQualifiersForType: JavaTypeQualifiers?,
|
defaultQualifiersForType: JavaTypeQualifiers?,
|
||||||
isHeadTypeConstructor: Boolean,
|
isHeadTypeConstructor: Boolean,
|
||||||
jsr305State: Jsr305State
|
jsr305State: Jsr305State
|
||||||
): JavaTypeQualifiers {
|
): JavaTypeQualifiers {
|
||||||
val superQualifiers = fromSupertypes.map { it.extractQualifiers() }
|
val superQualifiers = fromSupertypes.map { it.extractQualifiers(session) }
|
||||||
val mutabilityFromSupertypes = superQualifiers.mapNotNull { it.mutability }.toSet()
|
val mutabilityFromSupertypes = superQualifiers.mapNotNull { it.mutability }.toSet()
|
||||||
val nullabilityFromSupertypes = superQualifiers.mapNotNull { it.nullability }.toSet()
|
val nullabilityFromSupertypes = superQualifiers.mapNotNull { it.nullability }.toSet()
|
||||||
val nullabilityFromSupertypesWithWarning = fromOverridden
|
val nullabilityFromSupertypesWithWarning = fromOverridden
|
||||||
.mapNotNull { it.extractQualifiers().nullability }
|
.mapNotNull { it.extractQualifiers(session).nullability }
|
||||||
.toSet()
|
.toSet()
|
||||||
|
|
||||||
val own = extractQualifiersFromAnnotations(isHeadTypeConstructor, defaultQualifiersForType, jsr305State)
|
val own = extractQualifiersFromAnnotations(isHeadTypeConstructor, defaultQualifiersForType, jsr305State)
|
||||||
@@ -260,7 +263,7 @@ internal class EnhancementSignatureParts(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun computeIndexedQualifiersForOverride(jsr305State: Jsr305State): IndexedJavaTypeQualifiers {
|
private fun computeIndexedQualifiersForOverride(session: FirSession, jsr305State: Jsr305State): IndexedJavaTypeQualifiers {
|
||||||
val indexedFromSupertypes = fromOverridden.map { it.toIndexed(typeQualifierResolver, jsr305State, context) }
|
val indexedFromSupertypes = fromOverridden.map { it.toIndexed(typeQualifierResolver, jsr305State, context) }
|
||||||
val indexedThisType = current.toIndexed(typeQualifierResolver, jsr305State, context)
|
val indexedThisType = current.toIndexed(typeQualifierResolver, jsr305State, context)
|
||||||
|
|
||||||
@@ -280,7 +283,7 @@ internal class EnhancementSignatureParts(
|
|||||||
val verticalSlice = indexedFromSupertypes.mapNotNull { it.getOrNull(index)?.type }
|
val verticalSlice = indexedFromSupertypes.mapNotNull { it.getOrNull(index)?.type }
|
||||||
|
|
||||||
// Only the head type constructor is safely co-variant
|
// Only the head type constructor is safely co-variant
|
||||||
qualifiers.computeQualifiersForOverride(verticalSlice, defaultQualifiers, isHeadTypeConstructor, jsr305State)
|
qualifiers.computeQualifiersForOverride(session, verticalSlice, defaultQualifiers, isHeadTypeConstructor, jsr305State)
|
||||||
}
|
}
|
||||||
|
|
||||||
return IndexedJavaTypeQualifiers(computedResult)
|
return IndexedJavaTypeQualifiers(computedResult)
|
||||||
|
|||||||
+3
-2
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.java.enhancement
|
package org.jetbrains.kotlin.fir.java.enhancement
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
@@ -16,7 +17,7 @@ import org.jetbrains.kotlin.utils.Jsr305State
|
|||||||
import org.jetbrains.kotlin.utils.ReportLevel
|
import org.jetbrains.kotlin.utils.ReportLevel
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
||||||
|
|
||||||
class FirAnnotationTypeQualifierResolver(private val jsr305State: Jsr305State) {
|
class FirAnnotationTypeQualifierResolver(private val session: FirSession, private val jsr305State: Jsr305State) {
|
||||||
|
|
||||||
class TypeQualifierWithApplicability(
|
class TypeQualifierWithApplicability(
|
||||||
private val typeQualifier: FirAnnotationCall,
|
private val typeQualifier: FirAnnotationCall,
|
||||||
@@ -48,7 +49,7 @@ class FirAnnotationTypeQualifierResolver(private val jsr305State: Jsr305State) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val FirAnnotationCall.resolvedClass: FirRegularClass?
|
private val FirAnnotationCall.resolvedClass: FirRegularClass?
|
||||||
get() = (coneClassLikeType?.lookupTag?.toSymbol(session) as? FirClassSymbol)?.fir
|
get() = (coneClassLikeType?.lookupTag?.toSymbol(this@FirAnnotationTypeQualifierResolver.session) as? FirClassSymbol)?.fir
|
||||||
|
|
||||||
fun resolveTypeQualifierAnnotation(annotationCall: FirAnnotationCall): FirAnnotationCall? {
|
fun resolveTypeQualifierAnnotation(annotationCall: FirAnnotationCall): FirAnnotationCall? {
|
||||||
if (jsr305State.disabled) {
|
if (jsr305State.disabled) {
|
||||||
|
|||||||
@@ -46,9 +46,7 @@ internal class IndexedJavaTypeQualifiers(private val data: Array<JavaTypeQualifi
|
|||||||
val size: Int get() = data.size
|
val size: Int get() = data.size
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun FirJavaTypeRef.enhance(
|
internal fun FirJavaTypeRef.enhance(session: FirSession, qualifiers: IndexedJavaTypeQualifiers): FirResolvedTypeRef {
|
||||||
qualifiers: IndexedJavaTypeQualifiers
|
|
||||||
): FirResolvedTypeRef {
|
|
||||||
return type.enhancePossiblyFlexible(session, annotations, qualifiers, 0)
|
return type.enhancePossiblyFlexible(session, annotations, qualifiers, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+22
-24
@@ -37,14 +37,14 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.utils.Jsr305State
|
import org.jetbrains.kotlin.utils.Jsr305State
|
||||||
|
|
||||||
class JavaClassEnhancementScope(
|
class JavaClassEnhancementScope(
|
||||||
session: FirSession,
|
private val session: FirSession,
|
||||||
private val useSiteScope: JavaClassUseSiteScope
|
private val useSiteScope: JavaClassUseSiteScope
|
||||||
) : FirScope {
|
) : FirScope {
|
||||||
private val owner: FirRegularClass get() = useSiteScope.symbol.fir
|
private val owner: FirRegularClass get() = useSiteScope.symbol.fir
|
||||||
|
|
||||||
private val jsr305State: Jsr305State = session.jsr305State ?: Jsr305State.DEFAULT
|
private val jsr305State: Jsr305State = session.jsr305State ?: Jsr305State.DEFAULT
|
||||||
|
|
||||||
private val typeQualifierResolver = FirAnnotationTypeQualifierResolver(jsr305State)
|
private val typeQualifierResolver = FirAnnotationTypeQualifierResolver(session, jsr305State)
|
||||||
|
|
||||||
private val context: FirJavaEnhancementContext =
|
private val context: FirJavaEnhancementContext =
|
||||||
FirJavaEnhancementContext(session) { null }.copyWithNewDefaultTypeQualifiers(typeQualifierResolver, jsr305State, owner.annotations)
|
FirJavaEnhancementContext(session) { null }.copyWithNewDefaultTypeQualifiers(typeQualifierResolver, jsr305State, owner.annotations)
|
||||||
@@ -83,14 +83,14 @@ class JavaClassEnhancementScope(
|
|||||||
val symbol = FirPropertySymbol(original.callableId)
|
val symbol = FirPropertySymbol(original.callableId)
|
||||||
with(firField) {
|
with(firField) {
|
||||||
FirMemberPropertyImpl(
|
FirMemberPropertyImpl(
|
||||||
session, null, symbol, name,
|
this@JavaClassEnhancementScope.session, null, symbol, name,
|
||||||
visibility, modality, isExpect, isActual, isOverride,
|
visibility, modality, isExpect, isActual, isOverride,
|
||||||
isConst = false, isLateInit = false,
|
isConst = false, isLateInit = false,
|
||||||
receiverTypeRef = null,
|
receiverTypeRef = null,
|
||||||
returnTypeRef = newReturnTypeRef,
|
returnTypeRef = newReturnTypeRef,
|
||||||
isVar = isVar, initializer = null,
|
isVar = isVar, initializer = null,
|
||||||
getter = FirDefaultPropertyGetter(session, null, newReturnTypeRef, visibility),
|
getter = FirDefaultPropertyGetter(this@JavaClassEnhancementScope.session, null, newReturnTypeRef, visibility),
|
||||||
setter = FirDefaultPropertySetter(session, null, newReturnTypeRef, visibility),
|
setter = FirDefaultPropertySetter(this@JavaClassEnhancementScope.session, null, newReturnTypeRef, visibility),
|
||||||
delegate = null
|
delegate = null
|
||||||
).apply {
|
).apply {
|
||||||
annotations += firField.annotations
|
annotations += firField.annotations
|
||||||
@@ -139,22 +139,20 @@ class JavaClassEnhancementScope(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val symbol = FirFunctionSymbol(original.callableId)
|
val symbol = FirFunctionSymbol(original.callableId)
|
||||||
with(firMethod) {
|
FirMemberFunctionImpl(
|
||||||
FirMemberFunctionImpl(
|
this@JavaClassEnhancementScope.session, null, symbol, name,
|
||||||
session, null, symbol, name,
|
newReceiverTypeRef, newReturnTypeRef
|
||||||
newReceiverTypeRef, newReturnTypeRef
|
).apply {
|
||||||
).apply {
|
status = firMethod.status as FirDeclarationStatusImpl
|
||||||
status = firMethod.status as FirDeclarationStatusImpl
|
annotations += firMethod.annotations
|
||||||
annotations += firMethod.annotations
|
valueParameters += firMethod.valueParameters.zip(newValueParameterTypeRefs) { valueParameter, newTypeRef ->
|
||||||
valueParameters += firMethod.valueParameters.zip(newValueParameterTypeRefs) { valueParameter, newTypeRef ->
|
with(valueParameter) {
|
||||||
with(valueParameter) {
|
FirValueParameterImpl(
|
||||||
FirValueParameterImpl(
|
this@JavaClassEnhancementScope.session, psi,
|
||||||
session, psi,
|
this.name, newTypeRef,
|
||||||
this.name, newTypeRef,
|
defaultValue, isCrossinline, isNoinline, isVararg
|
||||||
defaultValue, isCrossinline, isNoinline, isVararg
|
).apply {
|
||||||
).apply {
|
annotations += valueParameter.annotations
|
||||||
annotations += valueParameter.annotations
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -198,7 +196,7 @@ class JavaClassEnhancementScope(
|
|||||||
parameterContainer = ownerFunction,
|
parameterContainer = ownerFunction,
|
||||||
methodContext = memberContext,
|
methodContext = memberContext,
|
||||||
typeInSignature = TypeInSignature.Receiver
|
typeInSignature = TypeInSignature.Receiver
|
||||||
).enhance(jsr305State)
|
).enhance(session, jsr305State)
|
||||||
return signatureParts.type
|
return signatureParts.type
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,7 +212,7 @@ class JavaClassEnhancementScope(
|
|||||||
parameterContainer = ownerParameter,
|
parameterContainer = ownerParameter,
|
||||||
methodContext = memberContext,
|
methodContext = memberContext,
|
||||||
typeInSignature = TypeInSignature.ValueParameter(index)
|
typeInSignature = TypeInSignature.ValueParameter(index)
|
||||||
).enhance(jsr305State, predefinedEnhancementInfo?.parametersInfo?.getOrNull(index))
|
).enhance(session, jsr305State, predefinedEnhancementInfo?.parametersInfo?.getOrNull(index))
|
||||||
return signatureParts.type
|
return signatureParts.type
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,7 +229,7 @@ class JavaClassEnhancementScope(
|
|||||||
if (owner is FirJavaField) AnnotationTypeQualifierResolver.QualifierApplicabilityType.FIELD
|
if (owner is FirJavaField) AnnotationTypeQualifierResolver.QualifierApplicabilityType.FIELD
|
||||||
else AnnotationTypeQualifierResolver.QualifierApplicabilityType.METHOD_RETURN_TYPE,
|
else AnnotationTypeQualifierResolver.QualifierApplicabilityType.METHOD_RETURN_TYPE,
|
||||||
typeInSignature = TypeInSignature.Return
|
typeInSignature = TypeInSignature.Return
|
||||||
).enhance(jsr305State, predefinedEnhancementInfo?.returnTypeInfo)
|
).enhance(session, jsr305State, predefinedEnhancementInfo?.returnTypeInfo)
|
||||||
return signatureParts.type
|
return signatureParts.type
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ class JavaClassUseSiteScope(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun isEqualTypes(a: FirTypeRef, b: FirTypeRef) =
|
private fun isEqualTypes(a: FirTypeRef, b: FirTypeRef) =
|
||||||
isEqualTypes(a.toNotNullConeKotlinType(), b.toNotNullConeKotlinType())
|
isEqualTypes(a.toNotNullConeKotlinType(session), b.toNotNullConeKotlinType(session))
|
||||||
|
|
||||||
private fun isOverriddenFunCheck(member: FirNamedFunction, self: FirNamedFunction): Boolean {
|
private fun isOverriddenFunCheck(member: FirNamedFunction, self: FirNamedFunction): Boolean {
|
||||||
return member.valueParameters.size == self.valueParameters.size &&
|
return member.valueParameters.size == self.valueParameters.size &&
|
||||||
|
|||||||
Reference in New Issue
Block a user