Migrate CcToolchainAlias to use base class CommonAliasRule

RELNOTES:none
PiperOrigin-RevId: 195070361
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java
index 787e1ee..e971dea 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java
@@ -25,7 +25,7 @@
 import com.google.devtools.build.lib.rules.core.CoreRules;
 import com.google.devtools.build.lib.rules.cpp.CcImportRule;
 import com.google.devtools.build.lib.rules.cpp.CcModule;
-import com.google.devtools.build.lib.rules.cpp.CcToolchainAlias.CcToolchainAliasRule;
+import com.google.devtools.build.lib.rules.cpp.CcToolchainAliasRule;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainRule;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainSuiteRule;
 import com.google.devtools.build.lib.rules.cpp.CppBuildInfo;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainAlias.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainAlias.java
deleted file mode 100644
index 57837f6..0000000
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainAlias.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2017 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.rules.cpp;
-
-import static com.google.devtools.build.lib.packages.Attribute.attr;
-import static com.google.devtools.build.lib.packages.BuildType.LABEL;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
-import com.google.devtools.build.lib.analysis.AliasProvider;
-import com.google.devtools.build.lib.analysis.BaseRuleClasses;
-import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
-import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.RuleDefinition;
-import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.analysis.VisibilityProvider;
-import com.google.devtools.build.lib.analysis.VisibilityProviderImpl;
-import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
-import com.google.devtools.build.lib.packages.RuleClass;
-import com.google.devtools.build.lib.rules.AliasConfiguredTarget;
-
-/**
- * Implementation of the {@code cc_toolchain_alias} rule.
- */
-public class CcToolchainAlias implements RuleConfiguredTargetFactory {
-
-  @Override
-  public ConfiguredTarget create(RuleContext ruleContext)
-      throws InterruptedException, RuleErrorException, ActionConflictException {
-    ConfiguredTarget actual =
-        (ConfiguredTarget) ruleContext.getPrerequisite(":cc_toolchain", Mode.TARGET);
-    return new AliasConfiguredTarget(
-        ruleContext,
-        actual,
-        ImmutableMap.of(
-            AliasProvider.class,
-            AliasProvider.fromAliasRule(ruleContext.getLabel(), actual),
-            VisibilityProvider.class,
-            new VisibilityProviderImpl(ruleContext.getVisibility())));
-  }
-
-  /**
-   * Rule definition for the {@code cc_runtime_alias} rule.
-   */
-  public static class CcToolchainAliasRule implements RuleDefinition {
-
-    @Override
-    public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment environment) {
-      return builder
-          .requiresConfigurationFragments(CppConfiguration.class)
-          .removeAttribute("licenses")
-          .removeAttribute("distribs")
-          .add(attr(":cc_toolchain", LABEL).value(CppRuleClasses.ccToolchainAttribute(environment)))
-          .build();
-    }
-
-    @Override
-    public Metadata getMetadata() {
-      return Metadata.builder()
-          .name("cc_toolchain_alias")
-          .ancestors(BaseRuleClasses.BaseRule.class)
-          .factoryClass(CcToolchainAlias.class)
-          .build();
-    }
-  }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainAliasRule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainAliasRule.java
new file mode 100644
index 0000000..d3cd005
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainAliasRule.java
@@ -0,0 +1,26 @@
+// Copyright 2017 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.rules.cpp;
+
+import com.google.devtools.build.lib.rules.LateBoundAlias.CommonAliasRule;
+
+/**
+ * Implementation of the {@code cc_toolchain_alias} rule.
+ */
+public class CcToolchainAliasRule extends CommonAliasRule {
+  public CcToolchainAliasRule() {
+    super("cc_toolchain_alias", CppRuleClasses::ccToolchainAttribute, CppConfiguration.class);
+  }
+}