Remove flag `--incompatible_strict_argument_ordering`.

RELNOTES: None.
PiperOrigin-RevId: 240453542
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 1a2c2e9..b534ba5 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
@@ -477,20 +477,6 @@
               + "will be available")
   public boolean incompatibleRemoveNativeMavenJar;
 
-  @Option(
-      name = "incompatible_strict_argument_ordering",
-      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, the order of arguments is stricter in function calls, see "
-              + "https://github.com/bazelbuild/bazel/issues/6611")
-  public boolean incompatibleStricArgumentOrdering;
-
   /** Used in an integration test to confirm that flags are visible to the interpreter. */
   @Option(
       name = "internal_skylark_flag_test_canary",
@@ -566,7 +552,6 @@
         .incompatibleNoTransitiveLoads(incompatibleNoTransitiveLoads)
         .incompatibleRemapMainRepo(incompatibleRemapMainRepo)
         .incompatibleRemoveNativeMavenJar(incompatibleRemoveNativeMavenJar)
-        .incompatibleStricArgumentOrdering(incompatibleStricArgumentOrdering)
         .incompatibleUseToolchainProvidersInJavaCommon(
             incompatibleUseToolchainProvidersInJavaCommon)
         .internalSkylarkFlagTestCanary(internalSkylarkFlagTestCanary)
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Argument.java b/src/main/java/com/google/devtools/build/lib/syntax/Argument.java
index 8854adf..f988fab 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Argument.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Argument.java
@@ -187,42 +187,6 @@
 
   /**
    * Validate that the list of Argument's, whether gathered by the Parser or from annotations,
-   * satisfies the requirements of the Python calling conventions: all Positional's first, at most
-   * one Star, at most one StarStar, at the end only.
-   *
-   * <p>TODO(laurentlb): remove this function and use only validateFuncallArguments.
-   */
-  public static void legacyValidateFuncallArguments(List<Passed> arguments)
-      throws ArgumentException {
-    boolean hasNamed = false;
-    boolean hasStar = false;
-    boolean hasKwArg = false;
-    for (Passed arg : arguments) {
-      if (hasKwArg) {
-        throw new ArgumentException(arg.getLocation(), "argument after **kwargs");
-      }
-      if (arg.isPositional()) {
-        if (hasNamed) {
-          throw new ArgumentException(arg.getLocation(), "non-keyword arg after keyword arg");
-        } else if (arg.isStar()) {
-          throw new ArgumentException(
-              arg.getLocation(), "only named arguments may follow *expression");
-        }
-      } else if (arg.isKeyword()) {
-        hasNamed = true;
-      } else if (arg.isStar()) {
-        if (hasStar) {
-          throw new ArgumentException(arg.getLocation(), "more than one *stararg");
-        }
-        hasStar = true;
-      } else {
-        hasKwArg = true;
-      }
-    }
-  }
-
-  /**
-   * Validate that the list of Argument's, whether gathered by the Parser or from annotations,
    * satisfies the requirements: first Positional arguments, then Keyword arguments, then an
    * optional *arg argument, finally an optional **kwarg argument.
    */
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
index 000c6de..81f34c3 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
@@ -543,7 +543,7 @@
   private ImmutableList<Argument.Passed> parseFuncallArguments() {
     ImmutableList<Argument.Passed> arguments = parseFunctionArguments(this::parseFuncallArgument);
     try {
-      Argument.legacyValidateFuncallArguments(arguments);
+      Argument.validateFuncallArguments(arguments);
     } catch (Argument.ArgumentException e) {
       reportError(e.getLocation(), e.getMessage());
     }
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 abddc4f..0039631 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
@@ -174,8 +174,6 @@
 
   public abstract boolean incompatibleRemoveNativeMavenJar();
 
-  public abstract boolean incompatibleStricArgumentOrdering();
-
   public abstract boolean internalSkylarkFlagTestCanary();
 
   public abstract boolean incompatibleUseToolchainProvidersInJavaCommon();
@@ -229,7 +227,6 @@
           .incompatibleNoTransitiveLoads(true)
           .incompatibleRemapMainRepo(false)
           .incompatibleRemoveNativeMavenJar(false)
-          .incompatibleStricArgumentOrdering(true)
           .internalSkylarkFlagTestCanary(false)
           .incompatibleDoNotSplitLinkingCmdline(false)
           .build();
@@ -301,8 +298,6 @@
 
     public abstract Builder incompatibleRemoveNativeMavenJar(boolean value);
 
-    public abstract Builder incompatibleStricArgumentOrdering(boolean value);
-
     public abstract Builder incompatibleUseToolchainProvidersInJavaCommon(boolean value);
 
     public abstract Builder internalSkylarkFlagTestCanary(boolean value);
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java b/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java
index e71670d..8c28293 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java
@@ -187,18 +187,6 @@
   }
 
   @Override
-  public void visit(FuncallExpression node) {
-    super.visit(node);
-    try {
-      if (env.getSemantics().incompatibleStricArgumentOrdering()) {
-        Argument.validateFuncallArguments(node.getArguments());
-      }
-    } catch (Argument.ArgumentException e) {
-      throw new ValidationException(e.getLocation(), e.getMessage());
-    }
-  }
-
-  @Override
   public void visit(ReturnStatement node) {
     if (block.scope != Scope.Local) {
       throw new ValidationException(
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 ff7874f..ebe9004 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
@@ -155,7 +155,6 @@
         "--incompatible_no_transitive_loads=" + rand.nextBoolean(),
         "--incompatible_remap_main_repo=" + rand.nextBoolean(),
         "--incompatible_remove_native_maven_jar=" + rand.nextBoolean(),
-        "--incompatible_strict_argument_ordering=" + rand.nextBoolean(),
         "--incompatible_use_toolchain_providers_in_java_common=" + rand.nextBoolean(),
         "--internal_skylark_flag_test_canary=" + rand.nextBoolean(),
         "--incompatible_do_not_split_linking_cmdline=" + rand.nextBoolean());
@@ -201,7 +200,6 @@
         .incompatibleNoTransitiveLoads(rand.nextBoolean())
         .incompatibleRemapMainRepo(rand.nextBoolean())
         .incompatibleRemoveNativeMavenJar(rand.nextBoolean())
-        .incompatibleStricArgumentOrdering(rand.nextBoolean())
         .incompatibleUseToolchainProvidersInJavaCommon(rand.nextBoolean())
         .internalSkylarkFlagTestCanary(rand.nextBoolean())
         .incompatibleDoNotSplitLinkingCmdline(rand.nextBoolean())
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ASTPrettyPrintTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ASTPrettyPrintTest.java
index 7310754..262e4e4 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ASTPrettyPrintTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ASTPrettyPrintTest.java
@@ -147,7 +147,7 @@
   public void funcallExpression() {
     assertExprBothRoundTrip("f()");
     assertExprBothRoundTrip("f(a)");
-    assertExprBothRoundTrip("f(a, b = B, *c, d = D, **e)");
+    assertExprBothRoundTrip("f(a, b = B, c = C, *d, **e)");
     assertExprBothRoundTrip("o.f()");
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
index 4e59cdd..d2c6e44 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
@@ -1495,7 +1495,7 @@
         "    *[2],",
         "    *[3],", // error on this line
         ")\n");
-    assertContainsError(":4:5: more than one *stararg");
+    assertContainsError(":4:5: *arg argument is misplaced");
   }
 
   @Test
@@ -1507,7 +1507,7 @@
         "    a = 4,",
         "    3,", // error on this line
         ")\n");
-    assertContainsError(":4:5: non-keyword arg after keyword arg");
+    assertContainsError(":4:5: positional argument is misplaced (positional arguments come first)");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java
index ea58193..ec47e1d 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java
@@ -241,7 +241,6 @@
 
   @Test
   public void testPositionalAfterStarArg() throws Exception {
-    env = newEnvironmentWithSkylarkOptions("--incompatible_strict_argument_ordering=true");
     checkError(
         "positional argument is misplaced (positional arguments come first)",
         "def fct(*args, **kwargs): pass",
@@ -250,7 +249,6 @@
 
   @Test
   public void testTwoStarArgs() throws Exception {
-    env = newEnvironmentWithSkylarkOptions("--incompatible_strict_argument_ordering=true");
     checkError(
         "*arg argument is misplaced",
         "def fct(*args, **kwargs):",
@@ -260,7 +258,6 @@
 
   @Test
   public void testKeywordArgAfterStarArg() throws Exception {
-    env = newEnvironmentWithSkylarkOptions("--incompatible_strict_argument_ordering=true");
     checkError(
         "keyword argument is misplaced (keyword arguments must be before any *arg or **kwarg)",
         "def fct(*args, **kwargs): pass",
diff --git a/src/test/starlark/testdata/string_format.sky b/src/test/starlark/testdata/string_format.sky
index 58c4288..8393482 100644
--- a/src/test/starlark/testdata/string_format.sky
+++ b/src/test/starlark/testdata/string_format.sky
@@ -74,9 +74,9 @@
 ---
 '{} and {}'.format('this') ### No replacement found for index 1
 ---
-'{test} and {}'.format(test = 1, 2) ### non-keyword arg after keyword arg
+'{test} and {}'.format(test = 1, 2) ### positional argument is misplaced (positional arguments come first)
 ---
-'{test} and {0}'.format(test = 1, 2) ### non-keyword arg after keyword arg
+'{test} and {0}'.format(test = 1, 2) ### positional argument is misplaced (positional arguments come first)
 ---
 '{} and {1}'.format(1, 2) ### Cannot mix manual and automatic numbering of positional fields
 ---