From cec0f585441aaf501d23f7be64bfcb2dedc7662a Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 26 Mar 2020 16:54:32 +0300 Subject: [PATCH] [FIR] Introduce & use toFirLightSourceElement --- .../kotlin/fir/lightTree/converter/BaseConverter.kt | 4 ++-- .../tree/src/org/jetbrains/kotlin/fir/FirModifierList.kt | 2 +- .../tree/src/org/jetbrains/kotlin/fir/FirSourceElement.kt | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/BaseConverter.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/BaseConverter.kt index 00aea2fc1a0..e2fb8ce2fff 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/BaseConverter.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/BaseConverter.kt @@ -12,10 +12,10 @@ import com.intellij.util.diff.FlyweightCapableTreeStructure import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.fir.FirLightSourceElement 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.Context 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.lexer.KtToken import org.jetbrains.kotlin.lexer.KtTokens.* @@ -33,7 +33,7 @@ open class BaseConverter( override fun LighterASTNode.toFirSourceElement(): FirLightSourceElement { val startOffset = offset + tree.getStartOffset(this) val endOffset = offset + tree.getEndOffset(this) - return FirLightSourceElement(this, startOffset, endOffset, tree) + return toFirLightSourceElement(startOffset, endOffset, tree) } override val LighterASTNode.elementType: IElementType diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirModifierList.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirModifierList.kt index ab502665b69..c9e42fd1d38 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirModifierList.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirModifierList.kt @@ -65,6 +65,6 @@ val FirModifier<*>.source: FirSourceElement? // TODO pretty sure I got offsets wrong here val startOffset = tree.getStartOffset(node) val endOffset = tree.getEndOffset(node) - FirLightSourceElement(node, startOffset, endOffset, tree) + node.toFirLightSourceElement(startOffset, endOffset, tree) } } \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirSourceElement.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirSourceElement.kt index 83f4276dc1b..bc44b0ed2de 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirSourceElement.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirSourceElement.kt @@ -49,6 +49,12 @@ val FirElement.psi: PsiElement? get() = (source as? FirPsiSourceElement<*>)?.psi @Suppress("NOTHING_TO_INLINE") inline fun PsiElement.toFirPsiSourceElement(): FirPsiSourceElement<*> = FirPsiSourceElement(this) +@Suppress("NOTHING_TO_INLINE") +inline fun LighterASTNode.toFirLightSourceElement( + startOffset: Int, endOffset: Int, + tree: FlyweightCapableTreeStructure +): FirLightSourceElement = FirLightSourceElement(this, startOffset, endOffset, tree) + val FirSourceElement?.lightNode: LighterASTNode? get() = (this as? FirLightSourceElement)?.element fun FirSourceElement?.getModifierList(): FirModifierList? {