Delete the flag --incompatible_no_output_attr_default.
https://github.com/bazelbuild/bazel/issues/7950
RELNOTES: The flag `incompatible_no_output_attr_default` is removed.
PiperOrigin-RevId: 302635771
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
index 91305aa7..e895d07 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
@@ -680,7 +680,6 @@
@Override
public Descriptor outputAttribute(
- Object defaultValue, // Label | StarlarkFunction
String doc,
Boolean mandatory,
StarlarkThread thread)
@@ -688,16 +687,12 @@
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.output");
return createNonconfigurableAttrDescriptor(
- "output",
- optionMap(DEFAULT_ARG, defaultValue, MANDATORY_ARG, mandatory),
- BuildType.OUTPUT,
- thread);
+ "output", optionMap(MANDATORY_ARG, mandatory), BuildType.OUTPUT, thread);
}
@Override
public Descriptor outputListAttribute(
Boolean allowEmpty,
- Object defaultValue, // Sequence | StarlarkFunction
String doc,
Boolean mandatory,
Boolean nonEmpty,
@@ -708,8 +703,6 @@
return createAttrDescriptor(
"output_list",
optionMap(
- DEFAULT_ARG,
- defaultValue,
MANDATORY_ARG,
mandatory,
NON_EMPTY_ARG,
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java
index a540379..dfb5139 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java
@@ -483,20 +483,6 @@
public boolean incompatibleNoImplicitFileExport;
@Option(
- name = "incompatible_no_output_attr_default",
- defaultValue = "true",
- documentationCategory = OptionDocumentationCategory.STARLARK_SEMANTICS,
- effectTags = {OptionEffectTag.BUILD_FILE_SEMANTICS},
- metadataTags = {
- OptionMetadataTag.INCOMPATIBLE_CHANGE,
- OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
- },
- help =
- "If set to true, disables the `default` parameter of the `attr.output` and "
- + "`attr.output_list` attribute definition functions.")
- public boolean incompatibleNoOutputAttrDefault;
-
- @Option(
name = "incompatible_no_rule_outputs_param",
defaultValue = "false",
documentationCategory = OptionDocumentationCategory.STARLARK_SEMANTICS,
@@ -704,7 +690,6 @@
.incompatibleNewActionsApi(incompatibleNewActionsApi)
.incompatibleNoAttrLicense(incompatibleNoAttrLicense)
.incompatibleNoImplicitFileExport(incompatibleNoImplicitFileExport)
- .incompatibleNoOutputAttrDefault(incompatibleNoOutputAttrDefault)
.incompatibleNoRuleOutputsParam(incompatibleNoRuleOutputsParam)
.incompatibleNoSupportToolsInActionInputs(incompatibleNoSupportToolsInActionInputs)
.incompatibleNoTargetOutputGroup(incompatibleNoTargetOutputGroup)
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
index 24f39a6..dca25cb 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
@@ -728,19 +728,6 @@
doc = "Creates a schema for an output (label) attribute." + OUTPUT_ATTR_TEXT,
parameters = {
@Param(
- name = DEFAULT_ARG,
- allowedTypes = {
- @ParamType(type = Label.class),
- @ParamType(type = StarlarkFunction.class)
- },
- noneable = true,
- defaultValue = "None",
- named = true,
- positional = false,
- disableWithFlag = FlagIdentifier.INCOMPATIBLE_NO_OUTPUT_ATTR_DEFAULT,
- valueWhenDisabled = "None",
- doc = DEFAULT_DOC),
- @Param(
name = DOC_ARG,
type = String.class,
defaultValue = "''",
@@ -756,8 +743,7 @@
doc = MANDATORY_DOC)
},
useStarlarkThread = true)
- Descriptor outputAttribute(
- Object defaultValue, String doc, Boolean mandatory, StarlarkThread thread)
+ Descriptor outputAttribute(String doc, Boolean mandatory, StarlarkThread thread)
throws EvalException;
@SkylarkCallable(
@@ -771,19 +757,6 @@
doc = ALLOW_EMPTY_DOC,
named = true),
@Param(
- name = DEFAULT_ARG,
- allowedTypes = {
- @ParamType(type = Sequence.class, generic1 = Label.class),
- @ParamType(type = StarlarkFunction.class)
- },
- noneable = true,
- defaultValue = "None",
- named = true,
- positional = false,
- disableWithFlag = FlagIdentifier.INCOMPATIBLE_NO_OUTPUT_ATTR_DEFAULT,
- valueWhenDisabled = "None",
- doc = DEFAULT_DOC),
- @Param(
name = DOC_ARG,
type = String.class,
defaultValue = "''",
@@ -808,7 +781,6 @@
useStarlarkThread = true)
Descriptor outputListAttribute(
Boolean allowEmpty,
- Object defaultValue,
String doc,
Boolean mandatory,
Boolean nonEmpty,
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java
index 28c7dd7..41ef0d7 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java
@@ -74,8 +74,6 @@
"incompatible_applicable_licenses";
public static final String INCOMPATIBLE_DISABLE_DEPSET_INPUTS =
"incompatible_disable_depset_inputs";
- public static final String INCOMPATIBLE_NO_OUTPUT_ATTR_DEFAULT =
- "incompatible_no_output_attr_default";
public static final String INCOMPATIBLE_NO_RULE_OUTPUTS_PARAM =
"incompatible_no_rule_outputs_param";
public static final String INCOMPATIBLE_NO_TARGET_OUTPUT_GROUP =
@@ -127,8 +125,6 @@
return incompatibleApplicableLicenses();
case FlagIdentifier.INCOMPATIBLE_DISABLE_DEPSET_INPUTS:
return incompatibleDisableDepsetItems();
- case FlagIdentifier.INCOMPATIBLE_NO_OUTPUT_ATTR_DEFAULT:
- return incompatibleNoOutputAttrDefault();
case FlagIdentifier.INCOMPATIBLE_NO_RULE_OUTPUTS_PARAM:
return incompatibleNoRuleOutputsParam();
case FlagIdentifier.INCOMPATIBLE_NO_TARGET_OUTPUT_GROUP:
@@ -240,8 +236,6 @@
public abstract boolean incompatibleNoImplicitFileExport();
- public abstract boolean incompatibleNoOutputAttrDefault();
-
public abstract boolean incompatibleNoRuleOutputsParam();
public abstract boolean incompatibleNoSupportToolsInActionInputs();
@@ -336,7 +330,6 @@
.incompatibleNewActionsApi(true)
.incompatibleNoAttrLicense(true)
.incompatibleNoImplicitFileExport(false)
- .incompatibleNoOutputAttrDefault(true)
.incompatibleNoRuleOutputsParam(false)
.incompatibleNoSupportToolsInActionInputs(true)
.incompatibleNoTargetOutputGroup(true)
@@ -417,8 +410,6 @@
public abstract Builder incompatibleNoImplicitFileExport(boolean value);
- public abstract Builder incompatibleNoOutputAttrDefault(boolean value);
-
public abstract Builder incompatibleNoRuleOutputsParam(boolean value);
public abstract Builder incompatibleNoSupportToolsInActionInputs(boolean value);
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java
index e999b13..762c1fe 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java
@@ -166,22 +166,20 @@
}
@Override
- public Descriptor outputAttribute(
- Object defaultO, String doc, Boolean mandatory, StarlarkThread thread) throws EvalException {
- return new FakeDescriptor(AttributeType.OUTPUT, doc, mandatory, ImmutableList.of(), defaultO);
+ public Descriptor outputAttribute(String doc, Boolean mandatory, StarlarkThread thread)
+ throws EvalException {
+ return new FakeDescriptor(AttributeType.OUTPUT, doc, mandatory, ImmutableList.of(), "");
}
@Override
public Descriptor outputListAttribute(
Boolean allowEmpty,
- Object defaultList,
String doc,
Boolean mandatory,
Boolean nonEmpty,
StarlarkThread thread)
throws EvalException {
- return new FakeDescriptor(
- AttributeType.OUTPUT_LIST, doc, mandatory, ImmutableList.of(), defaultList);
+ return new FakeDescriptor(AttributeType.OUTPUT_LIST, doc, mandatory, ImmutableList.of(), "");
}
@Override
diff --git a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java
index e80bf34..6a183e8 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java
@@ -154,7 +154,6 @@
"--incompatible_new_actions_api=" + rand.nextBoolean(),
"--incompatible_no_attr_license=" + rand.nextBoolean(),
"--incompatible_no_implicit_file_export=" + rand.nextBoolean(),
- "--incompatible_no_output_attr_default=" + rand.nextBoolean(),
"--incompatible_no_rule_outputs_param=" + rand.nextBoolean(),
"--incompatible_no_support_tools_in_action_inputs=" + rand.nextBoolean(),
"--incompatible_no_target_output_group=" + rand.nextBoolean(),
@@ -209,7 +208,6 @@
.incompatibleNewActionsApi(rand.nextBoolean())
.incompatibleNoAttrLicense(rand.nextBoolean())
.incompatibleNoImplicitFileExport(rand.nextBoolean())
- .incompatibleNoOutputAttrDefault(rand.nextBoolean())
.incompatibleNoRuleOutputsParam(rand.nextBoolean())
.incompatibleNoSupportToolsInActionInputs(rand.nextBoolean())
.incompatibleNoTargetOutputGroup(rand.nextBoolean())
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
index 774f52e..367341f 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
@@ -1239,8 +1239,6 @@
@Test
public void testNoOutputAttrDefault() throws Exception {
- setSkylarkSemanticsOptions("--incompatible_no_output_attr_default=true");
-
scratch.file(
"test/extension.bzl",
"load('//myinfo:myinfo.bzl', 'MyInfo')",
@@ -1263,15 +1261,11 @@
reporter.removeHandler(failFastHandler);
getConfiguredTarget("//test:r");
- assertContainsEvent(
- "parameter 'default' is deprecated and will be removed soon. It may be "
- + "temporarily re-enabled by setting --incompatible_no_output_attr_default=false");
+ assertContainsEvent("got unexpected keyword argument 'default'");
}
@Test
public void testNoOutputListAttrDefault() throws Exception {
- setSkylarkSemanticsOptions("--incompatible_no_output_attr_default=true");
-
scratch.file(
"test/extension.bzl",
"def custom_rule_impl(ctx):",
@@ -1288,45 +1282,7 @@
reporter.removeHandler(failFastHandler);
getConfiguredTarget("//test:r");
- assertContainsEvent(
- "parameter 'default' is deprecated and will be removed soon. It may be "
- + "temporarily re-enabled by setting --incompatible_no_output_attr_default=false");
- }
-
- @Test
- public void testLegacyOutputAttrDefault() throws Exception {
- // Note that use of the "default" parameter of attr.output and attr.output_label is deprecated
- // and barely functional. This test simply serves as proof-of-concept verification that the
- // legacy behavior remains intact.
- setSkylarkSemanticsOptions("--incompatible_no_output_attr_default=false");
-
- scratch.file(
- "test/skylark/extension.bzl",
- "load('//myinfo:myinfo.bzl', 'MyInfo')",
- "def custom_rule_impl(ctx):",
- " out_file = ctx.actions.declare_file(ctx.attr._o1.name)",
- " ctx.actions.write(output=out_file, content='hi')",
- " return [MyInfo(o1=ctx.attr._o1,",
- " o2=ctx.attr.o2)]",
- "",
- "def output_fn():",
- " return Label('//test/skylark:foo.txt')",
- "",
- "custom_rule = rule(implementation = custom_rule_impl,",
- " attrs = {'_o1': attr.output(default = output_fn),",
- " 'o2': attr.output_list(default = [])})");
-
- scratch.file(
- "test/skylark/BUILD",
- "load('//test/skylark:extension.bzl', 'custom_rule')",
- "",
- "custom_rule(name = 'cr')");
-
- ConfiguredTarget target = getConfiguredTarget("//test/skylark:cr");
- StructImpl myInfo = getMyInfoFromTarget(target);
- assertThat(myInfo.getValue("o1"))
- .isEqualTo(Label.parseAbsoluteUnchecked("//test/skylark:foo.txt"));
- assertThat(myInfo.getValue("o2")).isEqualTo(StarlarkList.empty());
+ assertContainsEvent("got unexpected keyword argument 'default'");
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlag.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlag.java
index 13d6c91..27e3882 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlag.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnablingAndDisablingFlag.java
@@ -31,8 +31,8 @@
@Param(name = "one", type = String.class, named = true),
@Param(name = "two", type = Integer.class, named = true),
},
- enableOnlyWithFlag = FlagIdentifier.INCOMPATIBLE_NO_OUTPUT_ATTR_DEFAULT,
- disableWithFlag = FlagIdentifier.INCOMPATIBLE_NO_OUTPUT_ATTR_DEFAULT)
+ enableOnlyWithFlag = FlagIdentifier.INCOMPATIBLE_APPLICABLE_LICENSES,
+ disableWithFlag = FlagIdentifier.INCOMPATIBLE_APPLICABLE_LICENSES)
public String someMethod(String one, Integer two) {
return "foo";
}