Resolve converter errors after merge (light tree to FIR)

This commit is contained in:
Ivan Cilcic
2019-07-23 14:19:49 +03:00
committed by Mikhail Glukhikh
parent 86097bdcce
commit ef535a2d85
7 changed files with 19 additions and 18 deletions
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.references.FirResolvedCallableReferenceImpl
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.*
@@ -229,7 +230,7 @@ object DataClassUtil {
if (!property.isVal && !property.isVar) continue
val name = Name.identifier("component$componentIndex")
componentIndex++
val symbol = FirFunctionSymbol(
val symbol = FirNamedFunctionSymbol(
CallableId(
ClassNameUtil.packageFqName,
ClassNameUtil.className,
@@ -276,7 +277,7 @@ object DataClassUtil {
firPrimaryConstructor: FirConstructor,
properties: List<FirProperty>
) {
val symbol = FirFunctionSymbol(
val symbol = FirNamedFunctionSymbol(
CallableId(
ClassNameUtil.packageFqName,
ClassNameUtil.className,
@@ -591,7 +591,7 @@ class DeclarationsConverter(
return FirPrimaryConstructorImpl(
session,
null,
FirFunctionSymbol(ClassNameUtil.callableIdForClassConstructor()),
FirConstructorSymbol(ClassNameUtil.callableIdForClassConstructor()),
if (primaryConstructor != null) modifiers.getVisibility() else defaultVisibility,
modifiers.hasExpect(),
modifiers.hasActual(),
@@ -644,7 +644,7 @@ class DeclarationsConverter(
val firConstructor = FirConstructorImpl(
session,
null,
FirFunctionSymbol(ClassNameUtil.callableIdForClassConstructor()),
FirConstructorSymbol(ClassNameUtil.callableIdForClassConstructor()),
modifiers.getVisibility(),
modifiers.hasExpect(),
modifiers.hasActual(),
@@ -811,7 +811,7 @@ class DeclarationsConverter(
*/
private fun convertDestructingDeclaration(destructingDeclaration: LighterASTNode): DestructuringDeclaration {
var isVar = false
val entries = mutableListOf<FirVariable>()
val entries = mutableListOf<FirVariable<*>>()
var firExpression: FirExpression? = null
destructingDeclaration.forEachChildren {
when (it.tokenType) {
@@ -827,7 +827,7 @@ class DeclarationsConverter(
/**
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseMultiDeclarationName
*/
private fun convertDestructingDeclarationEntry(entry: LighterASTNode): FirVariable {
private fun convertDestructingDeclarationEntry(entry: LighterASTNode): FirVariable<*> {
var modifiers = Modifier(session)
lateinit var identifier: String
var firType: FirTypeRef? = null
@@ -960,7 +960,7 @@ class DeclarationsConverter(
FirMemberFunctionImpl(
session,
null,
FirFunctionSymbol(ClassNameUtil.callableIdForName(functionName, isLocal)),
FirNamedFunctionSymbol(ClassNameUtil.callableIdForName(functionName, isLocal)),
functionName,
if (isLocal) Visibilities.LOCAL else modifiers.getVisibility(),
modifiers.getModality(),
@@ -567,11 +567,11 @@ class ExpressionsConverter(
*/
private fun convertWhenExpression(whenExpression: LighterASTNode): FirExpression {
var subjectExpression: FirExpression? = null
var subjectVariable: FirVariable? = null
var subjectVariable: FirVariable<*>? = null
val whenEntries = mutableListOf<WhenEntry>()
whenExpression.forEachChildren {
when (it.tokenType) {
PROPERTY -> subjectVariable = declarationsConverter.convertPropertyDeclaration(it) as FirVariable
PROPERTY -> subjectVariable = declarationsConverter.convertPropertyDeclaration(it) as FirVariable<*>
DESTRUCTURING_DECLARATION -> subjectExpression = getAsFirExpression(it)
WHEN_ENTRY -> whenEntries += convertWhenEntry(it)
else -> if (it.isExpression()) subjectExpression = getAsFirExpression(it)
@@ -153,7 +153,7 @@ fun ExpressionsConverter.generateIncrementOrDecrementBlock(
fun generateDestructuringBlock(
session: FirSession,
multiDeclaration: DestructuringDeclaration,
container: FirVariable,
container: FirVariable<*>,
tmpVariable: Boolean
): FirExpression {
return FirBlockImpl(session, null).apply {
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.lightTree.converter.utils.generateDestructuringB
data class DestructuringDeclaration(
val isVar: Boolean,
val entries: List<FirVariable>,
val entries: List<FirVariable<*>>,
val initializer: FirExpression?
) {
fun toFirDestructingDeclaration(session: FirSession): FirExpression {
@@ -33,7 +33,7 @@ class DummyFirStatement(
session: FirSession = object : FirSessionBase(null) {}
) : FirUnknownTypeExpression(session, psi), DummyElement
class DummyFirVariable(
class DummyFirVariable<F: FirVariable<F>>(
override val psi: PsiElement? = null,
override val session: FirSession = object : FirSessionBase(null) {},
override val annotations: List<FirAnnotationCall> = mutableListOf(),
@@ -42,9 +42,9 @@ class DummyFirVariable(
override var returnTypeRef: FirTypeRef = FirImplicitTypeRefImpl(session, psi),
override val isVar: Boolean = false,
override var initializer: FirExpression? = null,
override val symbol: FirVariableSymbol = FirVariableSymbol(name),
override val symbol: FirVariableSymbol<F> = FirVariableSymbol(name),
override var delegate: FirExpression? = null
) : FirVariable, DummyElement {
) : FirVariable<F>, DummyElement {
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D) {
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
}
@@ -52,7 +52,7 @@ class FirPartialTransformer(
}
override fun transformNamedFunction(namedFunction: FirNamedFunction, data: Nothing?): CompositeTransformResult<FirDeclaration> {
return if (!visitLocalMembers && namedFunction is FirAbstractCallableMember && namedFunction.visibility == Visibilities.LOCAL) {
return if (!visitLocalMembers && namedFunction is FirAbstractCallableMember<*> && namedFunction.visibility == Visibilities.LOCAL) {
DummyFirDeclaration().compose()
} else {
(namedFunction.transformChildren(this, data) as FirNamedFunction).compose()
@@ -70,11 +70,11 @@ class FirPartialTransformer(
}
}
override fun transformVariable(variable: FirVariable, data: Nothing?): CompositeTransformResult<FirDeclaration> {
override fun <F : FirVariable<F>> transformVariable(variable: FirVariable<F>, data: Nothing?): CompositeTransformResult<FirDeclaration> {
return if (visitVariable) {
(variable.transformChildren(this, data) as FirVariable).compose()
(variable.transformChildren(this, data) as FirVariable<*>).compose()
} else {
DummyFirVariable().compose()
DummyFirVariable<F>().compose()
}
}