From b6fc51e780616a5c322fdc308607eb4cf02c72dd Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Wed, 10 Oct 2018 14:43:33 +0300 Subject: [PATCH] UastPatterns: fix for SOE in `setterParameter` pattern in SpringMVC (IDEA-200194) --- .../src/com/intellij/patterns/uast/UastPatterns.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uast/uast-common/src/com/intellij/patterns/uast/UastPatterns.kt b/uast/uast-common/src/com/intellij/patterns/uast/UastPatterns.kt index b85923adf6f5..ef063f3e2e08 100644 --- a/uast/uast-common/src/com/intellij/patterns/uast/UastPatterns.kt +++ b/uast/uast-common/src/com/intellij/patterns/uast/UastPatterns.kt @@ -82,11 +82,14 @@ private fun isCallExpressionParameter(argumentExpression: UElement, private fun isPropertyAssignCall(argument: UElement, methodPattern: ElementPattern): Boolean { val uBinaryExpression = (argument.uastParent as? UBinaryExpression) ?: return false + if (uBinaryExpression.operator != UastBinaryOperator.ASSIGN) return false + val leftOperand = uBinaryExpression.leftOperand val uastReference = when (leftOperand) { is UQualifiedReferenceExpression -> leftOperand.selector - else -> leftOperand + is UReferenceExpression -> leftOperand + else -> return false } val references = uastReference.sourcePsi?.references ?: return false // via `sourcePsi` because of KT-27385 return references.any { methodPattern.accepts(it.resolve()) }