Stop supporting old API for starlark defined transition impl function. Impl functions now must always take two params, canonically `settings` and `attr`.

PiperOrigin-RevId: 234155945
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java
index 44b4f96..c613acd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java
@@ -190,17 +190,7 @@
       try {
         result = evalFunction(impl, ImmutableList.of(previousSettings, attributeMapper));
       } catch (EvalException e) {
-        // TODO(b/121134880): Still support the one-param syntax since we have users using that.
-        // Deprecate when this API will stop changing.
-        if (e.getMessage().contains("too many (2) positional arguments in call to")) {
-          try {
-            result = evalFunction(impl, ImmutableList.of(previousSettings));
-          } catch (EvalException e2) {
-            throw new EvalException(impl.getLocation(), e2.getMessage());
-          }
-        } else {
-          throw new EvalException(impl.getLocation(), e.getMessage());
-        }
+        throw new EvalException(impl.getLocation(), e.getMessage());
       }
 
       if (!(result instanceof SkylarkDict<?, ?>)) {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
index c7e8b25..5707c85 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java
@@ -51,7 +51,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  return {",
         "      't0': {'//command_line_option:cpu': 'k8'},",
         "      't1': {'//command_line_option:cpu': 'armeabi-v7a'},",
@@ -206,7 +206,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  transitions = {}",
         "  for cpu in settings['//command_line_option:fat_apk_cpu']:",
         "    transitions[cpu] = {",
@@ -261,7 +261,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  return {",
         "    '//command_line_option:cpu': 'armeabi-v7a',",
         "    '//command_line_option:dynamic_mode': 'off',",
@@ -310,7 +310,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  return {'//command_line_option:cpu': 'k8'}",
         "my_transition = transition(implementation = transition_func, inputs = [], outputs = [])",
         "def impl(ctx): ",
@@ -343,7 +343,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  return {'//command_line_option:cpu': 'k8'}",
         "my_transition = transition(implementation = transition_func,",
         "  inputs = [],",
@@ -380,7 +380,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  if (len(settings) != 2",
         "      or (not settings['//command_line_option:experimental_strict_java_deps'])",
         "      or (not settings['//command_line_option:cpu'])):",
@@ -417,7 +417,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  return {'//command_line_option:cpu': 'k8'}",
         "my_transition = transition(implementation = transition_func,",
         "  inputs = ['cpu'], outputs = ['//command_line_option:cpu'])",
@@ -452,7 +452,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  return {'//command_line_option:cpu': 'k8'}",
         "my_transition = transition(implementation = transition_func,",
         "  inputs = ['//command_line_option:foo', '//command_line_option:bar'],",
@@ -488,7 +488,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  return {'//command_line_option:foobarbaz': 'k8'}",
         "my_transition = transition(implementation = transition_func,",
         "  inputs = ['//command_line_option:cpu'], outputs = ['//command_line_option:foobarbaz'])",
@@ -523,7 +523,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  return {'cpu': 'k8'}",
         "my_transition = transition(implementation = transition_func,",
         "  inputs = [], outputs = ['cpu'])",
@@ -558,7 +558,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  return {'//command_line_option:cpu': 1}",
         "my_transition = transition(implementation = transition_func,",
         "  inputs = [], outputs = ['//command_line_option:cpu'])",
@@ -591,7 +591,7 @@
 
     scratch.file(
         "test/skylark/my_rule.bzl",
-        "def transition_func(settings):",
+        "def transition_func(settings, attr):",
         "  return {'//command_line_option:cpu': 1}",
         "my_transition = transition(implementation = transition_func,",
         "  inputs = [],",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java
index d9e48b3..dec9ebf 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java
@@ -392,4 +392,26 @@
     assertContainsEvent(
         "transition inputs [//test:cute-animal-fact] do not correspond to valid settings");
     }
+
+  @Test
+  public void testOneParamTransitionFunctionApiFails() throws Exception {
+    setSkylarkSemanticsOptions("--experimental_starlark_config_transitions=true");
+    scratch.file(
+        "test/transitions.bzl",
+        "def _impl(settings):",
+        "  return {'//command_line_option:test_arg': ['post-transition']}",
+        "my_transition = transition(implementation = _impl, inputs = [],",
+        "  outputs = ['//command_line_option:test_arg'])");
+    scratch.file(
+        "test/rules.bzl",
+        "load('//test:transitions.bzl', 'my_transition')",
+        "def _impl(ctx):",
+        "  return []",
+        "my_rule = rule(implementation = _impl, cfg = my_transition)");
+    scratch.file("test/BUILD", "load('//test:rules.bzl', 'my_rule')", "my_rule(name = 'test')");
+
+    reporter.removeHandler(failFastHandler);
+    getConfiguredTarget("//test");
+    assertContainsEvent("too many (2) positional arguments in call to _impl(settings)");
+  }
 }