Remove Label.parseAbsolute(string, boolean). The goal is to get rid of all label methods that don't explicitly pass a repository mapping.
RELNOTES: None
PiperOrigin-RevId: 201717665
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
index ddc6ab5..e85915f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
@@ -100,16 +100,21 @@
// If we don't want to support old built-in rules and Skylark simultaneously
// (except for transition phase) it's probably OK.
private static final LoadingCache<String, Label> labelCache =
- CacheBuilder.newBuilder().build(new CacheLoader<String, Label>() {
- @Override
- public Label load(String from) throws Exception {
- try {
- return Label.parseAbsolute(from, false);
- } catch (LabelSyntaxException e) {
- throw new Exception(from);
- }
- }
- });
+ CacheBuilder.newBuilder()
+ .build(
+ new CacheLoader<String, Label>() {
+ @Override
+ public Label load(String from) throws Exception {
+ try {
+ return Label.parseAbsolute(
+ from,
+ /* defaultToMain=*/ false,
+ /* repositoryMapping= */ ImmutableMap.of());
+ } catch (LabelSyntaxException e) {
+ throw new Exception(from);
+ }
+ }
+ });
// TODO(bazel-team): Remove the code duplication (BaseRuleClasses and this class).
/** Parent rule class for non-executable non-test Skylark rules. */
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
index 9899f2c..b81efab 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
@@ -99,28 +99,12 @@
*
* <p>Treats labels in the default repository as being in the main repository instead.
*/
- public static Label parseAbsolute(String absName) throws LabelSyntaxException {
- return parseAbsolute(absName, true);
- }
-
- /**
- * Factory for Labels from absolute string form. e.g.
- *
- * <pre>
- * //foo/bar
- * //foo/bar:quux
- * {@literal @}foo
- * {@literal @}foo//bar
- * {@literal @}foo//bar:baz
- * </pre>
- *
- * @param defaultToMain Treat labels in the default repository as being in the main one instead.
- */
@Deprecated
- // TODO(dannark): Remove usages of this method, use other parseAbsolute() instead
- public static Label parseAbsolute(String absName, boolean defaultToMain)
- throws LabelSyntaxException {
- return parseAbsolute(absName, defaultToMain, /* repositoryMapping= */ ImmutableMap.of());
+ // TODO(b/110698008): deprecate this method and only have parseAbsolute() methods that pass
+ // a repositoryMapping
+ public static Label parseAbsolute(String absName) throws LabelSyntaxException {
+ return parseAbsolute(
+ absName, /* defaultToMain= */ true, /* repositoryMapping= */ ImmutableMap.of());
}
/**
@@ -185,9 +169,11 @@
*
* <p>Do not use this when the argument is not hard-wired.
*/
+ @Deprecated
+ // TODO(b/110698008): create parseAbsoluteUnchecked that passes repositoryMapping
public static Label parseAbsoluteUnchecked(String absName, boolean defaultToMain) {
try {
- return parseAbsolute(absName, defaultToMain);
+ return parseAbsolute(absName, defaultToMain, /* repositoryMapping= */ ImmutableMap.of());
} catch (LabelSyntaxException e) {
throw new IllegalArgumentException(e);
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/BuildType.java b/src/main/java/com/google/devtools/build/lib/packages/BuildType.java
index ecc397b..1e48835 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/BuildType.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/BuildType.java
@@ -267,7 +267,8 @@
}
// TODO(b/110101445): check if context is ever actually null
if (context == null) {
- return Label.parseAbsolute((String) x, false);
+ return Label.parseAbsolute(
+ (String) x, /* defaultToMain= */ false, /* repositoryMapping= */ ImmutableMap.of());
// TODO(b/110308446): remove instances of context being a Label
} else if (context instanceof Label) {
return ((Label) context)
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index 36c172b..1f75b1e 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -355,7 +355,11 @@
Attribute attribute = Iterables.getOnlyElement(aspect.getAttributes());
assertThat(attribute.getName()).isEqualTo("$extra_deps");
assertThat(attribute.getDefaultValue(null))
- .isEqualTo(Label.parseAbsolute("//foo/bar:baz", false));
+ .isEqualTo(
+ Label.parseAbsolute(
+ "//foo/bar:baz",
+ /* defaultToMain= */ false,
+ /* repositoryMapping= */ ImmutableMap.of()));
}
@Test
@@ -467,19 +471,36 @@
public void testLabelAttrDefaultValueAsString() throws Exception {
Attribute sligleAttr = buildAttribute("a1", "attr.label(default = '//foo:bar')");
assertThat(sligleAttr.getDefaultValueForTesting())
- .isEqualTo(Label.parseAbsolute("//foo:bar", false));
+ .isEqualTo(
+ Label.parseAbsolute(
+ "//foo:bar",
+ /* defaultToMain= */ false,
+ /* repositoryMapping= */ ImmutableMap.of()));
Attribute listAttr =
buildAttribute("a2", "attr.label_list(default = ['//foo:bar', '//bar:foo'])");
assertThat(listAttr.getDefaultValueForTesting())
.isEqualTo(
ImmutableList.of(
- Label.parseAbsolute("//foo:bar", false), Label.parseAbsolute("//bar:foo", false)));
+ Label.parseAbsolute(
+ "//foo:bar",
+ /* defaultToMain= */ false,
+ /* repositoryMapping= */ ImmutableMap.of()),
+ Label.parseAbsolute(
+ "//bar:foo",
+ /* defaultToMain= */ false,
+ /*repositoryMapping= */ ImmutableMap.of())));
Attribute dictAttr =
buildAttribute("a3", "attr.label_keyed_string_dict(default = {'//foo:bar': 'my value'})");
assertThat(dictAttr.getDefaultValueForTesting())
- .isEqualTo(ImmutableMap.of(Label.parseAbsolute("//foo:bar", false), "my value"));
+ .isEqualTo(
+ ImmutableMap.of(
+ Label.parseAbsolute(
+ "//foo:bar",
+ /* defaultToMain= */ false,
+ /* repositoryMapping= */ ImmutableMap.of()),
+ "my value"));
}
@Test