[FIR] Add some helper functions for checkers
This commit is contained in:
+15
-20
@@ -5,13 +5,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.analysis.checkers
|
package org.jetbrains.kotlin.fir.analysis.checkers
|
||||||
|
|
||||||
import com.intellij.lang.LighterASTNode
|
|
||||||
import com.intellij.openapi.util.Ref
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
||||||
|
import org.jetbrains.kotlin.fir.Visibilities
|
||||||
|
import org.jetbrains.kotlin.fir.Visibility
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirEmptyExpressionBlock
|
import org.jetbrains.kotlin.fir.expressions.impl.FirEmptyExpressionBlock
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
@@ -310,21 +312,14 @@ fun FirClass<*>.findNonInterfaceSupertype(context: CheckerContext): FirTypeRef?
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the source element of the eq operator in assignment statement
|
* Returns KtModifierToken by Modality
|
||||||
*/
|
*/
|
||||||
fun FirSourceElement.eqOperatorSource(): FirSourceElement? {
|
fun Modality.toToken(): KtModifierKeywordToken = when (this) {
|
||||||
return when (this) {
|
Modality.FINAL -> KtTokens.FINAL_KEYWORD
|
||||||
is FirLightSourceElement -> {
|
Modality.SEALED -> KtTokens.SEALED_KEYWORD
|
||||||
val children = Ref<Array<LighterASTNode>>()
|
Modality.OPEN -> KtTokens.OPEN_KEYWORD
|
||||||
val tree = tree
|
Modality.ABSTRACT -> KtTokens.ABSTRACT_KEYWORD
|
||||||
tree.getChildren(element, children)
|
}
|
||||||
val element = children.get().getOrNull(2) ?: return null
|
|
||||||
element.toFirLightSourceElement(element.startOffset, element.endOffset, tree)
|
val FirFunctionCall.isIterator
|
||||||
}
|
get() = this.calleeReference.name.asString() == "<iterator>"
|
||||||
is FirPsiSourceElement<*> -> {
|
|
||||||
val operator = psi.children.getOrNull(1)
|
|
||||||
operator?.toFirPsiSourceElement()
|
|
||||||
}
|
|
||||||
else -> null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user