Create flag to turn down named-ness of certain Starlark params This change creates --experimental_restrict_named_params to make all builtin Starlark parameters which are named via legacyNamed = true to instead be treated as positional-only. This is a step on the path to cleaning up namedness of builtin Starlark parameters. When we finalize the list of parameters which should truly be positional-only, we can change this flag to be prefixed with --incompatible instead of --experimental, as per the incompatible change policies. Progress toward #5010. RELNOTES: None. PiperOrigin-RevId: 236898018
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 9ac3941..563c864 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
@@ -130,6 +130,7 @@ + "," + rand.nextDouble(), "--experimental_platforms_api=" + rand.nextBoolean(), + "--experimental_restrict_named_params=" + rand.nextBoolean(), "--experimental_starlark_config_transitions=" + rand.nextBoolean(), "--experimental_transition_whitelist_location=" + rand.nextDouble(), "--incompatible_bzl_disallow_load_after_statement=" + rand.nextBoolean(), @@ -177,6 +178,7 @@ .experimentalJavaCommonCreateProviderEnabledPackages( ImmutableList.of(String.valueOf(rand.nextDouble()), String.valueOf(rand.nextDouble()))) .experimentalPlatformsApi(rand.nextBoolean()) + .experimentalRestrictNamedParams(rand.nextBoolean()) .experimentalStarlarkConfigTransitions(rand.nextBoolean()) .experimentalTransitionWhitelistLocation(String.valueOf(rand.nextDouble())) .incompatibleBzlDisallowLoadAfterStatement(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 a7a74fc..af019ff 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
@@ -745,4 +745,13 @@ .testIfErrorContains("None", "fail(msg=None)") .testEval("type(None)", "'NoneType'"); } + + @Test + public void testExperimentalStarlarkConfig() throws Exception { + new SkylarkTest("--experimental_restrict_named_params") + .testIfErrorContains( + "parameter 'elements' may not be specified by name, " + + "for call to method join(elements) of 'string'", + "','.join(elements=['foo', 'bar'])"); + } }