Automated rollback of commit 240af807c935225d98b630666000cc03934f2ce7.

PiperOrigin-RevId: 440825604
diff --git a/src/main/java/com/google/devtools/build/docgen/templates/be/functions.vm b/src/main/java/com/google/devtools/build/docgen/templates/be/functions.vm
index a8c6d3f..24d3188 100644
--- a/src/main/java/com/google/devtools/build/docgen/templates/be/functions.vm
+++ b/src/main/java/com/google/devtools/build/docgen/templates/be/functions.vm
@@ -616,8 +616,10 @@
   </li>
   <li>If multiple conditions match and one is a specialization of the others,
     the specialization takes precedence. Condition B is considered a
-    specialization of condition A if B has all the same flags and constraint
-    values as A plus some additional flags and constraint values.
+    specialization of condition A if B has all the same flags as A plus some
+    additional flags. However, the number of constraint values that A and B have
+    are not considered in this comparison -- one condition cannot match a
+    platform <i>more than</i> another condition does.
   </li>
   <li>If multiple conditions match and one is not a specialization of all the
     others, Bazel fails with an error.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java
index 2784da5..a70351e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java
@@ -50,15 +50,9 @@
       ImmutableMultimap<String, String> settingsMap,
       ImmutableMap<Label, String> flagSettingsMap,
       RequiredConfigFragmentsProvider requiredFragmentOptions,
-      ImmutableSet<Label> constraintValueSettings,
       boolean matches) {
     return new AutoValue_ConfigMatchingProvider(
-        label,
-        settingsMap,
-        flagSettingsMap,
-        requiredFragmentOptions,
-        constraintValueSettings,
-        matches);
+        label, settingsMap, flagSettingsMap, requiredFragmentOptions, matches);
   }
 
   /** The target's label. */
@@ -70,8 +64,6 @@
 
   public abstract RequiredConfigFragmentsProvider requiredFragmentOptions();
 
-  abstract ImmutableSet<Label> constraintValuesSetting();
-
   /**
    * Whether or not the configuration criteria defined by this target match its actual
    * configuration.
@@ -89,18 +81,11 @@
     ImmutableSet<Map.Entry<Label, String>> flagSettings = flagSettingsMap().entrySet();
     ImmutableSet<Map.Entry<Label, String>> otherFlagSettings = other.flagSettingsMap().entrySet();
 
-    ImmutableSet<Label> constraintValueSettings = constraintValuesSetting();
-    ImmutableSet<Label> otherConstraintValueSettings = other.constraintValuesSetting();
-
-    if (!settings.containsAll(otherSettings)
-        || !flagSettings.containsAll(otherFlagSettings)
-        || !constraintValueSettings.containsAll(otherConstraintValueSettings)) {
+    if (!settings.containsAll(otherSettings) || !flagSettings.containsAll(otherFlagSettings)) {
       return false; // Not a superset.
     }
 
-    return settings.size() > otherSettings.size()
-        || flagSettings.size() > otherFlagSettings.size()
-        || constraintValueSettings.size() > otherConstraintValueSettings.size();
+    return settings.size() > otherSettings.size() || flagSettings.size() > otherFlagSettings.size();
   }
 
   /** Format this provider as its label. */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java
index f7bb04f..f36231b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java
@@ -16,7 +16,6 @@
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.lib.analysis.RequiredConfigFragmentsProvider;
 import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
 import com.google.devtools.build.lib.cmdline.Label;
@@ -83,7 +82,6 @@
         // the owning target already depends on PlatformConfiguration. And we can't reference
         // PlatformConfiguration.class here without a build dependency cycle.
         RequiredConfigFragmentsProvider.EMPTY,
-        ImmutableSet.of(),
         platformInfo.constraints().hasConstraintValue(this));
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java
index 301429a..361bd27 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java
@@ -23,7 +23,6 @@
 import com.google.common.collect.ImmutableListMultimap;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
@@ -131,7 +130,6 @@
             ruleContext.shouldIncludeRequiredConfigFragmentsProvider()
                 ? ruleContext.getRequiredConfigFragments()
                 : RequiredConfigFragmentsProvider.EMPTY,
-            ImmutableSet.copyOf(constraintValueSettings),
             nativeFlagsMatch && userDefinedFlags.matches() && constraintValuesMatch);
 
     return new RuleConfiguredTargetBuilder(ruleContext)
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
index d01358d..19315ff 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
@@ -841,16 +841,13 @@
   }
 
   @Test
-  public void doesNotRefineSettingWithSameValuesAndSameFlagValuesAndSameConstraintValues()
-      throws Exception {
+  public void doesNotRefineSettingWithSameValuesAndSameFlagValues() throws Exception {
     useConfiguration(
         "--copt=-Dright",
         "--javacopt=-Dgood",
         "--enforce_transitive_configs_for_config_feature_flag");
     scratch.file(
         "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
         "config_setting(",
         "    name = 'refined',",
         "    flag_values = {",
@@ -861,9 +858,6 @@
         "        'copt': '-Dright',",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag', ':flag2'],",
         ")",
         "config_setting(",
@@ -876,9 +870,6 @@
         "        'copt': '-Dright',",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag', ':flag2'],",
         ")",
         "config_feature_flag(",
@@ -898,16 +889,13 @@
   }
 
   @Test
-  public void doesNotRefineSettingWithDifferentValuesAndSameFlagValuesAndSameConstraintValues()
-      throws Exception {
+  public void doesNotRefineSettingWithDifferentValuesAndSameFlagValues() throws Exception {
     useConfiguration(
         "--copt=-Dright",
         "--javacopt=-Dgood",
         "--enforce_transitive_configs_for_config_feature_flag");
     scratch.file(
         "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
         "config_setting(",
         "    name = 'refined',",
         "    flag_values = {",
@@ -917,9 +905,6 @@
         "    values = {",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag', ':flag2'],",
         ")",
         "config_setting(",
@@ -931,9 +916,6 @@
         "    values = {",
         "        'copt': '-Dright',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag', ':flag2'],",
         ")",
         "config_feature_flag(",
@@ -953,16 +935,13 @@
   }
 
   @Test
-  public void doesNotRefineSettingWithSameValuesAndSameConstraintValuesAndDifferentFlagValues()
-      throws Exception {
+  public void doesNotRefineSettingWithSameValuesAndDifferentFlagValues() throws Exception {
     useConfiguration(
         "--copt=-Dright",
         "--javacopt=-Dgood",
         "--enforce_transitive_configs_for_config_feature_flag");
     scratch.file(
         "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
         "config_setting(",
         "    name = 'refined',",
         "    flag_values = {",
@@ -972,9 +951,6 @@
         "        'copt': '-Dright',",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag'],",
         ")",
         "config_setting(",
@@ -986,9 +962,6 @@
         "        'copt': '-Dright',",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag2'],",
         ")",
         "config_feature_flag(",
@@ -1008,19 +981,13 @@
   }
 
   @Test
-  public void
-      doesNotRefineSettingWithDifferentValuesAndDifferentFlagValuesAndDifferentConstraintValues()
-          throws Exception {
+  public void doesNotRefineSettingWithDifferentValuesAndDifferentFlagValues() throws Exception {
     useConfiguration(
         "--copt=-Dright",
         "--javacopt=-Dgood",
         "--enforce_transitive_configs_for_config_feature_flag");
     scratch.file(
         "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
-        "constraint_setting(name = 'setting_b')",
-        "constraint_value(name = 'value_b', constraint_setting = 'setting_b')",
         "config_setting(",
         "    name = 'refined',",
         "    flag_values = {",
@@ -1029,9 +996,6 @@
         "    values = {",
         "        'copt': '-Dright',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag'],",
         ")",
         "config_setting(",
@@ -1042,9 +1006,6 @@
         "    values = {",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_b',",
-        "    ],",
         "    transitive_configs = [':flag2'],",
         ")",
         "config_feature_flag(",
@@ -1064,18 +1025,13 @@
   }
 
   @Test
-  public void doesNotRefineSettingWithDifferentValuesAndSubsetFlagValuesAndSubsetConstraintValues()
-      throws Exception {
+  public void doesNotRefineSettingWithDifferentValuesAndSubsetFlagValues() throws Exception {
     useConfiguration(
         "--copt=-Dright",
         "--javacopt=-Dgood",
         "--enforce_transitive_configs_for_config_feature_flag");
     scratch.file(
         "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
-        "constraint_setting(name = 'setting_b')",
-        "constraint_value(name = 'value_b', constraint_setting = 'setting_b')",
         "config_setting(",
         "    name = 'refined',",
         "    flag_values = {",
@@ -1085,10 +1041,6 @@
         "    values = {",
         "        'copt': '-Dright',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "        ':value_b',",
-        "    ],",
         "    transitive_configs = [':flag', ':flag2'],",
         ")",
         "config_setting(",
@@ -1099,9 +1051,6 @@
         "    values = {",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag'],",
         ")",
         "config_feature_flag(",
@@ -1121,76 +1070,13 @@
   }
 
   @Test
-  public void doesNotRefineSettingWithSubsetValuesAndSubsetFlagValuesAndDifferentConstraintValues()
-      throws Exception {
+  public void doesNotRefineSettingWithSubsetValuesAndDifferentFlagValues() throws Exception {
     useConfiguration(
         "--copt=-Dright",
         "--javacopt=-Dgood",
         "--enforce_transitive_configs_for_config_feature_flag");
     scratch.file(
         "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
-        "constraint_setting(name = 'setting_b')",
-        "constraint_value(name = 'value_b', constraint_setting = 'setting_b')",
-        "config_setting(",
-        "    name = 'refined',",
-        "    flag_values = {",
-        "        ':flag': 'right',",
-        "        ':flag2': 'good',",
-        "    },",
-        "    values = {",
-        "        'copt': '-Dright',",
-        "        'javacopt': '-Dgood',",
-        "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
-        "    transitive_configs = [':flag', ':flag2'],",
-        ")",
-        "config_setting(",
-        "    name = 'other',",
-        "    flag_values = {",
-        "        ':flag': 'right',",
-        "        ':flag2': 'good',",
-        "    },",
-        "    values = {",
-        "        'copt': '-Dright',",
-        "    },",
-        "    constraint_values = [",
-        "        ':value_b',",
-        "    ],",
-        "    transitive_configs = [':flag', ':flag2'],",
-        ")",
-        "config_feature_flag(",
-        "    name = 'flag',",
-        "    allowed_values = ['right', 'wrong'],",
-        "    default_value = 'right',",
-        ")",
-        "config_feature_flag(",
-        "    name = 'flag2',",
-        "    allowed_values = ['good', 'bad'],",
-        "    default_value = 'good',",
-        ")");
-    assertThat(
-            getConfigMatchingProvider("//test:refined")
-                .refines(getConfigMatchingProvider("//test:other")))
-        .isFalse();
-  }
-
-  @Test
-  public void doesNotRefineSettingWithSubsetValuesAndSubsetConstraintValuesAndDifferentFlagValues()
-      throws Exception {
-    useConfiguration(
-        "--copt=-Dright",
-        "--javacopt=-Dgood",
-        "--enforce_transitive_configs_for_config_feature_flag");
-    scratch.file(
-        "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
-        "constraint_setting(name = 'setting_b')",
-        "constraint_value(name = 'value_b', constraint_setting = 'setting_b')",
         "config_setting(",
         "    name = 'refined',",
         "    flag_values = {",
@@ -1200,10 +1086,6 @@
         "        'copt': '-Dright',",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "        ':value_b',",
-        "    ],",
         "    transitive_configs = [':flag'],",
         ")",
         "config_setting(",
@@ -1214,9 +1096,6 @@
         "    values = {",
         "        'copt': '-Dright',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag2'],",
         ")",
         "config_feature_flag(",
@@ -1236,18 +1115,13 @@
   }
 
   @Test
-  public void refinesSettingWithSubsetValuesAndSubsetConstraintValuesAndSameFlagValues()
-      throws Exception {
+  public void refinesSettingWithSubsetValuesAndSameFlagValues() throws Exception {
     useConfiguration(
         "--copt=-Dright",
         "--javacopt=-Dgood",
         "--enforce_transitive_configs_for_config_feature_flag");
     scratch.file(
         "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
-        "constraint_setting(name = 'setting_b')",
-        "constraint_value(name = 'value_b', constraint_setting = 'setting_b')",
         "config_setting(",
         "    name = 'refined',",
         "    flag_values = {",
@@ -1258,10 +1132,6 @@
         "        'copt': '-Dright',",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "        ':value_b',",
-        "    ],",
         "    transitive_configs = [':flag', ':flag2'],",
         ")",
         "config_setting(",
@@ -1273,9 +1143,6 @@
         "    values = {",
         "        'copt': '-Dright',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_b',",
-        "    ],",
         "    transitive_configs = [':flag', ':flag2'],",
         ")",
         "config_feature_flag(",
@@ -1295,18 +1162,13 @@
   }
 
   @Test
-  public void refinesSettingWithSameValuesAndSubsetFlagValuesAndSubsetConstraintValues()
-      throws Exception {
+  public void refinesSettingWithSameValuesAndSubsetFlagValues() throws Exception {
     useConfiguration(
         "--copt=-Dright",
         "--javacopt=-Dgood",
         "--enforce_transitive_configs_for_config_feature_flag");
     scratch.file(
         "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
-        "constraint_setting(name = 'setting_b')",
-        "constraint_value(name = 'value_b', constraint_setting = 'setting_b')",
         "config_setting(",
         "    name = 'refined',",
         "    flag_values = {",
@@ -1317,10 +1179,6 @@
         "        'copt': '-Dright',",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "        ':value_b',",
-        "    ],",
         "    transitive_configs = [':flag', ':flag2'],",
         ")",
         "config_setting(",
@@ -1332,9 +1190,6 @@
         "        'copt': '-Dright',",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag'],",
         ")",
         "config_feature_flag(",
@@ -1354,18 +1209,13 @@
   }
 
   @Test
-  public void refinesSettingWithSubsetValuesAndSubsetFlagValuesAndConstraintValues()
-      throws Exception {
+  public void refinesSettingWithSubsetValuesAndSubsetFlagValues() throws Exception {
     useConfiguration(
         "--copt=-Dright",
         "--javacopt=-Dgood",
         "--enforce_transitive_configs_for_config_feature_flag");
     scratch.file(
         "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
-        "constraint_setting(name = 'setting_b')",
-        "constraint_value(name = 'value_b', constraint_setting = 'setting_b')",
         "config_setting(",
         "    name = 'refined',",
         "    flag_values = {",
@@ -1376,10 +1226,6 @@
         "        'copt': '-Dright',",
         "        'javacopt': '-Dgood',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "        ':value_b',",
-        "    ],",
         "    transitive_configs = [':flag', ':flag2'],",
         ")",
         "config_setting(",
@@ -1390,9 +1236,6 @@
         "    values = {",
         "        'copt': '-Dright',",
         "    },",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "    ],",
         "    transitive_configs = [':flag'],",
         ")",
         "config_feature_flag(",
@@ -1412,53 +1255,6 @@
   }
 
   @Test
-  public void refinesSettingWithSubsetConstraintValues() throws Exception {
-    scratch.file(
-        "test/BUILD",
-        "constraint_setting(name = 'setting_a')",
-        "constraint_value(name = 'value_a', constraint_setting = 'setting_a')",
-        "constraint_setting(name = 'setting_b')",
-        "constraint_value(name = 'value_b', constraint_setting = 'setting_b')",
-        "constraint_setting(name = 'setting_c')",
-        "constraint_value(name = 'value_c', constraint_setting = 'setting_c')",
-        "platform(",
-        "    name = 'refined_platform',",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "        ':value_b',",
-        "        ':value_c',",
-        "    ],",
-        ")",
-        "platform(",
-        "    name = 'other_platform',",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "        ':value_b',",
-        "    ],",
-        ")",
-        "config_setting(",
-        "    name = 'refined',",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "        ':value_b',",
-        "        ':value_c',",
-        "    ],",
-        ")",
-        "config_setting(",
-        "    name = 'other',",
-        "    constraint_values = [",
-        "        ':value_a',",
-        "        ':value_b',",
-        "    ],",
-        ");");
-    useConfiguration("--platforms=//test:refined_platform");
-    assertThat(
-            getConfigMatchingProvider("//test:refined")
-                .refines(getConfigMatchingProvider("//test:other")))
-        .isTrue();
-  }
-
-  @Test
   public void matchesAliasedFlagsInFlagValues() throws Exception {
     useConfiguration("--enforce_transitive_configs_for_config_feature_flag");
     scratch.file(