From 869fb46c0bc7bc8313f272c46c9c869ff13d610a Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Thu, 17 Jan 2019 15:03:03 +0300 Subject: [PATCH] Optimize KotlinUFunctionCallExpression.isAnnotationArgumentArrayExpression --- .../kotlin/expressions/KotlinUFunctionCallExpression.kt | 9 ++++++--- .../expressions/KotlinUFunctionCallExpression.kt.182 | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt index 5bfbb7775eb..e76eab82db1 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt @@ -204,13 +204,16 @@ class KotlinUFunctionCallExpression( } private fun isAnnotationArgumentArrayInitializer(): Boolean { - val resolvedCall = resolvedCall ?: return false // KtAnnotationEntry (or KtCallExpression when annotation is nested) -> KtValueArgumentList -> KtValueArgument -> arrayOf call - return when (val elementAt2 = psi.parents.elementAtOrNull(2)) { + val isAnnotationArgument = when (val elementAt2 = psi.parents.elementAtOrNull(2)) { is KtAnnotationEntry -> true is KtCallExpression -> elementAt2.getParentOfType(true, KtDeclaration::class.java) != null else -> false - } && CompileTimeConstantUtils.isArrayFunctionCall(resolvedCall) + } + if (!isAnnotationArgument) return false + + val resolvedCall = resolvedCall ?: return false + return CompileTimeConstantUtils.isArrayFunctionCall(resolvedCall) } override fun convertParent(): UElement? = super.convertParent().let { result -> diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt.182 b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt.182 index c378a7c6e1d..dfcf9a077ea 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt.182 +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt.182 @@ -148,13 +148,16 @@ class KotlinUFunctionCallExpression( } private fun isAnnotationArgumentArrayInitializer(): Boolean { - val resolvedCall = resolvedCall ?: return false // KtAnnotationEntry (or KtCallExpression when annotation is nested) -> KtValueArgumentList -> KtValueArgument -> arrayOf call - return when (val elementAt2 = psi.parents.elementAtOrNull(2)) { + val isAnnotationArgument = when (val elementAt2 = psi.parents.elementAtOrNull(2)) { is KtAnnotationEntry -> true is KtCallExpression -> elementAt2.getParentOfType(true, KtDeclaration::class.java) != null else -> false - } && CompileTimeConstantUtils.isArrayFunctionCall(resolvedCall) + } + if (!isAnnotationArgument) return false + + val resolvedCall = resolvedCall ?: return false + return CompileTimeConstantUtils.isArrayFunctionCall(resolvedCall) } override fun convertParent(): UElement? = super.convertParent().let { result ->