From c92c77638a1a55dccccd25da45934113b4677135 Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Tue, 23 Nov 2021 17:36:25 +0300 Subject: [PATCH] [FIR] Use CharSequence instead of String in getRawIdentifier to avoid extra string allocations --- .../kotlin/fir/analysis/checkers/SourceNavigator.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/SourceNavigator.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/SourceNavigator.kt index 8f3bff96457..4defdb5bcf3 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/SourceNavigator.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/SourceNavigator.kt @@ -34,7 +34,7 @@ interface SourceNavigator { fun FirTypeRef.isInTypeConstraint(): Boolean - fun KtSourceElement.getRawIdentifier(): String? + fun KtSourceElement.getRawIdentifier(): CharSequence? fun FirDeclaration.getRawName(): String? @@ -74,7 +74,7 @@ open class LightTreeSourceNavigator : SourceNavigator { ?.tokenType == KtNodeTypes.TYPE_CONSTRAINT } - override fun KtSourceElement.getRawIdentifier(): String? { + override fun KtSourceElement.getRawIdentifier(): CharSequence? { return when (elementType) { is KtNameReferenceExpressionElementType, KtTokens.IDENTIFIER -> lighterASTNode.toString() is KtTypeProjectionElementType -> lighterASTNode.getChildren(treeStructure).last().toString() @@ -111,14 +111,14 @@ object PsiSourceNavigator : LightTreeSourceNavigator() { override fun FirTypeRef.isInConstructorCallee(): Boolean = psi()?.parent is KtConstructorCalleeExpression - override fun KtSourceElement.getRawIdentifier(): String? { + override fun KtSourceElement.getRawIdentifier(): CharSequence? { val psi = psi() return if (psi is KtNameReferenceExpression) { - psi.getReferencedNameElement().node.text + psi.getReferencedNameElement().node.chars } else if (psi is KtTypeProjection) { psi.typeReference?.typeElement?.text } else if (psi is LeafPsiElement && psi.elementType == KtTokens.IDENTIFIER) { - psi.text + psi.chars } else { null }