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);