diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/GroovyExpressionFilter.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/GroovyExpressionFilter.kt new file mode 100644 index 000000000000..e2d6e0be19a0 --- /dev/null +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/GroovyExpressionFilter.kt @@ -0,0 +1,15 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package org.jetbrains.plugins.groovy.lang + +import org.jetbrains.annotations.ApiStatus.Experimental +import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression + +@Experimental +interface GroovyExpressionFilter { + + /** + * @return `true` if [expression] is not really an expression, + * meaning it would be transformed into something else + */ + fun isFake(expression: GrExpression): Boolean +} diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/expressionUtil.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/expressionUtil.kt new file mode 100644 index 000000000000..3b4e50aa0b1f --- /dev/null +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/expressionUtil.kt @@ -0,0 +1,16 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +@file:JvmName("GroovyExpressionUtil") + +package org.jetbrains.plugins.groovy.lang.psi.util + +import com.intellij.openapi.extensions.ExtensionPointName +import org.jetbrains.plugins.groovy.lang.GroovyExpressionFilter +import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression + +private val EP_NAME = ExtensionPointName.create("org.intellij.groovy.expressionFilter") + +fun GrExpression.isFake(): Boolean { + return EP_NAME.extensions.any { + it.isFake(this) + } +} diff --git a/plugins/groovy/src/META-INF/plugin.xml b/plugins/groovy/src/META-INF/plugin.xml index b0c8f2958321..aaf628d43362 100644 --- a/plugins/groovy/src/META-INF/plugin.xml +++ b/plugins/groovy/src/META-INF/plugin.xml @@ -82,6 +82,7 @@ +