Skip to content

Commit 0c1007c

Browse files
authored
[CQ] Nullability: add missing annotations to overrides (#8147)
Addresses a number of places where we're overriding methods that provide nullability guarantees that we're not respecting in our implementations. Also removes a few unstable overrides (that were just duplicating super behavior anyway). ![image](https://github.com/user-attachments/assets/a843b919-b709-4762-b611-b4b45a93a59f) --- - [x] I’ve reviewed the contributor guide and applied the relevant portions to this PR. <details> <summary>Contribution guidelines:</summary><br> - See our [contributor guide]([https://github.com/dart-lang/sdk/blob/main/CONTRIBUTING.md](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview) for general expectations for PRs. - Larger or significant changes should be discussed in an issue before creating a PR. - Dart contributions to our repos should follow the [Dart style guide](https://dart.dev/guides/language/effective-dart) and use `dart format`. - Java and Kotlin contributions should strive to follow Java and Kotlin best practices ([discussion](#8098)). </details>
1 parent cf591fc commit 0c1007c

File tree

9 files changed

+23
-41
lines changed

9 files changed

+23
-41
lines changed

flutter-idea/src/io/flutter/FlutterErrorReportSubmitter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public String getReportActionText() {
5151
}
5252

5353
//@Override
54-
public boolean submit(@NotNull IdeaLoggingEvent[] events,
54+
public boolean submit(@NotNull IdeaLoggingEvent @NotNull [] events,
5555
@Nullable String additionalInfo,
5656
@NotNull Component parentComponent,
5757
@NotNull Consumer<? super SubmittedReportInfo> consumer) {

flutter-idea/src/io/flutter/project/FlutterProjectOpenProcessor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@
2626
public class FlutterProjectOpenProcessor extends ProjectOpenProcessor {
2727
private static final Logger LOG = Logger.getInstance(FlutterProjectOpenProcessor.class);
2828

29-
@NotNull
3029
@Override
31-
public String getName() {
30+
public @NotNull String getName() {
3231
return FlutterBundle.message("flutter.module.name");
3332
}
3433

flutter-idea/src/io/flutter/run/FlutterPositionMapper.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ public FlutterPositionMapper(@NotNull Project project,
109109

110110
@NotNull
111111
public Project getProject() {
112-
return project;
112+
// Project may be null after shutdown but clients have no business accessing it after that so it's reasonable to fail here.
113+
return Objects.requireNonNull(project);
113114
}
114115

115116
public void onConnect(@NotNull DartVmServiceDebugProcess.ScriptProvider provider, @Nullable String remoteBaseUri) {
@@ -330,9 +331,10 @@ protected VirtualFile findLocalFile(@NotNull String uri, CompletableFuture<Strin
330331
if (analyzer != null && !isDartPatchUri(remoteUri)) {
331332
final String path = analyzer.getAbsolutePath(remoteUri);
332333
if (path != null) {
333-
if(path.startsWith("file://")) {
334+
if (path.startsWith("file://")) {
334335
LocalFileSystem.getInstance().findFileByPath(path.substring(7));
335-
} else {
336+
}
337+
else {
336338
LocalFileSystem.getInstance().findFileByPath(path);
337339
}
338340
}

flutter-idea/src/io/flutter/run/SdkRunConfig.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public static class RecursiveDeleter extends SimpleFileVisitor<Path> {
9696
}
9797

9898
@Override
99-
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
99+
public @NotNull FileVisitResult visitFile(Path file, @NotNull BasicFileAttributes attrs) {
100100
final Path name = file.getFileName();
101101
if (name != null && matcher.matches(name)) {
102102
try {
@@ -111,12 +111,12 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
111111
}
112112

113113
@Override
114-
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
114+
public @NotNull FileVisitResult preVisitDirectory(@NotNull Path dir, @NotNull BasicFileAttributes attrs) {
115115
return CONTINUE;
116116
}
117117

118118
@Override
119-
public FileVisitResult visitFileFailed(Path file, IOException exc) {
119+
public @NotNull FileVisitResult visitFileFailed(@NotNull Path file, @NotNull IOException exc) {
120120
FlutterUtils.warn(LOG, exc);
121121
return CONTINUE;
122122
}
@@ -199,11 +199,11 @@ public LaunchState getState(@NotNull Executor executor, @NotNull ExecutionEnviro
199199
}
200200

201201
static @NotNull FlutterApp getFlutterApp(@NotNull ExecutionEnvironment env,
202-
@NotNull FlutterDevice device,
203-
Project project,
204-
Module module,
205-
RunMode mode,
206-
GeneralCommandLine command) throws ExecutionException {
202+
@NotNull FlutterDevice device,
203+
Project project,
204+
Module module,
205+
RunMode mode,
206+
GeneralCommandLine command) throws ExecutionException {
207207
final FlutterApp app = FlutterApp.start(env, project, module, mode, device, command,
208208
StringUtil.capitalize(mode.mode()) + "App",
209209
"StopApp");

flutter-idea/src/io/flutter/run/coverage/FlutterCoverageEngine.java

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,28 @@
55
*/
66
package io.flutter.run.coverage;
77

8-
import com.intellij.coverage.CoverageAnnotator;
9-
import com.intellij.coverage.CoverageEngine;
10-
import com.intellij.coverage.CoverageFileProvider;
11-
import com.intellij.coverage.CoverageRunner;
12-
import com.intellij.coverage.CoverageSuite;
13-
import com.intellij.coverage.CoverageSuitesBundle;
8+
import com.intellij.coverage.*;
149
import com.intellij.execution.configurations.RunConfigurationBase;
1510
import com.intellij.execution.configurations.RunProfile;
1611
import com.intellij.execution.configurations.WrappingRunConfiguration;
1712
import com.intellij.execution.configurations.coverage.CoverageEnabledConfiguration;
18-
import com.intellij.execution.testframework.AbstractTestProxy;
1913
import com.intellij.openapi.module.Module;
2014
import com.intellij.openapi.project.Project;
2115
import com.intellij.openapi.vfs.VirtualFile;
22-
import com.intellij.psi.PsiElement;
2316
import com.intellij.psi.PsiFile;
2417
import com.jetbrains.lang.dart.DartFileType;
2518
import com.jetbrains.lang.dart.psi.DartFile;
2619
import io.flutter.FlutterBundle;
2720
import io.flutter.FlutterUtils;
2821
import io.flutter.pub.PubRoot;
2922
import io.flutter.run.test.TestConfig;
23+
import org.jetbrains.annotations.NotNull;
24+
import org.jetbrains.annotations.Nullable;
3025

3126
import java.io.File;
3227
import java.util.HashSet;
33-
import java.util.List;
3428
import java.util.Set;
3529

36-
import org.jetbrains.annotations.NotNull;
37-
import org.jetbrains.annotations.Nullable;
38-
3930
public class FlutterCoverageEngine extends CoverageEngine {
4031

4132
public static FlutterCoverageEngine getInstance() {
@@ -134,16 +125,6 @@ public String getQualifiedName(@NotNull final File outputFile,
134125
return qualifiedNames;
135126
}
136127

137-
@Override
138-
public List<PsiElement> findTestsByNames(@NotNull String[] testNames, @NotNull Project project) {
139-
return null;
140-
}
141-
142-
@Override
143-
public @Nullable String getTestMethodName(@NotNull PsiElement element, @NotNull AbstractTestProxy testProxy) {
144-
return null;
145-
}
146-
147128
@Override
148129
public String getPresentableText() {
149130
return FlutterBundle.message("flutter.coverage.presentable.text");

flutter-idea/third_party/vmServiceDrivers/org/dartlang/vm/service/element/ElementList.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.google.gson.JsonArray;
44
import com.google.gson.JsonObject;
5+
import org.jetbrains.annotations.NotNull;
56

67
import java.util.Iterator;
78

@@ -27,7 +28,7 @@ public boolean isEmpty() {
2728
}
2829

2930
@Override
30-
public Iterator<T> iterator() {
31+
public @NotNull Iterator<T> iterator() {
3132
return new Iterator<T>() {
3233
int index = 0;
3334

flutter-studio/src/io/flutter/actions/OpenAndroidModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
*/
3434
public class OpenAndroidModule extends OpenInAndroidStudioAction implements DumbAware {
3535
@Override
36-
public void actionPerformed(AnActionEvent e) {
36+
public void actionPerformed(@NotNull AnActionEvent e) {
3737
final VirtualFile projectFile = findProjectFile(e);
3838
if (projectFile == null) {
3939
FlutterMessages.showError("Error Opening Android Studio", "Project not found.", e.getProject());

flutter-studio/src/io/flutter/android/AndroidModuleLibraryManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ protected EmbeddedAndroidProject(@NotNull Path filePath) {
307307

308308
static final String TEMPLATE_PROJECT_NAME = "_android";
309309

310-
public String getLocationHash() {
310+
public @NotNull String getLocationHash() {
311311
return "";
312312
}
313313

flutter-studio/src/io/flutter/editor/FlutterStudioProjectOpenProcessor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import com.intellij.projectImport.ProjectOpenProcessor;
1212
import com.intellij.ui.EditorNotifications;
1313
import io.flutter.FlutterUtils;
14-
//import io.flutter.project.FlutterProjectCreator;
1514
import io.flutter.project.FlutterProjectOpenProcessor;
1615
import io.flutter.pub.PubRoot;
1716
import io.flutter.utils.FlutterModuleUtils;
@@ -20,7 +19,7 @@
2019

2120
public class FlutterStudioProjectOpenProcessor extends FlutterProjectOpenProcessor {
2221
@Override
23-
public String getName() {
22+
public @NotNull String getName() {
2423
return "Flutter Studio";
2524
}
2625

0 commit comments

Comments
 (0)