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.lang.LighterASTNode
import com.intellij.openapi.util.Ref import com.intellij.openapi.util.Ref
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import com.intellij.psi.tree.IElementType
import com.intellij.util.diff.FlyweightCapableTreeStructure import com.intellij.util.diff.FlyweightCapableTreeStructure
import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.KtNodeTypes
import org.jetbrains.kotlin.psi.KtModifierListOwner import org.jetbrains.kotlin.psi.KtModifierListOwner
sealed class FirSourceElement sealed class FirSourceElement {
abstract val elementType: IElementType
}
class FirPsiSourceElement(val psi: PsiElement) : FirSourceElement() class FirPsiSourceElement(val psi: PsiElement) : FirSourceElement() {
class FirLightSourceElement(val element: LighterASTNode, val tree: FlyweightCapableTreeStructure<LighterASTNode>) : 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 val FirSourceElement?.psi: PsiElement? get() = (this as? FirPsiSourceElement)?.psi