[7.4.0] Show "did you mean" suggestion for `{override,inject}_repo` (#24000)
Fixes #23981
Closes #23982.
PiperOrigin-RevId: 686486627
Change-Id: I5f03b63601a535f8d551c005b00bf040846a324d
Commit
https://github.com/bazelbuild/bazel/commit/b0f1430f0e9b7608b9ecc64b20c3b0fe40ac4a43
Co-authored-by: Fabian Meumertzheim <fabian@meumertzhe.im>
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BUILD
index c02e7e8..a0a5eb1 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/BUILD
@@ -191,6 +191,7 @@
"//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
"//src/main/java/net/starlark/java/annot",
"//src/main/java/net/starlark/java/eval",
+ "//src/main/java/net/starlark/java/spelling",
"//src/main/java/net/starlark/java/syntax",
"//src/main/protobuf:failure_details_java_proto",
"//third_party:auto_value",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleThreadContext.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleThreadContext.java
index 06231cc..89829fd 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleThreadContext.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleThreadContext.java
@@ -37,6 +37,7 @@
import net.starlark.java.eval.EvalException;
import net.starlark.java.eval.Starlark;
import net.starlark.java.eval.StarlarkThread;
+import net.starlark.java.spelling.SpellChecker;
import net.starlark.java.syntax.Location;
/** Context object for a Starlark thread evaluating the MODULE.bazel file and files it includes. */
@@ -257,8 +258,11 @@
if (!context.repoNameUsages.containsKey(overridingRepoName)) {
throw Starlark.errorf(
"The repo exported as '%s' by module extension '%s' is overridden with '%s', but"
- + " no repo is visible under this name",
- overriddenRepoName, extensionName, overridingRepoName)
+ + " no repo is visible under this name%s",
+ overriddenRepoName,
+ extensionName,
+ overridingRepoName,
+ SpellChecker.didYouMean(overridingRepoName, context.repoNameUsages.keySet()))
.withCallStack(override.getValue().stack);
}
String importedAs = imports.inverse().get(overriddenRepoName);