diff --git a/uast/uast-common-ide/src/com/intellij/patterns/uast/UastPatterns.kt b/uast/uast-common-ide/src/com/intellij/patterns/uast/UastPatterns.kt index b067a1e489c3..7a2703c77080 100644 --- a/uast/uast-common-ide/src/com/intellij/patterns/uast/UastPatterns.kt +++ b/uast/uast-common-ide/src/com/intellij/patterns/uast/UastPatterns.kt @@ -91,13 +91,10 @@ open class UElementPattern>(clazz: parentPattern.accepts(it, context) || it.uastParent?.let { parentPattern.accepts(it, context) } ?: false } - fun withStringRoomExpressionOrSelf(parentPattern: ElementPattern): Self = filterWithContext { it, context -> - if (it !is UInjectionHost) return@filterWithContext false - - if (parentPattern.accepts(it, context)) return@filterWithContext true - - val room = it.getStringRoomExpression() - if (room === it) return@filterWithContext false + fun withStringRoomExpression(parentPattern: ElementPattern): Self = filterWithContext { it, context -> + if (it !is UExpression) return@filterWithContext false + val uHost = wrapULiteral(it) as? UInjectionHost ?: return@filterWithContext false + val room = uHost.getStringRoomExpression() parentPattern.accepts(room, context) }