[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.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
@@ -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)
}
}
@@ -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<LighterASTNode>
): FirLightSourceElement = FirLightSourceElement(this, startOffset, endOffset, tree)
val FirSourceElement?.lightNode: LighterASTNode? get() = (this as? FirLightSourceElement)?.element
fun FirSourceElement?.getModifierList(): FirModifierList? {