[FIR] Introduce FirSourceElement instead of FirElement as source in fir nodes

This commit is contained in:
Dmitriy Novozhilov
2019-10-25 16:20:57 +03:00
parent b93357be48
commit 0d15ff1ddd
265 changed files with 904 additions and 856 deletions
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.resolve.FirProvider
import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.resolve.directExpansionType
import org.jetbrains.kotlin.fir.resolve.firProvider
import org.jetbrains.kotlin.fir.resolve.toSymbol
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.resolve.FirProvider
import org.jetbrains.kotlin.fir.resolve.directExpansionType
import org.jetbrains.kotlin.fir.resolve.firProvider
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.fir.scopes.impl.FirSuperTypeScope
import org.jetbrains.kotlin.fir.scopes.impl.declaredMemberScope
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.toFirSourceElement
import org.jetbrains.kotlin.fir.types.ConeClassErrorType
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
@@ -175,7 +176,7 @@ class JavaSymbolProvider(
}
}
FirJavaClass(
(javaClass as? JavaElementImpl<*>)?.psi, session,
(javaClass as? JavaElementImpl<*>)?.psi?.toFirSourceElement(), session,
firSymbol as FirClassSymbol, javaClass.name,
javaClass.visibility, javaClass.modality,
javaClass.classKind, isTopLevel = isTopLevel,
@@ -195,7 +196,7 @@ class JavaSymbolProvider(
val fieldSymbol = FirFieldSymbol(fieldId)
val returnType = javaField.type
val firJavaField = FirJavaField(
(javaField as? JavaElementImpl<*>)?.psi, this@JavaSymbolProvider.session,
(javaField as? JavaElementImpl<*>)?.psi?.toFirSourceElement(), this@JavaSymbolProvider.session,
fieldSymbol, fieldName,
javaField.visibility, javaField.modality,
returnTypeRef = returnType.toFirJavaTypeRef(this@JavaSymbolProvider.session, javaTypeParameterStack),
@@ -212,7 +213,7 @@ class JavaSymbolProvider(
val methodSymbol = FirNamedFunctionSymbol(methodId)
val returnType = javaMethod.returnType
val firJavaMethod = FirJavaMethod(
this@JavaSymbolProvider.session, (javaMethod as? JavaElementImpl<*>)?.psi,
this@JavaSymbolProvider.session, (javaMethod as? JavaElementImpl<*>)?.psi?.toFirSourceElement(),
methodSymbol, methodName,
javaMethod.visibility, javaMethod.modality,
returnTypeRef = returnType.toFirJavaTypeRef(this@JavaSymbolProvider.session, javaTypeParameterStack),
@@ -239,7 +240,7 @@ class JavaSymbolProvider(
val constructorSymbol = FirConstructorSymbol(constructorId)
val classTypeParameters = javaClass.typeParameters.convertTypeParameters(javaTypeParameterStack)
val firJavaConstructor = FirJavaConstructor(
psi,
psi?.toFirSourceElement(),
this@JavaSymbolProvider.session,
constructorSymbol,
visibility,
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.fir.resolve.getClassDeclaredCallableSymbols
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.toFirSourceElement
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
@@ -94,7 +95,7 @@ internal fun JavaClassifierType.toFirResolvedTypeRef(
): FirResolvedTypeRef {
val coneType = this.toConeKotlinTypeWithNullability(session, javaTypeParameterStack, isNullable = false)
return FirResolvedTypeRefImpl(
psi = null, type = coneType
source = null, type = coneType
).apply {
annotations += this@toFirResolvedTypeRef.annotations.map { it.toFirAnnotationCall(session, javaTypeParameterStack) }
}
@@ -174,9 +175,9 @@ internal fun JavaAnnotation.toFirAnnotationCall(
session: FirSession, javaTypeParameterStack: JavaTypeParameterStack
): FirAnnotationCall {
return FirAnnotationCallImpl(
psi = null, useSiteTarget = null,
source = null, useSiteTarget = null,
annotationTypeRef = FirResolvedTypeRefImpl(
psi = null,
source = null,
type = ConeClassTypeImpl(FirClassSymbol(classId!!).toLookupTag(), emptyArray(), isNullable = false)
)
).apply {
@@ -198,7 +199,7 @@ internal fun JavaValueParameter.toFirValueParameters(
session: FirSession, javaTypeParameterStack: JavaTypeParameterStack
): FirValueParameter {
return FirJavaValueParameter(
session, (this as? JavaElementImpl<*>)?.psi, name ?: Name.special("<anonymous Java parameter>"),
session, (this as? JavaElementImpl<*>)?.psi?.toFirSourceElement(), name ?: Name.special("<anonymous Java parameter>"),
returnTypeRef = type.toFirJavaTypeRef(session, javaTypeParameterStack),
isVararg = isVararg
).apply {
@@ -312,7 +313,7 @@ private fun JavaType.toFirResolvedTypeRef(
): FirResolvedTypeRef {
if (this is JavaClassifierType) return toFirResolvedTypeRef(session, javaTypeParameterStack)
return FirResolvedTypeRefImpl(
psi = null, type = ConeClassErrorType("Unexpected JavaType: $this")
source = null, type = ConeClassErrorType("Unexpected JavaType: $this")
)
}
@@ -5,12 +5,12 @@
package org.jetbrains.kotlin.fir.java.declarations
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirModifiableClass
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.visitors.transformSingle
import org.jetbrains.kotlin.name.Name
class FirJavaClass internal constructor(
override val psi: PsiElement?,
override val source: FirSourceElement?,
override val session: FirSession,
override val symbol: FirClassSymbol,
override val name: Name,
@@ -5,13 +5,12 @@
package org.jetbrains.kotlin.fir.java.declarations
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.CONSTRUCTOR_NAME
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
@@ -30,7 +29,7 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
class FirJavaConstructor(
override val psi: PsiElement?,
override val source: FirSourceElement?,
override val session: FirSession,
override val symbol: FirConstructorSymbol,
visibility: Visibility,
@@ -5,10 +5,10 @@
package org.jetbrains.kotlin.fir.java.declarations
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
class FirJavaField(
override val psi: PsiElement?,
override val source: FirSourceElement?,
override val session: FirSession,
override val symbol: FirFieldSymbol,
override val name: Name,
@@ -5,10 +5,10 @@
package org.jetbrains.kotlin.fir.java.declarations
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.name.Name
class FirJavaMethod(
session: FirSession,
psi: PsiElement?,
source: FirSourceElement?,
symbol: FirNamedFunctionSymbol,
name: Name,
visibility: Visibility,
@@ -26,7 +26,7 @@ class FirJavaMethod(
returnTypeRef: FirJavaTypeRef,
isStatic: Boolean
) : FirSimpleFunctionImpl(
psi,
source,
session,
returnTypeRef,
null,
@@ -5,8 +5,8 @@
package org.jetbrains.kotlin.fir.java.declarations
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
import org.jetbrains.kotlin.fir.java.types.FirJavaTypeRef
@@ -15,12 +15,12 @@ import org.jetbrains.kotlin.name.Name
class FirJavaValueParameter(
session: FirSession,
psi: PsiElement?,
source: FirSourceElement?,
name: Name,
returnTypeRef: FirJavaTypeRef,
isVararg: Boolean
) : FirValueParameterImpl(
psi,
source,
session,
returnTypeRef,
name,
@@ -10,7 +10,10 @@ import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.classId
import org.jetbrains.kotlin.fir.expressions.impl.FirConstExpressionImpl
import org.jetbrains.kotlin.fir.expressions.impl.FirQualifiedAccessExpressionImpl
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
@@ -24,7 +27,9 @@ import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
import org.jetbrains.kotlin.fir.resolve.constructType
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.resolve.toTypeProjection
import org.jetbrains.kotlin.fir.symbols.*
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTag
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.typeContext
@@ -85,7 +90,7 @@ private fun JavaType?.enhancePossiblyFlexible(
)
FirResolvedTypeRefImpl(
psi = null,
source = null,
type = coneFlexibleOrSimpleType(session, lowerResult, upperResult)
).apply {
this.annotations += annotations
@@ -93,7 +98,7 @@ private fun JavaType?.enhancePossiblyFlexible(
}
else -> {
val enhanced = type.toNotNullConeKotlinType(session, javaTypeParameterStack)
FirResolvedTypeRefImpl(psi = null, type = enhanced).apply {
FirResolvedTypeRefImpl(source = null, type = enhanced).apply {
this.annotations += annotations
}
}
@@ -22,7 +22,8 @@ import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.ir.expressions.IrConstKind
import org.jetbrains.kotlin.load.java.AnnotationTypeQualifierResolver
import org.jetbrains.kotlin.load.java.descriptors.NullDefaultValue
@@ -84,7 +85,7 @@ class JavaClassEnhancementScope(
val symbol = FirFieldSymbol(original.callableId)
with(firElement) {
FirJavaField(
firElement.psi,
firElement.source,
this@JavaClassEnhancementScope.session,
symbol,
name,
@@ -172,7 +173,7 @@ class JavaClassEnhancementScope(
val (newTypeRef, newDefaultValue) = newInfo
with(valueParameter) {
FirValueParameterImpl(
psi, this@JavaClassEnhancementScope.session,
source, this@JavaClassEnhancementScope.session,
newTypeRef, this.name,
FirVariableSymbol(this.name),
defaultValue ?: newDefaultValue, isCrossinline, isNoinline, isVararg
@@ -192,7 +193,7 @@ class JavaClassEnhancementScope(
}
if (firMethod.isPrimary) {
FirPrimaryConstructorImpl(
firMethod.psi,
firMethod.source,
this@JavaClassEnhancementScope.session,
newReturnTypeRef,
null,
@@ -201,7 +202,7 @@ class JavaClassEnhancementScope(
)
} else {
FirConstructorImpl(
firMethod.psi,
firMethod.source,
this@JavaClassEnhancementScope.session,
newReturnTypeRef,
newReceiverTypeRef,
@@ -215,7 +216,7 @@ class JavaClassEnhancementScope(
}
}
else -> FirSimpleFunctionImpl(
firMethod.psi,
firMethod.source,
this@JavaClassEnhancementScope.session,
newReturnTypeRef,
newReceiverTypeRef,
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.load.java.structure.JavaType
class FirJavaTypeRef(
annotations: List<FirAnnotationCall>,
val type: JavaType
) : FirUserTypeRefImpl(psi = null, isMarkedNullable = false) {
) : FirUserTypeRefImpl(source = null, isMarkedNullable = false) {
init {
this.annotations += annotations
}