Introduce FirSourceElement.elementType

This commit is contained in:
Mikhail Glukhikh
2020-03-18 15:34:47 +03:00
parent 25ab863af7
commit 26a63a45ee
@@ -8,14 +8,24 @@ package org.jetbrains.kotlin.fir
import com.intellij.lang.LighterASTNode
import com.intellij.openapi.util.Ref
import com.intellij.psi.PsiElement
import com.intellij.psi.tree.IElementType
import com.intellij.util.diff.FlyweightCapableTreeStructure
import org.jetbrains.kotlin.KtNodeTypes
import org.jetbrains.kotlin.psi.KtModifierListOwner
sealed class FirSourceElement
sealed class FirSourceElement {
abstract val elementType: IElementType
}
class FirPsiSourceElement(val psi: PsiElement) : FirSourceElement()
class FirLightSourceElement(val element: LighterASTNode, val tree: FlyweightCapableTreeStructure<LighterASTNode>) : FirSourceElement()
class FirPsiSourceElement(val psi: PsiElement) : FirSourceElement() {
override val elementType: IElementType
get() = psi.node.elementType
}
class FirLightSourceElement(val element: LighterASTNode, val tree: FlyweightCapableTreeStructure<LighterASTNode>) : FirSourceElement() {
override val elementType: IElementType
get() = element.tokenType
}
val FirSourceElement?.psi: PsiElement? get() = (this as? FirPsiSourceElement)?.psi