Convert flag --experimental_restrict_named_params to --incompatible_restrict_named_params
This was always going to be an incompatible-style flag, but it was previously not fully implemented. Now it is.
Progress toward #8147 and #5010.
RELNOTES: Flag `--incompatible_restrict_named_params` is added. See https://github.com/bazelbuild/bazel/issues/8147 for details.
PiperOrigin-RevId: 245428103
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 9785c84..96236cb 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
@@ -140,19 +140,6 @@
+ "debugging.")
public boolean experimentalPlatformsApi;
- // TODO(cparsons): Change this flag to --incompatible instead of --experimental when it is
- // fully implemented.
- @Option(
- name = "experimental_restrict_named_params",
- defaultValue = "false",
- documentationCategory = OptionDocumentationCategory.STARLARK_SEMANTICS,
- effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
- metadataTags = {OptionMetadataTag.EXPERIMENTAL},
- help =
- "If set to true, restricts a number of Starlark built-in function parameters to be "
- + "only specifiable positionally (and not by keyword).")
- public boolean experimentalRestrictNamedParams;
-
// TODO(cparsons): Resolve and finalize the transition() API. The transition implementation
// function should accept two mandatory parameters, 'settings' and 'attr'.
@Option(
@@ -573,8 +560,6 @@
effectTags = {OptionEffectTag.UNKNOWN})
public boolean internalSkylarkFlagTestCanary;
-
-
@Option(
name = "incompatible_do_not_split_linking_cmdline",
defaultValue = "false",
@@ -606,6 +591,20 @@
+ "frameworks. See https://github.com/bazelbuild/bazel/issues/7944 for details.")
public boolean incompatibleObjcFrameworkCleanup;
+ @Option(
+ name = "incompatible_restrict_named_params",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.STARLARK_SEMANTICS,
+ effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
+ metadataTags = {
+ OptionMetadataTag.INCOMPATIBLE_CHANGE,
+ OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
+ },
+ help =
+ "If set to true, restricts a number of Starlark built-in function parameters to be "
+ + "only specifiable positionally (and not by keyword).")
+ public boolean incompatibleRestrictNamedParams;
+
/** Constructs a {@link StarlarkSemantics} object corresponding to this set of option values. */
public StarlarkSemantics toSkylarkSemantics() {
return StarlarkSemantics.builder()
@@ -619,7 +618,6 @@
.experimentalJavaCommonCreateProviderEnabledPackages(
experimentalJavaCommonCreateProviderEnabledPackages)
.experimentalPlatformsApi(experimentalPlatformsApi)
- .experimentalRestrictNamedParams(experimentalRestrictNamedParams)
.experimentalStarlarkConfigTransitions(experimentalStarlarkConfigTransitions)
.incompatibleBzlDisallowLoadAfterStatement(incompatibleBzlDisallowLoadAfterStatement)
.incompatibleDepsetIsNotIterable(incompatibleDepsetIsNotIterable)
@@ -651,6 +649,7 @@
.incompatibleObjcFrameworkCleanup(incompatibleObjcFrameworkCleanup)
.incompatibleRemapMainRepo(incompatibleRemapMainRepo)
.incompatibleRemoveNativeMavenJar(incompatibleRemoveNativeMavenJar)
+ .incompatibleRestrictNamedParams(incompatibleRestrictNamedParams)
.incompatibleStaticNameResolutionInBuildFiles(incompatibleStaticNameResolutionInBuildFiles)
.incompatibleStringJoinRequiresStrings(incompatibleStringJoinRequiresStrings)
.internalSkylarkFlagTestCanary(internalSkylarkFlagTestCanary)
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/ParamDescriptor.java b/src/main/java/com/google/devtools/build/lib/syntax/ParamDescriptor.java
index e44b45d..ca90184 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/ParamDescriptor.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/ParamDescriptor.java
@@ -117,7 +117,7 @@
if (param.named()) {
return true;
}
- return param.legacyNamed() && !starlarkSemantics.experimentalRestrictNamedParams();
+ return param.legacyNamed() && !starlarkSemantics.incompatibleRestrictNamedParams();
}
/** @see Param#name() */
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 66aa24f..6778ce9 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
@@ -132,8 +132,6 @@
public abstract boolean experimentalPlatformsApi();
- public abstract boolean experimentalRestrictNamedParams();
-
public abstract boolean experimentalStarlarkConfigTransitions();
public abstract boolean incompatibleBzlDisallowLoadAfterStatement();
@@ -192,6 +190,8 @@
public abstract boolean incompatibleRemoveNativeMavenJar();
+ public abstract boolean incompatibleRestrictNamedParams();
+
public abstract boolean incompatibleStringJoinRequiresStrings();
public abstract boolean incompatibleStaticNameResolutionInBuildFiles();
@@ -222,7 +222,6 @@
.experimentalGoogleLegacyApi(false)
.experimentalJavaCommonCreateProviderEnabledPackages(ImmutableList.of())
.experimentalPlatformsApi(false)
- .experimentalRestrictNamedParams(false)
.experimentalStarlarkConfigTransitions(false)
.incompatibleBzlDisallowLoadAfterStatement(true)
.incompatibleDepsetIsNotIterable(false)
@@ -252,6 +251,7 @@
.incompatibleObjcFrameworkCleanup(false)
.incompatibleRemapMainRepo(false)
.incompatibleRemoveNativeMavenJar(false)
+ .incompatibleRestrictNamedParams(false)
.incompatibleStaticNameResolutionInBuildFiles(false)
.incompatibleStringJoinRequiresStrings(false)
.internalSkylarkFlagTestCanary(false)
@@ -277,8 +277,6 @@
public abstract Builder experimentalPlatformsApi(boolean value);
- public abstract Builder experimentalRestrictNamedParams(boolean value);
-
public abstract Builder experimentalStarlarkConfigTransitions(boolean value);
public abstract Builder incompatibleBzlDisallowLoadAfterStatement(boolean value);
@@ -338,6 +336,8 @@
public abstract Builder incompatibleRemoveNativeMavenJar(boolean value);
+ public abstract Builder incompatibleRestrictNamedParams(boolean value);
+
public abstract Builder incompatibleStringJoinRequiresStrings(boolean value);
public abstract Builder incompatibleStaticNameResolutionInBuildFiles(boolean value);
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 7b5c18a..bc9fbb1 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
@@ -131,7 +131,6 @@
+ ","
+ rand.nextDouble(),
"--experimental_platforms_api=" + rand.nextBoolean(),
- "--experimental_restrict_named_params=" + rand.nextBoolean(),
"--experimental_starlark_config_transitions=" + rand.nextBoolean(),
"--incompatible_bzl_disallow_load_after_statement=" + rand.nextBoolean(),
"--incompatible_depset_is_not_iterable=" + rand.nextBoolean(),
@@ -161,6 +160,7 @@
"--incompatible_objc_framework_cleanup=" + rand.nextBoolean(),
"--incompatible_remap_main_repo=" + rand.nextBoolean(),
"--incompatible_remove_native_maven_jar=" + rand.nextBoolean(),
+ "--incompatible_restrict_named_params=" + rand.nextBoolean(),
"--incompatible_static_name_resolution_in_build_files=" + rand.nextBoolean(),
"--incompatible_string_join_requires_strings=" + rand.nextBoolean(),
"--internal_skylark_flag_test_canary=" + rand.nextBoolean(),
@@ -183,7 +183,6 @@
.experimentalJavaCommonCreateProviderEnabledPackages(
ImmutableList.of(String.valueOf(rand.nextDouble()), String.valueOf(rand.nextDouble())))
.experimentalPlatformsApi(rand.nextBoolean())
- .experimentalRestrictNamedParams(rand.nextBoolean())
.experimentalStarlarkConfigTransitions(rand.nextBoolean())
.incompatibleBzlDisallowLoadAfterStatement(rand.nextBoolean())
.incompatibleDepsetIsNotIterable(rand.nextBoolean())
@@ -213,6 +212,7 @@
.incompatibleObjcFrameworkCleanup(rand.nextBoolean())
.incompatibleRemapMainRepo(rand.nextBoolean())
.incompatibleRemoveNativeMavenJar(rand.nextBoolean())
+ .incompatibleRestrictNamedParams(rand.nextBoolean())
.incompatibleStaticNameResolutionInBuildFiles(rand.nextBoolean())
.incompatibleStringJoinRequiresStrings(rand.nextBoolean())
.internalSkylarkFlagTestCanary(rand.nextBoolean())
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java
index bf4cc44..7745179 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java
@@ -749,7 +749,7 @@
@Test
public void testExperimentalStarlarkConfig() throws Exception {
- new SkylarkTest("--experimental_restrict_named_params")
+ new SkylarkTest("--incompatible_restrict_named_params")
.testIfErrorContains(
"parameter 'elements' may not be specified by name, "
+ "for call to method join(elements) of 'string'",