From d4937bc956c7bfc8405cd8ac8daf68c60aae5aca Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Tue, 17 Apr 2018 17:34:04 +0300 Subject: [PATCH] [groovy] prevent recursion directly in #getSubstitutor --- .../plugins/groovy/lang/psi/impl/GrLiteralClassType.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrLiteralClassType.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrLiteralClassType.java index 3dda3007d415..a81c54be94e4 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrLiteralClassType.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GrLiteralClassType.java @@ -12,6 +12,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil; +import static com.intellij.openapi.util.RecursionManager.doPreventingRecursion; + /** * @author peter */ @@ -52,7 +54,8 @@ public abstract class GrLiteralClassType extends PsiClassType { @Override @NotNull public PsiSubstitutor getSubstitutor() { - return mySubstitutor.getValue(); + PsiSubstitutor substitutor = doPreventingRecursion(GrLiteralClassType.this, false, () -> mySubstitutor.getValue()); + return substitutor == null ? PsiSubstitutor.EMPTY : substitutor; } @Override