From d3f6d7b5d9e2e6e907f394d14a232c51a1faa858 Mon Sep 17 00:00:00 2001 From: Jaime Wren Date: Mon, 28 Jul 2025 10:32:51 -0700 Subject: [PATCH] Use SmartList in places where it is clear that memory may be saved --- .../dart/analyzer/DartAnalysisServerService.java | 2 +- .../jetbrains/lang/dart/analyzer/DartServerData.java | 2 +- .../ide/hierarchy/call/DartCalleeTreeStructure.java | 3 ++- .../DartServerExtractLocalVariableHandler.java | 12 +++++------- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartAnalysisServerService.java b/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartAnalysisServerService.java index 2194b663b..7e01bafbf 100644 --- a/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartAnalysisServerService.java +++ b/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartAnalysisServerService.java @@ -2001,7 +2001,7 @@ public void execution_deleteContext(final @NotNull String contextId) { @NotNull List expressions) { final AnalysisServer server = myServer; if (server == null) { - return new Pair<>(new ArrayList<>(), new ArrayList<>()); + return new Pair<>(new SmartList<>(), new SmartList<>()); } final String contextFileUri = getFileUri(contextFile); diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartServerData.java b/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartServerData.java index 8295cca67..fb4d5bdc8 100644 --- a/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartServerData.java +++ b/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartServerData.java @@ -290,7 +290,7 @@ VirtualFile getNotLocalVirtualFile(@NotNull String fileUri) { @NotNull List getErrors(final @NotNull SearchScope scope) { - final List errors = new ArrayList<>(); + final List errors = new SmartList<>(); synchronized (myErrorData) { for (Map.Entry> entry : myErrorData.entrySet()) { diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/ide/hierarchy/call/DartCalleeTreeStructure.java b/third_party/src/main/java/com/jetbrains/lang/dart/ide/hierarchy/call/DartCalleeTreeStructure.java index 5af48497e..27af9e18c 100644 --- a/third_party/src/main/java/com/jetbrains/lang/dart/ide/hierarchy/call/DartCalleeTreeStructure.java +++ b/third_party/src/main/java/com/jetbrains/lang/dart/ide/hierarchy/call/DartCalleeTreeStructure.java @@ -5,6 +5,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import com.intellij.util.SmartList; import com.jetbrains.lang.dart.analyzer.DartAnalysisServerService; import com.jetbrains.lang.dart.psi.DartComponent; import com.jetbrains.lang.dart.psi.DartComponentName; @@ -81,7 +82,7 @@ private static PsiElement getDeclaration(DartNavigationTarget target, PsiElement return region.getTargets(); } } - return new ArrayList<>(0); + return new SmartList<>(); } @Override diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/ide/refactoring/introduce/DartServerExtractLocalVariableHandler.java b/third_party/src/main/java/com/jetbrains/lang/dart/ide/refactoring/introduce/DartServerExtractLocalVariableHandler.java index fd634a49e..2db3b042f 100644 --- a/third_party/src/main/java/com/jetbrains/lang/dart/ide/refactoring/introduce/DartServerExtractLocalVariableHandler.java +++ b/third_party/src/main/java/com/jetbrains/lang/dart/ide/refactoring/introduce/DartServerExtractLocalVariableHandler.java @@ -18,6 +18,7 @@ import com.intellij.refactoring.ui.NameSuggestionsField; import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.util.ArrayUtil; +import com.intellij.util.SmartList; import com.intellij.util.ui.JBUI; import com.jetbrains.lang.dart.DartBundle; import com.jetbrains.lang.dart.DartFileType; @@ -35,7 +36,6 @@ import javax.swing.*; import java.awt.*; -import java.util.ArrayList; import java.util.List; public class DartServerExtractLocalVariableHandler implements RefactoringActionHandler { @@ -89,9 +89,6 @@ public void perform() { final int[] offsets = refactoring.getCoveringExpressionOffsets(); final int[] lengths = refactoring.getCoveringExpressionLengths(); expressions = getDartExpressions(offsets, lengths); - if (expressions == null) { - return; - } } // select the expression to extract if (expressions.size() == 1 || ApplicationManager.getApplication().isUnitTestMode()) { @@ -119,12 +116,13 @@ private void createRefactoring(int offset, int length) { return PsiTreeUtil.findElementOfClassAtRange(file, offset, offset + length, DartExpression.class); } - private @Nullable List getDartExpressions(int[] offsets, int[] lengths) { - final List expressions = new ArrayList<>(); + @NotNull + private List getDartExpressions(int[] offsets, int[] lengths) { + final List expressions = new SmartList<>(); for (int i = 0; i < offsets.length; i++) { final DartExpression expression = findExpressionWithRange(offsets[i], lengths[i]); if (expression == null) { - return null; + return expressions; } expressions.add(expression); }