[FIR] Introduce & use toFirLightSourceElement

This commit is contained in:
Mikhail Glukhikh
2020-03-26 16:54:32 +03:00
parent 6a5acc024a
commit cec0f58544
3 changed files with 9 additions and 3 deletions
@@ -12,10 +12,10 @@ import com.intellij.util.diff.FlyweightCapableTreeStructure
import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.KtNodeTypes
import org.jetbrains.kotlin.fir.FirLightSourceElement import org.jetbrains.kotlin.fir.FirLightSourceElement
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.builder.BaseFirBuilder import org.jetbrains.kotlin.fir.builder.BaseFirBuilder
import org.jetbrains.kotlin.fir.builder.Context import org.jetbrains.kotlin.fir.builder.Context
import org.jetbrains.kotlin.fir.builder.escapedStringToCharacter import org.jetbrains.kotlin.fir.builder.escapedStringToCharacter
import org.jetbrains.kotlin.fir.toFirLightSourceElement
import org.jetbrains.kotlin.fir.types.builder.buildImplicitTypeRef import org.jetbrains.kotlin.fir.types.builder.buildImplicitTypeRef
import org.jetbrains.kotlin.lexer.KtToken import org.jetbrains.kotlin.lexer.KtToken
import org.jetbrains.kotlin.lexer.KtTokens.* import org.jetbrains.kotlin.lexer.KtTokens.*
@@ -33,7 +33,7 @@ open class BaseConverter(
override fun LighterASTNode.toFirSourceElement(): FirLightSourceElement { override fun LighterASTNode.toFirSourceElement(): 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 FirLightSourceElement(this, startOffset, endOffset, tree) return toFirLightSourceElement(startOffset, endOffset, tree)
} }
override val LighterASTNode.elementType: IElementType override val LighterASTNode.elementType: IElementType
@@ -65,6 +65,6 @@ val FirModifier<*>.source: FirSourceElement?
// TODO pretty sure I got offsets wrong here // TODO pretty sure I got offsets wrong here
val startOffset = tree.getStartOffset(node) val startOffset = tree.getStartOffset(node)
val endOffset = tree.getEndOffset(node) val endOffset = tree.getEndOffset(node)
FirLightSourceElement(node, startOffset, endOffset, tree) node.toFirLightSourceElement(startOffset, endOffset, tree)
} }
} }
@@ -49,6 +49,12 @@ val FirElement.psi: PsiElement? get() = (source as? FirPsiSourceElement<*>)?.psi
@Suppress("NOTHING_TO_INLINE") @Suppress("NOTHING_TO_INLINE")
inline fun PsiElement.toFirPsiSourceElement(): FirPsiSourceElement<*> = FirPsiSourceElement(this) inline fun PsiElement.toFirPsiSourceElement(): FirPsiSourceElement<*> = FirPsiSourceElement(this)
@Suppress("NOTHING_TO_INLINE")
inline fun LighterASTNode.toFirLightSourceElement(
startOffset: Int, endOffset: Int,
tree: FlyweightCapableTreeStructure<LighterASTNode>
): FirLightSourceElement = FirLightSourceElement(this, startOffset, endOffset, tree)
val FirSourceElement?.lightNode: LighterASTNode? get() = (this as? FirLightSourceElement)?.element val FirSourceElement?.lightNode: LighterASTNode? get() = (this as? FirLightSourceElement)?.element
fun FirSourceElement?.getModifierList(): FirModifierList? { fun FirSourceElement?.getModifierList(): FirModifierList? {