From b821dcb2e99abb8c0ae9cfedea60489ee632acf3 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 5 Jul 2024 09:03:29 +0200 Subject: [PATCH] [kotlin] delegate read/write access state to java when unclear - don't create java detector on each call KTIJ-30448 GitOrigin-RevId: 2e3343e0a18d96c82f78e6ab48d004b34c2ec169 --- .../search/ideaExtensions/KotlinReadWriteAccessDetector.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/kotlin/base/analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReadWriteAccessDetector.kt b/plugins/kotlin/base/analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReadWriteAccessDetector.kt index c9eea40bc677..dcd38895a4b8 100644 --- a/plugins/kotlin/base/analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReadWriteAccessDetector.kt +++ b/plugins/kotlin/base/analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReadWriteAccessDetector.kt @@ -18,7 +18,9 @@ class KotlinReadWriteAccessDetector : ReadWriteAccessDetector() { val INSTANCE = KotlinReadWriteAccessDetector() } - override fun isReadWriteAccessible(element: PsiElement) = element is KtVariableDeclaration || element is KtParameter || JavaReadWriteAccessDetector().isReadWriteAccessible(element) + private val javaReadWriteAccessDetector = JavaReadWriteAccessDetector() + + override fun isReadWriteAccessible(element: PsiElement) = element is KtVariableDeclaration || element is KtParameter || javaReadWriteAccessDetector.isReadWriteAccessible(element) override fun isDeclarationWriteAccess(element: PsiElement) = isReadWriteAccessible(element) @@ -47,7 +49,7 @@ class KotlinReadWriteAccessDetector : ReadWriteAccessDetector() { override fun getExpressionAccess(expression: PsiElement): Access { if (expression !is KtExpression) { //TODO: there should be a more correct scheme of access type detection for cross-language references - return JavaReadWriteAccessDetector().getExpressionAccess(expression) + return javaReadWriteAccessDetector.getExpressionAccess(expression) } return when (expression.readWriteAccess(useResolveForReadWrite = true)) {