[FIR] Code cleanup: DeclarationsConverter
This commit is contained in:
+26
-17
@@ -48,7 +48,7 @@ import org.jetbrains.kotlin.name.SpecialNames
|
|||||||
|
|
||||||
class DeclarationsConverter(
|
class DeclarationsConverter(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
val baseScopeProvider: FirScopeProvider,
|
private val baseScopeProvider: FirScopeProvider,
|
||||||
private val stubMode: Boolean,
|
private val stubMode: Boolean,
|
||||||
tree: FlyweightCapableTreeStructure<LighterASTNode>,
|
tree: FlyweightCapableTreeStructure<LighterASTNode>,
|
||||||
context: Context<LighterASTNode> = Context()
|
context: Context<LighterASTNode> = Context()
|
||||||
@@ -377,7 +377,7 @@ class DeclarationsConverter(
|
|||||||
isInline = modifiers.hasInline()
|
isInline = modifiers.hasInline()
|
||||||
}
|
}
|
||||||
|
|
||||||
val classBuilder = if(status.modality == Modality.SEALED) {
|
val classBuilder = if (status.modality == Modality.SEALED) {
|
||||||
FirSealedClassBuilder()
|
FirSealedClassBuilder()
|
||||||
} else {
|
} else {
|
||||||
FirClassImplBuilder()
|
FirClassImplBuilder()
|
||||||
@@ -523,17 +523,13 @@ class DeclarationsConverter(
|
|||||||
private fun convertEnumEntry(enumEntry: LighterASTNode, classWrapper: ClassWrapper): FirEnumEntry {
|
private fun convertEnumEntry(enumEntry: LighterASTNode, classWrapper: ClassWrapper): FirEnumEntry {
|
||||||
var modifiers = Modifier()
|
var modifiers = Modifier()
|
||||||
lateinit var identifier: String
|
lateinit var identifier: String
|
||||||
var hasInitializerList = false
|
|
||||||
val enumSuperTypeCallEntry = mutableListOf<FirExpression>()
|
val enumSuperTypeCallEntry = mutableListOf<FirExpression>()
|
||||||
var classBodyNode: LighterASTNode? = null
|
var classBodyNode: LighterASTNode? = null
|
||||||
enumEntry.forEachChildren {
|
enumEntry.forEachChildren {
|
||||||
when (it.tokenType) {
|
when (it.tokenType) {
|
||||||
MODIFIER_LIST -> modifiers = convertModifierList(it)
|
MODIFIER_LIST -> modifiers = convertModifierList(it)
|
||||||
IDENTIFIER -> identifier = it.asText
|
IDENTIFIER -> identifier = it.asText
|
||||||
INITIALIZER_LIST -> {
|
INITIALIZER_LIST -> enumSuperTypeCallEntry += convertInitializerList(it)
|
||||||
hasInitializerList = true
|
|
||||||
enumSuperTypeCallEntry += convertInitializerList(it)
|
|
||||||
}
|
|
||||||
CLASS_BODY -> classBodyNode = it
|
CLASS_BODY -> classBodyNode = it
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -758,8 +754,12 @@ class DeclarationsConverter(
|
|||||||
val isThis = (isImplicit && classWrapper.hasPrimaryConstructor) || thisKeywordPresent
|
val isThis = (isImplicit && classWrapper.hasPrimaryConstructor) || thisKeywordPresent
|
||||||
val delegatedType =
|
val delegatedType =
|
||||||
if (classWrapper.isObjectLiteral() || classWrapper.isInterface()) when {
|
if (classWrapper.isObjectLiteral() || classWrapper.isInterface()) when {
|
||||||
isThis -> buildErrorTypeRef { diagnostic = FirSimpleDiagnostic("Constructor in object", DiagnosticKind.ConstructorInObject) }
|
isThis -> buildErrorTypeRef {
|
||||||
else -> buildErrorTypeRef { diagnostic = FirSimpleDiagnostic("No super type", DiagnosticKind.Syntax) }
|
diagnostic = FirSimpleDiagnostic("Constructor in object", DiagnosticKind.ConstructorInObject)
|
||||||
|
}
|
||||||
|
else -> buildErrorTypeRef {
|
||||||
|
diagnostic = FirSimpleDiagnostic("No super type", DiagnosticKind.Syntax)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else when {
|
else when {
|
||||||
isThis -> classWrapper.delegatedSelfTypeRef
|
isThis -> classWrapper.delegatedSelfTypeRef
|
||||||
@@ -871,15 +871,18 @@ class DeclarationsConverter(
|
|||||||
}
|
}
|
||||||
status = FirDeclarationStatusImpl(Visibilities.LOCAL, Modality.FINAL)
|
status = FirDeclarationStatusImpl(Visibilities.LOCAL, Modality.FINAL)
|
||||||
|
|
||||||
val receiver = delegateExpression?.let { expressionConverter.getAsFirExpression<FirExpression>(it, "Incorrect delegate expression") }
|
val receiver = delegateExpression?.let {
|
||||||
|
expressionConverter.getAsFirExpression<FirExpression>(it, "Incorrect delegate expression")
|
||||||
|
}
|
||||||
generateAccessorsByDelegate(
|
generateAccessorsByDelegate(
|
||||||
delegateBuilder,baseSession,
|
delegateBuilder,
|
||||||
|
baseSession,
|
||||||
member = false,
|
member = false,
|
||||||
extension = false,
|
extension = false,
|
||||||
stubMode,
|
stubMode,
|
||||||
receiver
|
receiver
|
||||||
)
|
)
|
||||||
}else {
|
} else {
|
||||||
this.isLocal = false
|
this.isLocal = false
|
||||||
receiverTypeRef = receiverType
|
receiverTypeRef = receiverType
|
||||||
symbol = FirPropertySymbol(callableIdForName(propertyName))
|
symbol = FirPropertySymbol(callableIdForName(propertyName))
|
||||||
@@ -904,11 +907,13 @@ class DeclarationsConverter(
|
|||||||
val receiver = delegateExpression?.let {
|
val receiver = delegateExpression?.let {
|
||||||
expressionConverter.getAsFirExpression<FirExpression>(it, "Should have delegate")
|
expressionConverter.getAsFirExpression<FirExpression>(it, "Should have delegate")
|
||||||
}
|
}
|
||||||
generateAccessorsByDelegate(delegateBuilder, baseSession,
|
generateAccessorsByDelegate(
|
||||||
|
delegateBuilder, baseSession,
|
||||||
member = parentNode?.tokenType != KT_FILE,
|
member = parentNode?.tokenType != KT_FILE,
|
||||||
extension = receiverType != null,
|
extension = receiverType != null,
|
||||||
stubMode,
|
stubMode,
|
||||||
receiver)
|
receiver
|
||||||
|
)
|
||||||
}
|
}
|
||||||
annotations += modifiers.annotations
|
annotations += modifiers.annotations
|
||||||
}
|
}
|
||||||
@@ -1127,7 +1132,7 @@ class DeclarationsConverter(
|
|||||||
typeParameters += firTypeParameters
|
typeParameters += firTypeParameters
|
||||||
}
|
}
|
||||||
|
|
||||||
valueParametersList?.let { valueParameters += convertValueParameters(it).map { it.firValueParameter } }
|
valueParametersList?.let { list -> valueParameters += convertValueParameters(list).map { it.firValueParameter } }
|
||||||
body = convertFunctionBody(block, expression)
|
body = convertFunctionBody(block, expression)
|
||||||
context.firFunctionTargets.removeLast()
|
context.firFunctionTargets.removeLast()
|
||||||
}.build().also {
|
}.build().also {
|
||||||
@@ -1161,7 +1166,9 @@ class DeclarationsConverter(
|
|||||||
}
|
}
|
||||||
return if (!stubMode) {
|
return if (!stubMode) {
|
||||||
val blockTree = LightTree2Fir.buildLightTreeBlockExpression(block.asText)
|
val blockTree = LightTree2Fir.buildLightTreeBlockExpression(block.asText)
|
||||||
return DeclarationsConverter(baseSession, baseScopeProvider, stubMode, blockTree, context).convertBlockExpression(blockTree.root)
|
return DeclarationsConverter(
|
||||||
|
baseSession, baseScopeProvider, stubMode, blockTree, context
|
||||||
|
).convertBlockExpression(blockTree.root)
|
||||||
} else {
|
} else {
|
||||||
FirSingleExpressionBlock(
|
FirSingleExpressionBlock(
|
||||||
buildExpressionStub().toReturn()
|
buildExpressionStub().toReturn()
|
||||||
@@ -1224,7 +1231,9 @@ class DeclarationsConverter(
|
|||||||
*/
|
*/
|
||||||
private fun convertExplicitDelegation(explicitDelegation: LighterASTNode): FirDelegatedTypeRef {
|
private fun convertExplicitDelegation(explicitDelegation: LighterASTNode): FirDelegatedTypeRef {
|
||||||
lateinit var firTypeRef: FirTypeRef
|
lateinit var firTypeRef: FirTypeRef
|
||||||
var firExpression: FirExpression? = buildErrorExpression(explicitDelegation.toFirSourceElement(), FirSimpleDiagnostic("Should have delegate", DiagnosticKind.Syntax))
|
var firExpression: FirExpression? = buildErrorExpression(
|
||||||
|
explicitDelegation.toFirSourceElement(), FirSimpleDiagnostic("Should have delegate", DiagnosticKind.Syntax)
|
||||||
|
)
|
||||||
explicitDelegation.forEachChildren {
|
explicitDelegation.forEachChildren {
|
||||||
when (it.tokenType) {
|
when (it.tokenType) {
|
||||||
TYPE_REFERENCE -> firTypeRef = convertType(it)
|
TYPE_REFERENCE -> firTypeRef = convertType(it)
|
||||||
|
|||||||
Reference in New Issue
Block a user