diff --git a/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavaConcatenationInjectorManager.java b/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavaConcatenationInjectorManager.java index aeee1200fc7e..4a113f905f0a 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavaConcatenationInjectorManager.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/tree/injected/JavaConcatenationInjectorManager.java @@ -32,7 +32,7 @@ import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -54,9 +54,8 @@ public class JavaConcatenationInjectorManager extends SimpleModificationTracker unregisterConcatenationInjector(injector); } }); - psiManagerEx.registerRunnableToRunOnAnyChange(() -> { - incModificationCount(); // clear caches even on non-physical changes - }); + // clear caches even on non-physical changes + psiManagerEx.registerRunnableToRunOnAnyChange(this::incModificationCount); } public static JavaConcatenationInjectorManager getInstance(final Project project) { @@ -117,8 +116,8 @@ public class JavaConcatenationInjectorManager extends SimpleModificationTracker public abstract static class BaseConcatenation2InjectorAdapter implements MultiHostInjector { private final JavaConcatenationInjectorManager myManager; - public BaseConcatenation2InjectorAdapter(Project project) { - myManager = getInstance(project); + public BaseConcatenation2InjectorAdapter(JavaConcatenationInjectorManager manager) { + myManager = manager; } @Override @@ -141,12 +140,7 @@ public class JavaConcatenationInjectorManager extends SimpleModificationTracker else { data = anchor.getUserData(INJECTED_PSI_IN_CONCATENATION); - if (data == null) { - result = doCompute(containingFile, project, anchor, operands); - } - else { - result = data.getValue(context); - } + result = data == null ? doCompute(containingFile, project, anchor, operands) : data.getValue(context); } if (result != null && result.getResult() != null) { for (Pair p : result.getResult()) { @@ -155,17 +149,14 @@ public class JavaConcatenationInjectorManager extends SimpleModificationTracker if (data == null) { CachedValueProvider.Result cachedResult = - CachedValueProvider.Result.create(result, PsiModificationTracker.MODIFICATION_COUNT, getInstance(project)); + CachedValueProvider.Result.create(result, PsiModificationTracker.MODIFICATION_COUNT, myManager); data = CachedValuesManager.getManager(project).createParameterizedCachedValue( - new ParameterizedCachedValueProvider() { - @Override - public CachedValueProvider.Result compute(PsiElement context) { - PsiFile containingFile1 = context.getContainingFile(); - Project project1 = containingFile1.getProject(); - Pair pair = computeAnchorAndOperands(context); - MultiHostRegistrarImpl registrar = pair.second.length == 0 ? null : doCompute(containingFile1, project1, pair.first, pair.second); - return registrar == null ? null : CachedValueProvider.Result.create(registrar, PsiModificationTracker.MODIFICATION_COUNT, getInstance(project1)); - } + context1 -> { + PsiFile containingFile1 = context1.getContainingFile(); + Project project1 = containingFile1.getProject(); + Pair pair1 = computeAnchorAndOperands(context1); + MultiHostRegistrarImpl registrar1 = pair1.second.length == 0 ? null : doCompute(containingFile1, project1, pair1.first, pair1.second); + return registrar1 == null ? null : CachedValueProvider.Result.create(registrar1, PsiModificationTracker.MODIFICATION_COUNT, myManager); }, false); ((PsiParameterizedCachedValue)data).setValue(cachedResult); @@ -188,9 +179,8 @@ public class JavaConcatenationInjectorManager extends SimpleModificationTracker } public static class Concatenation2InjectorAdapter extends BaseConcatenation2InjectorAdapter implements MultiHostInjector { - - public Concatenation2InjectorAdapter(Project project) { - super(project); + public Concatenation2InjectorAdapter(JavaConcatenationInjectorManager manager) { + super(manager); } @Override @@ -203,7 +193,7 @@ public class JavaConcatenationInjectorManager extends SimpleModificationTracker public List> elementsToInjectIn() { return LITERALS; } - private static final List> LITERALS = Arrays.asList(PsiLiteralExpression.class); + private static final List> LITERALS = Collections.singletonList(PsiLiteralExpression.class); } private final List myConcatenationInjectors = ContainerUtil.createLockFreeCopyOnWriteList(); diff --git a/plugins/groovy/src/org/intellij/plugins/intelliLang/inject/groovy/GrConcatenation2InjectorAdapter.java b/plugins/groovy/src/org/intellij/plugins/intelliLang/inject/groovy/GrConcatenation2InjectorAdapter.java index 137f708635e2..31585f8a5654 100644 --- a/plugins/groovy/src/org/intellij/plugins/intelliLang/inject/groovy/GrConcatenation2InjectorAdapter.java +++ b/plugins/groovy/src/org/intellij/plugins/intelliLang/inject/groovy/GrConcatenation2InjectorAdapter.java @@ -16,7 +16,6 @@ package org.intellij.plugins.intelliLang.inject.groovy; import com.intellij.lang.injection.MultiHostInjector; -import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.psi.PsiElement; import com.intellij.psi.impl.source.tree.injected.JavaConcatenationInjectorManager; @@ -37,8 +36,8 @@ import java.util.List; * @author Max Medvedev */ public class GrConcatenation2InjectorAdapter extends JavaConcatenationInjectorManager.BaseConcatenation2InjectorAdapter implements MultiHostInjector { - public GrConcatenation2InjectorAdapter(Project project) { - super(project); + public GrConcatenation2InjectorAdapter(JavaConcatenationInjectorManager manager) { + super(manager); } @Override