From 3a2b15521b979d22b61fc3ea66f363011faa1a65 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 16 Nov 2020 15:16:38 +0300 Subject: [PATCH] FirSourceElement: introduce common 'lighterASTNode' property --- .../kotlin/fir/analysis/FirSourceChildren.kt | 2 +- .../fir/analysis/checkers/FirModifierList.kt | 2 +- .../declaration/FirAnnotationArgumentChecker.kt | 3 +-- .../FirAnnotationClassDeclarationChecker.kt | 2 +- .../FirConstructorInInterfaceChecker.kt | 5 ++--- .../FirDelegationInInterfaceChecker.kt | 5 ++--- .../FirExposedVisibilityDeclarationChecker.kt | 2 +- .../FirSupertypeInitializedInInterfaceChecker.kt | 5 ++--- ...pertypeInitializedWithoutPrimaryConstructor.kt | 5 ++--- ...FirTypeArgumentsNotAllowedExpressionChecker.kt | 5 ++--- .../CanBeReplacedWithOperatorAssignmentChecker.kt | 4 ++-- .../analysis/checkers/extended/CanBeValChecker.kt | 2 +- .../extended/RedundantExplicitTypeChecker.kt | 2 +- ...undantSingleExpressionStringTemplateChecker.kt | 7 +++---- .../lightTree/converter/DeclarationsConverter.kt | 2 +- .../kotlin/fir/lightTree/fir/ValueParameter.kt | 2 +- .../org/jetbrains/kotlin/fir/FirSourceElement.kt | 15 +++++++++------ 17 files changed, 33 insertions(+), 37 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/FirSourceChildren.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/FirSourceChildren.kt index 83f5a334e48..40d8c8f5d2f 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/FirSourceChildren.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/FirSourceChildren.kt @@ -37,5 +37,5 @@ private fun FirPsiSourceElement<*>.getChild(types: Set, index: Int private fun FirLightSourceElement.getChild(types: Set, index: Int, depth: Int): FirSourceElement? { val visitor = LighterTreeElementFinderByType(tree, types, index, depth) - return visitor.find(lightNode)?.let { it.toFirLightSourceElement(it.startOffset, it.endOffset, tree) } + return visitor.find(lighterASTNode)?.let { it.toFirLightSourceElement(it.startOffset, it.endOffset, tree) } } \ No newline at end of file diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirModifierList.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirModifierList.kt index 56b49588641..dba6f998b87 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirModifierList.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirModifierList.kt @@ -28,7 +28,7 @@ fun FirSourceElement?.getModifierList(): FirModifierList? { is FirPsiSourceElement<*> -> (psi as? KtModifierListOwner)?.modifierList?.let { FirPsiModifierList(it) } is FirLightSourceElement -> { val kidsRef = Ref>() - tree.getChildren(element, kidsRef) + tree.getChildren(lighterASTNode, kidsRef) val modifierListNode = kidsRef.get().find { it?.tokenType == KtNodeTypes.MODIFIER_LIST } ?: return null FirLightModifierList(modifierListNode, tree) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationArgumentChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationArgumentChecker.kt index e1b46b82732..0d2a46e10b9 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationArgumentChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationArgumentChecker.kt @@ -241,8 +241,7 @@ object FirAnnotationArgumentChecker : FirBasicDeclarationChecker() { is FirPsiSourceElement<*> -> source.psi.parent.toFirPsiSourceElement() is FirLightSourceElement -> { - val elementOfParent = source.tree.getParent(source.element) - ?: source.element + val elementOfParent = source.tree.getParent(source.lighterASTNode) ?: source.lighterASTNode elementOfParent.toFirLightSourceElement(elementOfParent.startOffset, elementOfParent.endOffset, source.tree) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationClassDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationClassDeclarationChecker.kt index ab2cb3a7e2e..83c75be6085 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationClassDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationClassDeclarationChecker.kt @@ -53,7 +53,7 @@ object FirAnnotationClassDeclarationChecker : FirBasicDeclarationChecker() { } is FirLightSourceElement -> { val kidsRef = Ref>() - parameterSourceElement.tree.getChildren(parameterSourceElement.element, kidsRef) + parameterSourceElement.tree.getChildren(parameterSourceElement.lighterASTNode, kidsRef) if (kidsRef.get().any { it?.tokenType == VAR_KEYWORD }) reporter.report(parameterSourceElement, FirErrors.VAR_ANNOTATION_PARAMETER) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirConstructorInInterfaceChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirConstructorInInterfaceChecker.kt index 3bd5ec7dbd1..7ada834666c 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirConstructorInInterfaceChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirConstructorInInterfaceChecker.kt @@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirDeclaration -import org.jetbrains.kotlin.fir.lightNode import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.psi.KtPrimaryConstructor @@ -36,11 +35,11 @@ object FirConstructorInInterfaceChecker : FirBasicDeclarationChecker() { private fun FirSourceElement.hasPrimaryConstructor(): Boolean { val localPsi = psi - val localLightNode = lightNode + val localLightNode = lighterASTNode if (localPsi != null && localPsi !is PsiErrorElement) { return localPsi.hasPrimaryConstructor() - } else if (localLightNode != null && this is FirLightSourceElement) { + } else if (this is FirLightSourceElement) { return localLightNode.hasPrimaryConstructor(tree) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDelegationInInterfaceChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDelegationInInterfaceChecker.kt index a230304c1fe..c98213ba7fd 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDelegationInInterfaceChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDelegationInInterfaceChecker.kt @@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration -import org.jetbrains.kotlin.fir.lightNode import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.psi.KtDelegatedSuperTypeEntry @@ -36,11 +35,11 @@ object FirDelegationInInterfaceChecker : FirMemberDeclarationChecker() { private fun FirSourceElement.findSuperTypeDelegation(): Int { val localPsi = psi - val localLightNode = lightNode + val localLightNode = lighterASTNode if (localPsi != null && localPsi !is PsiErrorElement) { return localPsi.findSuperTypeDelegation() - } else if (localLightNode != null && this is FirLightSourceElement) { + } else if (this is FirLightSourceElement) { return localLightNode.findSuperTypeDelegation(tree) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExposedVisibilityDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExposedVisibilityDeclarationChecker.kt index 0962c47492f..46b8c798cbb 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExposedVisibilityDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExposedVisibilityDeclarationChecker.kt @@ -234,7 +234,7 @@ object FirExposedVisibilityDeclarationChecker : FirMemberDeclarationChecker() { is FirPsiSourceElement<*> -> (this.psi as? PsiNameIdentifierOwner)?.nameIdentifier?.toFirPsiSourceElement() is FirLightSourceElement -> { val kidsRef = Ref>() - this.tree.getChildren(this.element, kidsRef) + this.tree.getChildren(lighterASTNode, kidsRef) val identifier = kidsRef.get().find { it?.tokenType == KtTokens.IDENTIFIER } identifier?.toFirLightSourceElement(this.tree.getStartOffset(identifier), this.tree.getEndOffset(identifier), this.tree) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypeInitializedInInterfaceChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypeInitializedInInterfaceChecker.kt index c8a748f5f6d..b69a4575cdc 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypeInitializedInInterfaceChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypeInitializedInInterfaceChecker.kt @@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration -import org.jetbrains.kotlin.fir.lightNode import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.psi.KtSuperTypeCallEntry @@ -36,11 +35,11 @@ object FirSupertypeInitializedInInterfaceChecker : FirMemberDeclarationChecker() private fun FirSourceElement.findSuperTypeCall(): Int { val localPsi = psi - val localLightNode = lightNode + val localLightNode = lighterASTNode if (localPsi != null && localPsi !is PsiErrorElement) { return localPsi.findSuperTypeCall() - } else if (localLightNode != null && this is FirLightSourceElement) { + } else if (this is FirLightSourceElement) { return localLightNode.findSuperTypeCall(tree) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypeInitializedWithoutPrimaryConstructor.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypeInitializedWithoutPrimaryConstructor.kt index cab6c21648c..898935b1019 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypeInitializedWithoutPrimaryConstructor.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSupertypeInitializedWithoutPrimaryConstructor.kt @@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.lightNode import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.psi.KtSuperTypeCallEntry @@ -40,11 +39,11 @@ object FirSupertypeInitializedWithoutPrimaryConstructor : FirMemberDeclarationCh private fun FirSourceElement.anySupertypeHasConstructorParentheses(): Boolean { val localPsi = psi - val localLightNode = lightNode + val localLightNode = lighterASTNode if (localPsi != null && localPsi !is PsiErrorElement) { return localPsi.anySupertypeHasConstructorParentheses() - } else if (localLightNode != null && this is FirLightSourceElement) { + } else if (this is FirLightSourceElement) { return localLightNode.anySupertypeHasConstructorParentheses(tree) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirTypeArgumentsNotAllowedExpressionChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirTypeArgumentsNotAllowedExpressionChecker.kt index 7f6a529f7cc..b902ba825ef 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirTypeArgumentsNotAllowedExpressionChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirTypeArgumentsNotAllowedExpressionChecker.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier -import org.jetbrains.kotlin.fir.lightNode import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.psi.KtTypeArgumentList @@ -38,11 +37,11 @@ object FirTypeArgumentsNotAllowedExpressionChecker : FirQualifiedAccessChecker() private fun FirSourceElement.hasAnyArguments(): Boolean { val localPsi = this.psi - val localLight = this.lightNode + val localLight = this.lighterASTNode if (localPsi != null && localPsi !is PsiErrorElement) { return localPsi.hasAnyArguments() - } else if (localLight != null && this is FirLightSourceElement) { + } else if (this is FirLightSourceElement) { return localLight.hasAnyArguments(this.tree) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/CanBeReplacedWithOperatorAssignmentChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/CanBeReplacedWithOperatorAssignmentChecker.kt index 0f28f5e2d70..873695acb44 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/CanBeReplacedWithOperatorAssignmentChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/CanBeReplacedWithOperatorAssignmentChecker.kt @@ -51,8 +51,8 @@ object CanBeReplacedWithOperatorAssignmentChecker : FirExpressionChecker>() - tree.getChildren(source.element, children) + tree.getChildren(source.lighterASTNode, children) children.get().filterNotNull().filter { it.tokenType == KtNodeTypes.DESTRUCTURING_DECLARATION_ENTRY }.size } else -> null diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt index 582d9a1cc4c..023416a2536 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt @@ -98,7 +98,7 @@ object RedundantExplicitTypeChecker : FirMemberDeclarationChecker() { source.psi?.text } is FirLightSourceElement -> { - (source as FirLightSourceElement).element.toString() + source?.lighterASTNode?.toString() } else -> null } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSingleExpressionStringTemplateChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSingleExpressionStringTemplateChecker.kt index d57265081dc..301e9f554fe 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSingleExpressionStringTemplateChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSingleExpressionStringTemplateChecker.kt @@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirStatement -import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.symbols.StandardClassIds import org.jetbrains.kotlin.fir.types.classId import org.jetbrains.kotlin.fir.types.coneType @@ -38,12 +37,12 @@ object RedundantSingleExpressionStringTemplateChecker : FirBasicExpressionChecke } private fun FirStatement.stringParentChildrenCount(): Int? { - return when (source) { + return when (val source = source) { is FirPsiSourceElement<*> -> { - source.psi?.stringParentChildrenCount() + source.psi.stringParentChildrenCount() } is FirLightSourceElement -> { - (source as FirLightSourceElement).element.stringParentChildrenCount(source as FirLightSourceElement) + source.lighterASTNode.stringParentChildrenCount(source) } else -> null } diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt index 1d8c066ead6..ba619ce96b0 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt @@ -486,7 +486,7 @@ class DeclarationsConverter( //parse data class if (modifiers.isDataClass() && firPrimaryConstructor != null) { - val zippedParameters = properties.map { it.source?.lightNode!! to it } + val zippedParameters = properties.map { it.source!!.lighterASTNode to it } DataClassMembersGenerator( baseSession, classNode, diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/ValueParameter.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/ValueParameter.kt index b0e4b430539..a579dbd9a7c 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/ValueParameter.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/ValueParameter.kt @@ -44,7 +44,7 @@ class ValueParameter( return buildProperty { val parameterSource = firValueParameter.source as? FirLightSourceElement - val parameterNode = parameterSource?.lightNode + val parameterNode = parameterSource?.lighterASTNode source = parameterNode?.toFirLightSourceElement( parameterSource.startOffset, parameterSource.endOffset, parameterSource.tree, FirFakeSourceElementKind.PropertyFromParameter 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 82914a9709a..4ab52409b97 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirSourceElement.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirSourceElement.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir import com.intellij.lang.LighterASTNode +import com.intellij.lang.TreeBackedLighterAST import com.intellij.psi.PsiElement import com.intellij.psi.tree.IElementType import com.intellij.util.diff.FlyweightCapableTreeStructure @@ -152,9 +153,11 @@ sealed class FirSourceElement { abstract val startOffset: Int abstract val endOffset: Int abstract val kind: FirSourceElementKind + abstract val lighterASTNode: LighterASTNode } - +// NB: in certain situations, psi.node could be null +// Potentially exceptions can be provoked by elementType / lighterASTNode sealed class FirPsiSourceElement(val psi: P) : FirSourceElement() { override val elementType: IElementType get() = psi.node.elementType @@ -164,6 +167,8 @@ sealed class FirPsiSourceElement(val psi: P) : FirSourceElem override val endOffset: Int get() = psi.textRange.endOffset + + override val lighterASTNode by lazy { TreeBackedLighterAST.wrap(psi.node) } } class FirRealPsiSourceElement(psi: P) : FirPsiSourceElement

(psi) { @@ -174,20 +179,20 @@ class FirFakeSourceElement(psi: P, override val kind: FirFak fun FirSourceElement.fakeElement(newKind: FirFakeSourceElementKind): FirSourceElement { return when (this) { - is FirLightSourceElement -> FirLightSourceElement(element, startOffset, endOffset, tree, newKind) + is FirLightSourceElement -> FirLightSourceElement(lighterASTNode, startOffset, endOffset, tree, newKind) is FirPsiSourceElement<*> -> FirFakeSourceElement(psi, newKind) } } class FirLightSourceElement( - val element: LighterASTNode, + override val lighterASTNode: LighterASTNode, override val startOffset: Int, override val endOffset: Int, val tree: FlyweightCapableTreeStructure, override val kind: FirSourceElementKind = FirRealSourceElementKind, ) : FirSourceElement() { override val elementType: IElementType - get() = element.tokenType + get() = lighterASTNode.tokenType } val FirSourceElement?.psi: PsiElement? get() = (this as? FirPsiSourceElement<*>)?.psi @@ -207,5 +212,3 @@ inline fun LighterASTNode.toFirLightSourceElement( tree: FlyweightCapableTreeStructure, kind: FirSourceElementKind = FirRealSourceElementKind ): FirLightSourceElement = FirLightSourceElement(this, startOffset, endOffset, tree, kind) - -val FirSourceElement?.lightNode: LighterASTNode? get() = (this as? FirLightSourceElement)?.element