mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
cache inferred @Contract annotations
This commit is contained in:
+16
-15
@@ -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<PsiAnnotation>() {
|
||||
@Nullable
|
||||
@Override
|
||||
public Result<PsiAnnotation> 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<PsiAnnotation>() {
|
||||
@Nullable
|
||||
@Override
|
||||
public Result<PsiAnnotation> 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<String, PsiAnnotation> cache = CachedValuesManager.getManager(myProject).getCachedValue(myProject, () -> {
|
||||
Map<String, PsiAnnotation> map = new ConcurrentFactoryMap<String, PsiAnnotation>() {
|
||||
@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
|
||||
|
||||
Reference in New Issue
Block a user