Add some minor changes to fix errors after merge in lightTree module
This commit is contained in:
committed by
Mikhail Glukhikh
parent
d0dfcbb2f2
commit
05a2b2fac8
@@ -64,6 +64,7 @@ class Converter(
|
|||||||
private val implicitUnitType = FirImplicitUnitTypeRef(session, null)
|
private val implicitUnitType = FirImplicitUnitTypeRef(session, null)
|
||||||
private val implicitAnyType = FirImplicitAnyTypeRef(session, null)
|
private val implicitAnyType = FirImplicitAnyTypeRef(session, null)
|
||||||
private val implicitEnumType = FirImplicitEnumTypeRef(session, null)
|
private val implicitEnumType = FirImplicitEnumTypeRef(session, null)
|
||||||
|
private val implicitAnnotationType = FirImplicitAnnotationTypeRef(session, null)
|
||||||
private val implicitType = FirImplicitTypeRefImpl(session, null)
|
private val implicitType = FirImplicitTypeRefImpl(session, null)
|
||||||
|
|
||||||
private fun LighterASTNode?.getChildrenAsArray(): Array<LighterASTNode?> {
|
private fun LighterASTNode?.getChildrenAsArray(): Array<LighterASTNode?> {
|
||||||
@@ -244,15 +245,21 @@ class Converter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
classKind = when {
|
classKind = when (modifiers.classModifier) {
|
||||||
modifiers.classModifier == ClassModifier.ENUM -> ClassKind.ENUM_CLASS
|
ClassModifier.ENUM -> ClassKind.ENUM_CLASS
|
||||||
modifiers.classModifier == ClassModifier.ANNOTATION -> ClassKind.ANNOTATION_CLASS
|
ClassModifier.ANNOTATION -> ClassKind.ANNOTATION_CLASS
|
||||||
else -> classKind
|
else -> classKind
|
||||||
}
|
}
|
||||||
val hasSecondaryConstructor = classBody.hasSecondaryConstructor(classBody.getChildrenAsArray())
|
val hasSecondaryConstructor = classBody.hasSecondaryConstructor(classBody.getChildrenAsArray())
|
||||||
val className = identifier.nameAsSafeName(if (modifiers.classModifier == ClassModifier.COMPANION) "Companion" else "")
|
val className = identifier.nameAsSafeName(if (modifiers.classModifier == ClassModifier.COMPANION) "Companion" else "")
|
||||||
|
|
||||||
|
val defaultDelegatedSuperTypeRef = when (classKind) {
|
||||||
|
ClassKind.ENUM_CLASS -> implicitEnumType
|
||||||
|
ClassKind.ANNOTATION_CLASS -> implicitAnnotationType
|
||||||
|
else -> implicitAnyType
|
||||||
|
}
|
||||||
val delegatedSelfTypeRef = className.toDelegatedSelfType(session)
|
val delegatedSelfTypeRef = className.toDelegatedSelfType(session)
|
||||||
delegatedSuperTypeRef = delegatedSuperTypeRef ?: if (classKind == ClassKind.ENUM_CLASS) implicitEnumType else implicitAnyType
|
delegatedSuperTypeRef = delegatedSuperTypeRef ?: defaultDelegatedSuperTypeRef
|
||||||
|
|
||||||
return ClassNameUtil.withChildClassName(className) {
|
return ClassNameUtil.withChildClassName(className) {
|
||||||
val firClass = FirClassImpl(
|
val firClass = FirClassImpl(
|
||||||
@@ -403,6 +410,7 @@ class Converter(
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseDelegationSpecifierList
|
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseDelegationSpecifierList
|
||||||
|
* @see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor.extractSuperTypeListEntriesTo
|
||||||
*
|
*
|
||||||
* SUPER_TYPE_ENTRY - userType
|
* SUPER_TYPE_ENTRY - userType
|
||||||
* SUPER_TYPE_CALL_ENTRY - constructorInvocation
|
* SUPER_TYPE_CALL_ENTRY - constructorInvocation
|
||||||
@@ -466,6 +474,7 @@ class Converter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return FirDelegatedTypeRefImpl(
|
return FirDelegatedTypeRefImpl(
|
||||||
|
session,
|
||||||
firTypeRef,
|
firTypeRef,
|
||||||
expression
|
expression
|
||||||
)
|
)
|
||||||
@@ -489,7 +498,8 @@ class Converter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor#convert(KtConstructorDelegationCall, FirTypeRef, Boolean)
|
* @see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor.convert(
|
||||||
|
* KtConstructorDelegationCall, FirTypeRef, Boolean)
|
||||||
*/
|
*/
|
||||||
private fun convertConstructorDelegationCall(constructorDelegationCall: LighterASTNode?): FirDelegatedConstructorCallImpl {
|
private fun convertConstructorDelegationCall(constructorDelegationCall: LighterASTNode?): FirDelegatedConstructorCallImpl {
|
||||||
var isThis: Boolean = false
|
var isThis: Boolean = false
|
||||||
@@ -755,6 +765,7 @@ class Converter(
|
|||||||
* this is just a VALUE_PARAMETER_LIST
|
* this is just a VALUE_PARAMETER_LIST
|
||||||
*
|
*
|
||||||
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parsePropertyGetterOrSetter
|
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parsePropertyGetterOrSetter
|
||||||
|
* @see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor.toFirValueParameter
|
||||||
*/
|
*/
|
||||||
private fun convertSetterParameter(setterParameter: LighterASTNode, propertyTypeRef: FirTypeRef): FirValueParameter {
|
private fun convertSetterParameter(setterParameter: LighterASTNode, propertyTypeRef: FirTypeRef): FirValueParameter {
|
||||||
var modifiers = Modifier(session)
|
var modifiers = Modifier(session)
|
||||||
@@ -771,7 +782,7 @@ class Converter(
|
|||||||
null,
|
null,
|
||||||
firValueParameter.name,
|
firValueParameter.name,
|
||||||
if (firValueParameter.returnTypeRef == implicitType) propertyTypeRef else firValueParameter.returnTypeRef,
|
if (firValueParameter.returnTypeRef == implicitType) propertyTypeRef else firValueParameter.returnTypeRef,
|
||||||
null,
|
null,//TODO implement
|
||||||
isCrossinline = modifiers.parameterModifier == ParameterModifier.CROSSINLINE,
|
isCrossinline = modifiers.parameterModifier == ParameterModifier.CROSSINLINE,
|
||||||
isNoinline = modifiers.parameterModifier == ParameterModifier.NOINLINE,
|
isNoinline = modifiers.parameterModifier == ParameterModifier.NOINLINE,
|
||||||
isVararg = modifiers.parameterModifier == ParameterModifier.VARARG
|
isVararg = modifiers.parameterModifier == ParameterModifier.VARARG
|
||||||
@@ -850,7 +861,7 @@ class Converter(
|
|||||||
returnType,
|
returnType,
|
||||||
isVar,
|
isVar,
|
||||||
firExpression,
|
firExpression,
|
||||||
if (isDelegate) {
|
delegate = if (isDelegate) {
|
||||||
FirExpressionStub(session, null)
|
FirExpressionStub(session, null)
|
||||||
//TODO("not implemented")
|
//TODO("not implemented")
|
||||||
//{ property.delegate?.expression }.toFirExpression("Should have delegate")
|
//{ property.delegate?.expression }.toFirExpression("Should have delegate")
|
||||||
|
|||||||
@@ -14,10 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.declarations.impl.*
|
import org.jetbrains.kotlin.fir.declarations.impl.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirAbstractCall
|
import org.jetbrains.kotlin.fir.expressions.impl.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirDelegatedConstructorCallImpl
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirReturnExpressionImpl
|
|
||||||
import org.jetbrains.kotlin.fir.lightTree.fir.TypeConstraint
|
import org.jetbrains.kotlin.fir.lightTree.fir.TypeConstraint
|
||||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
@@ -40,7 +37,7 @@ object ConverterUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun Name?.toDelegatedSelfType(session: FirSession): FirTypeRef =
|
fun Name?.toDelegatedSelfType(session: FirSession): FirTypeRef =
|
||||||
FirUserTypeRefImpl(session, null, isNullable = false).apply {
|
FirUserTypeRefImpl(session, null, isMarkedNullable = false).apply {
|
||||||
qualifier.add(
|
qualifier.add(
|
||||||
FirQualifierPartImpl(
|
FirQualifierPartImpl(
|
||||||
this@toDelegatedSelfType ?: SpecialNames.NO_NAME_PROVIDED
|
this@toDelegatedSelfType ?: SpecialNames.NO_NAME_PROVIDED
|
||||||
@@ -108,7 +105,7 @@ object ConverterUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T : FirAbstractCall> T.extractArgumentsFrom(container: List<FirExpression>, stubMode: Boolean): T {
|
fun <T : FirCallWithArgumentList> T.extractArgumentsFrom(container: List<FirExpression>, stubMode: Boolean): T {
|
||||||
if (!stubMode) {
|
if (!stubMode) {
|
||||||
//TODO("not implemented")
|
//TODO("not implemented")
|
||||||
this.arguments += container
|
this.arguments += container
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class LightTree2Fir(
|
|||||||
fun buildFirFile(code: String, fileName: String): FirFile {
|
fun buildFirFile(code: String, fileName: String): FirFile {
|
||||||
val lightTree = buildLightTree(code)
|
val lightTree = buildLightTree(code)
|
||||||
|
|
||||||
return Converter(object : FirSessionBase() {}, stubMode, lightTree)
|
return Converter(object : FirSessionBase(null) {}, stubMode, lightTree)
|
||||||
.convertFile(lightTree.root, fileName)
|
.convertFile(lightTree.root, fileName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+13
-2
@@ -10,10 +10,12 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
|||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
|
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
|
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirMemberPropertyImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirMemberPropertyImpl
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirQualifiedAccessExpressionImpl
|
||||||
import org.jetbrains.kotlin.fir.lightTree.ClassNameUtil
|
import org.jetbrains.kotlin.fir.lightTree.ClassNameUtil
|
||||||
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.MemberModifier
|
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.MemberModifier
|
||||||
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.Modifier
|
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.Modifier
|
||||||
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.PlatformModifier
|
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.PlatformModifier
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirPropertyFromParameterCallableReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
|
|
||||||
class ValueParameter(
|
class ValueParameter(
|
||||||
@@ -45,9 +47,18 @@ class ValueParameter(
|
|||||||
receiverTypeRef = null,
|
receiverTypeRef = null,
|
||||||
returnTypeRef = type,
|
returnTypeRef = type,
|
||||||
isVar = this.isVar,
|
isVar = this.isVar,
|
||||||
initializer = null,
|
initializer = FirQualifiedAccessExpressionImpl(this.firValueParameter.session, null).apply {
|
||||||
|
calleeReference = FirPropertyFromParameterCallableReference(
|
||||||
|
this@ValueParameter.firValueParameter.session, null, name, this@ValueParameter.firValueParameter.symbol
|
||||||
|
)
|
||||||
|
},
|
||||||
getter = FirDefaultPropertyGetter(this.firValueParameter.session, null, type, modifier.visibilityModifier.toVisibility()),
|
getter = FirDefaultPropertyGetter(this.firValueParameter.session, null, type, modifier.visibilityModifier.toVisibility()),
|
||||||
setter = FirDefaultPropertySetter(this.firValueParameter.session, null, type, modifier.visibilityModifier.toVisibility()),
|
setter = if (this.isVar) FirDefaultPropertySetter(
|
||||||
|
this.firValueParameter.session,
|
||||||
|
null,
|
||||||
|
type,
|
||||||
|
modifier.visibilityModifier.toVisibility()
|
||||||
|
) else null,
|
||||||
delegate = null
|
delegate = null
|
||||||
).apply { annotations += this@ValueParameter.firValueParameter.annotations }
|
).apply { annotations += this@ValueParameter.firValueParameter.annotations }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user