diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/duplicateStringLiteral/DuplicateStringLiteralInspection.java b/plugins/java-i18n/src/com/intellij/codeInspection/duplicateStringLiteral/DuplicateStringLiteralInspection.java index b113fef17bf6..6282312da9b9 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/duplicateStringLiteral/DuplicateStringLiteralInspection.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/duplicateStringLiteral/DuplicateStringLiteralInspection.java @@ -120,10 +120,10 @@ public class DuplicateStringLiteralInspection extends BaseLocalInspectionTool { } @NotNull - private List findDuplicateLiterals(String stringToFind, Project project) { + private List findDuplicateLiterals(String stringToFind, Project project) { Set resultFiles = getCandidateFiles(stringToFind, project); if (resultFiles.isEmpty()) return Collections.emptyList(); - List foundExpr = new ArrayList<>(); + List foundExpr = new ArrayList<>(); for (final PsiFile file : resultFiles) { ProgressManager.checkCanceled(); @@ -138,7 +138,7 @@ public class DuplicateStringLiteralInspection extends BaseLocalInspectionTool { if (element == null || !(element.getParent() instanceof PsiLiteralExpression)) return true; PsiLiteralExpression expression = (PsiLiteralExpression)element.getParent(); if (Comparing.equal(stringToFind, expression.getValue()) && shouldCheck(expression)) { - foundExpr.add(PsiAnchor.create(expression)); + foundExpr.add(expression); } return true; }); @@ -157,10 +157,8 @@ public class DuplicateStringLiteralInspection extends BaseLocalInspectionTool { List foundExpr = getDuplicateLiterals(stringToFind, originalExpression); if (foundExpr.isEmpty()) return; Set classes = new THashSet<>(); - for (PsiLiteralExpression expr : foundExpr) { - if (expr == originalExpression) continue; + for (PsiElement aClass : foundExpr) { ProgressManager.checkCanceled(); - PsiElement aClass = expr; do { aClass = PsiTreeUtil.getParentOfType(aClass, PsiClass.class); } @@ -208,15 +206,12 @@ public class DuplicateStringLiteralInspection extends BaseLocalInspectionTool { @NotNull private List getDuplicateLiterals(String stringToFind, PsiLiteralExpression place) { Project project = place.getProject(); - Map> map = CachedValuesManager.getManager(project).getCachedValue(project, () -> { - Map> value = ConcurrentFactoryMap.createConcurrentMap( + Map> map = CachedValuesManager.getManager(project).getCachedValue(project, () -> { + Map> value = ConcurrentFactoryMap.createConcurrentMap( s -> Collections.unmodifiableList(findDuplicateLiterals(s, project))); return CachedValueProvider.Result.create(value, PsiModificationTracker.MODIFICATION_COUNT); }); - return ContainerUtil.mapNotNull(map.get(stringToFind), anchor -> { - PsiLiteralExpression literal = (PsiLiteralExpression)anchor.retrieve(); - return literal == place ? null : literal; - }); + return ContainerUtil.filter(map.get(stringToFind), literal -> literal != place); } private boolean shouldCheck(@NotNull PsiLiteralExpression expression) {