Remove CppRuleClasses.LANGUAGE and LanguageDependentFragment and turn LibraryLanguage into an enum.

RELNOTES: None.
PiperOrigin-RevId: 219173902
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java b/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java
deleted file mode 100644
index 6dd8963..0000000
--- a/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2014 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.analysis;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import java.util.Objects;
-
-/**
- * Transitive info provider for rules that behave differently when used from
- * different languages.
- *
- * <p>Most rules generate code for a particular language or are totally language independent.
- * Some rules, however, behave differently when depended upon from different languages.
- * They might generate different libraries when used from different languages (and with
- * different API versions). This interface allows code sharing between implementations.
- *
- * <p>This provider is not really a roll-up of transitive information.
- */
-@Immutable
-@AutoCodec
-public final class LanguageDependentFragment implements TransitiveInfoProvider {
-  /**
-   * A language that can be supported by a multi-language configured target.
-   *
-   * <p>Note that no {@code hashCode}/{@code equals} methods are provided, because these
-   * objects are expected to be compared for object identity, which is the default.
-   */
-  @AutoCodec
-  public static final class LibraryLanguage {
-    private final String displayName;
-
-    @AutoCodec.Instantiator
-    public LibraryLanguage(String displayName) {
-      this.displayName = displayName;
-    }
-
-    @Override
-    public String toString() {
-      return displayName;
-    }
-
-    @Override
-    public boolean equals(Object other) {
-      if (!(other instanceof LibraryLanguage)) {
-        return false;
-      }
-      LibraryLanguage otherLanguage = (LibraryLanguage) other;
-      return Objects.equals(displayName, otherLanguage.displayName);
-    }
-
-    @Override
-    public int hashCode() {
-      return displayName.hashCode();
-    }
-  }
-
-  private final ImmutableSet<LibraryLanguage> languages;
-
-  @AutoCodec.Instantiator
-  public LanguageDependentFragment(ImmutableSet<LibraryLanguage> languages) {
-    this.languages = languages;
-  }
-
-  /**
-   * Returns a set of the languages the ConfiguredTarget generates output for.
-   * For use only by rules that directly depend on this library via a "deps" attribute.
-   */
-  public ImmutableSet<LibraryLanguage> getSupportedLanguages() {
-    return languages;
-  }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
index 67df1f6..d2b27f1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
@@ -29,7 +29,6 @@
 import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact;
 import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
 import com.google.devtools.build.lib.analysis.AnalysisUtils;
-import com.google.devtools.build.lib.analysis.LanguageDependentFragment;
 import com.google.devtools.build.lib.analysis.OutputGroupInfo;
 import com.google.devtools.build.lib.analysis.RuleContext;
 import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
@@ -713,9 +712,7 @@
   }
 
   /**
-   * Disables checking that the deps actually are C++ rules. By default, the {@link #compile} method
-   * uses {@link LanguageDependentFragment.Checker#depSupportsLanguage} to check that all deps
-   * provide C++ providers.
+   * Disables checking that the deps actually are C++ rules.
    */
   public CcCompilationHelper setCheckDepsGenerateCpp(boolean checkDepsGenerateCpp) {
     this.checkDepsGenerateCpp = checkDepsGenerateCpp;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
index 2010a2d..23a0e10 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
@@ -24,7 +24,6 @@
 import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
 import com.google.devtools.build.lib.analysis.AnalysisUtils;
 import com.google.devtools.build.lib.analysis.FileProvider;
-import com.google.devtools.build.lib.analysis.LanguageDependentFragment;
 import com.google.devtools.build.lib.analysis.RuleContext;
 import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -281,9 +280,7 @@
   }
 
   /**
-   * Disables checking that the deps actually are C++ rules. By default, the {@link #link} method
-   * uses {@link LanguageDependentFragment.Checker#depSupportsLanguage} to check that all deps
-   * provide C++ providers.
+   * Disables checking that the deps actually are C++ rules.
    */
   public CcLinkingHelper setCheckDepsGenerateCpp(boolean checkDepsGenerateCpp) {
     this.checkDepsGenerateCpp = checkDepsGenerateCpp;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
index 85bbd08..581ff5a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
@@ -32,7 +32,6 @@
 import static com.google.devtools.build.lib.rules.cpp.CppFileTypes.SHARED_LIBRARY;
 import static com.google.devtools.build.lib.rules.cpp.CppFileTypes.VERSIONED_SHARED_LIBRARY;
 
-import com.google.devtools.build.lib.analysis.LanguageDependentFragment.LibraryLanguage;
 import com.google.devtools.build.lib.analysis.RuleDefinition;
 import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
 import com.google.devtools.build.lib.analysis.config.HostTransition;
@@ -109,8 +108,6 @@
       .withSourceAttributes("srcs", "hdrs")
       .withDependencyAttributes("deps", "data");
 
-  public static final LibraryLanguage LANGUAGE = new LibraryLanguage("C++");
-
   /** Implicit outputs for cc_binary rules. */
   public static final SafeImplicitOutputsFunction CC_BINARY_STRIPPED =
       fromTemplates("%{name}.stripped" + OsUtils.executableExtension());