From cd0beb166042dde7045a49eb88de1bd05b836d61 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 26 Apr 2016 20:23:26 +0200 Subject: [PATCH] cache inferred @Contract annotations --- .../ProjectBytecodeAnalysis.java | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ProjectBytecodeAnalysis.java b/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ProjectBytecodeAnalysis.java index ecd16653a7c3..76323913864b 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ProjectBytecodeAnalysis.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ProjectBytecodeAnalysis.java @@ -33,6 +33,7 @@ import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.util.PsiFormatUtil; import com.intellij.testFramework.LightVirtualFile; import com.intellij.util.IncorrectOperationException; +import com.intellij.util.containers.ConcurrentFactoryMap; import com.intellij.util.containers.Stack; import com.intellij.util.indexing.FileBasedIndex; import org.jetbrains.annotations.NotNull; @@ -218,27 +219,27 @@ public class ProjectBytecodeAnalysis { } public PsiAnnotation getNotNullAnnotation() { - return CachedValuesManager.getManager(myProject).getCachedValue(myProject, new CachedValueProvider() { - @Nullable - @Override - public Result compute() { - return Result.create(createAnnotationFromText("@" + AnnotationUtil.NOT_NULL), ModificationTracker.NEVER_CHANGED); - } - }); + return CachedValuesManager.getManager(myProject).getCachedValue(myProject, () -> + CachedValueProvider.Result.create(createAnnotationFromText("@" + AnnotationUtil.NOT_NULL), ModificationTracker.NEVER_CHANGED)); } public PsiAnnotation getNullableAnnotation() { - return CachedValuesManager.getManager(myProject).getCachedValue(myProject, new CachedValueProvider() { - @Nullable - @Override - public Result compute() { - return Result.create(createAnnotationFromText("@" + AnnotationUtil.NULLABLE), ModificationTracker.NEVER_CHANGED); - } - }); + return CachedValuesManager.getManager(myProject).getCachedValue(myProject, () -> + CachedValueProvider.Result.create(createAnnotationFromText("@" + AnnotationUtil.NULLABLE), ModificationTracker.NEVER_CHANGED)); } public PsiAnnotation createContractAnnotation(String contractValue) { - return createAnnotationFromText("@org.jetbrains.annotations.Contract(" + contractValue + ")"); + Map cache = CachedValuesManager.getManager(myProject).getCachedValue(myProject, () -> { + Map map = new ConcurrentFactoryMap() { + @Nullable + @Override + protected PsiAnnotation create(String attrs) { + return createAnnotationFromText("@org.jetbrains.annotations.Contract(" + attrs + ")"); + } + }; + return CachedValueProvider.Result.create(map, ModificationTracker.NEVER_CHANGED); + }); + return cache.get(contractValue); } @Nullable