Simplify LighterASTNode.toFirLightSourceElement

This commit is contained in:
Mikhail Glukhikh
2020-11-19 15:08:43 +03:00
parent 037c505069
commit c6b703b598
7 changed files with 10 additions and 15 deletions
@@ -37,5 +37,5 @@ private fun FirPsiSourceElement<*>.getChild(types: Set<IElementType>, index: Int
private fun FirLightSourceElement.getChild(types: Set<IElementType>, index: Int, depth: Int): FirSourceElement? { private fun FirLightSourceElement.getChild(types: Set<IElementType>, index: Int, depth: Int): FirSourceElement? {
val visitor = LighterTreeElementFinderByType(treeStructure, types, index, depth) val visitor = LighterTreeElementFinderByType(treeStructure, types, index, depth)
return visitor.find(lighterASTNode)?.let { it.toFirLightSourceElement(it.startOffset, it.endOffset, treeStructure) } return visitor.find(lighterASTNode)?.toFirLightSourceElement(treeStructure)
} }
@@ -76,11 +76,6 @@ val FirModifier<*>.lightNode: LighterASTNode? get() = (this as? FirLightModifier
val FirModifier<*>.source: FirSourceElement? val FirModifier<*>.source: FirSourceElement?
get() = when (this) { get() = when (this) {
is FirPsiModifier -> this.psi?.toFirPsiSourceElement() is FirPsiModifier -> psi?.toFirPsiSourceElement()
is FirLightModifier -> { is FirLightModifier -> node.toFirLightSourceElement(tree)
// TODO pretty sure I got offsets wrong here
val startOffset = tree.getStartOffset(node)
val endOffset = tree.getEndOffset(node)
node.toFirLightSourceElement(startOffset, endOffset, tree)
}
} }
@@ -243,7 +243,7 @@ object FirAnnotationArgumentChecker : FirBasicDeclarationChecker() {
is FirLightSourceElement -> { is FirLightSourceElement -> {
val elementOfParent = source.treeStructure.getParent(source.lighterASTNode) ?: source.lighterASTNode val elementOfParent = source.treeStructure.getParent(source.lighterASTNode) ?: source.lighterASTNode
elementOfParent.toFirLightSourceElement(elementOfParent.startOffset, elementOfParent.endOffset, source.treeStructure) elementOfParent.toFirLightSourceElement(source.treeStructure)
} }
else -> else ->
source source
@@ -236,7 +236,7 @@ object FirExposedVisibilityDeclarationChecker : FirMemberDeclarationChecker() {
val kidsRef = Ref<Array<LighterASTNode?>>() val kidsRef = Ref<Array<LighterASTNode?>>()
this.treeStructure.getChildren(lighterASTNode, kidsRef) this.treeStructure.getChildren(lighterASTNode, kidsRef)
val identifier = kidsRef.get().find { it?.tokenType == KtTokens.IDENTIFIER } val identifier = kidsRef.get().find { it?.tokenType == KtTokens.IDENTIFIER }
identifier?.toFirLightSourceElement(this.treeStructure.getStartOffset(identifier), this.treeStructure.getEndOffset(identifier), this.treeStructure) identifier?.toFirLightSourceElement(this.treeStructure)
} }
} }
@@ -32,7 +32,7 @@ open class BaseConverter(
override fun LighterASTNode.toFirSourceElement(kind: FirFakeSourceElementKind?): FirLightSourceElement { override fun LighterASTNode.toFirSourceElement(kind: FirFakeSourceElementKind?): FirLightSourceElement {
val startOffset = offset + tree.getStartOffset(this) val startOffset = offset + tree.getStartOffset(this)
val endOffset = offset + tree.getEndOffset(this) val endOffset = offset + tree.getEndOffset(this)
return toFirLightSourceElement(startOffset, endOffset, tree, kind ?: FirRealSourceElementKind) return toFirLightSourceElement(tree, kind ?: FirRealSourceElementKind, startOffset, endOffset)
} }
override val LighterASTNode.elementType: IElementType override val LighterASTNode.elementType: IElementType
@@ -46,8 +46,7 @@ class ValueParameter(
val parameterSource = firValueParameter.source as? FirLightSourceElement val parameterSource = firValueParameter.source as? FirLightSourceElement
val parameterNode = parameterSource?.lighterASTNode val parameterNode = parameterSource?.lighterASTNode
source = parameterNode?.toFirLightSourceElement( source = parameterNode?.toFirLightSourceElement(
parameterSource.startOffset, parameterSource.endOffset, parameterSource.treeStructure, parameterSource.treeStructure, FirFakeSourceElementKind.PropertyFromParameter
FirFakeSourceElementKind.PropertyFromParameter
) )
this.session = session this.session = session
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
@@ -288,7 +288,8 @@ inline fun PsiElement.toFirPsiSourceElement(kind: FirSourceElementKind = FirReal
@Suppress("NOTHING_TO_INLINE") @Suppress("NOTHING_TO_INLINE")
inline fun LighterASTNode.toFirLightSourceElement( inline fun LighterASTNode.toFirLightSourceElement(
startOffset: Int, endOffset: Int,
tree: FlyweightCapableTreeStructure<LighterASTNode>, tree: FlyweightCapableTreeStructure<LighterASTNode>,
kind: FirSourceElementKind = FirRealSourceElementKind kind: FirSourceElementKind = FirRealSourceElementKind,
startOffset: Int = this.startOffset,
endOffset: Int = this.endOffset
): FirLightSourceElement = FirLightSourceElement(this, startOffset, endOffset, tree, kind) ): FirLightSourceElement = FirLightSourceElement(this, startOffset, endOffset, tree, kind)