Remove FilesToRunProvider.label.

The TransitiveInfoProvider already contains a label, use that instead.

--
MOS_MIGRATED_REVID=120443298
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java
index 06e2c39..d7dc1d3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java
@@ -46,8 +46,7 @@
         .put(VisibilityProvider.class, this)
         .put(LicensesProvider.class, this)
         .put(FileProvider.class, new FileProvider(targetContext.getLabel(), filesToBuild))
-        .put(FilesToRunProvider.class, FilesToRunProvider.fromSingleArtifact(
-            targetContext.getLabel(), artifact));
+        .put(FilesToRunProvider.class, FilesToRunProvider.fromSingleExecutableArtifact(artifact));
     if (this instanceof FilesetProvider) {
       builder.put(FilesetProvider.class, this);
     }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
index 2dab4b3..35c0b9a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
@@ -18,7 +18,6 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.EmptyRunfilesSupplier;
 import com.google.devtools.build.lib.actions.RunfilesSupplier;
-import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -34,14 +33,15 @@
   /** The name of the field in Skylark used to access this class. */
   public static final String SKYLARK_NAME = "files_to_run";
 
-  private final Label label;
+  public static final FilesToRunProvider EMPTY =
+      new FilesToRunProvider(ImmutableList.<Artifact>of(), null, null);
+
   private final ImmutableList<Artifact> filesToRun;
   @Nullable private final RunfilesSupport runfilesSupport;
   @Nullable private final Artifact executable;
 
-  public FilesToRunProvider(Label label, ImmutableList<Artifact> filesToRun,
+  public FilesToRunProvider(ImmutableList<Artifact> filesToRun,
       @Nullable RunfilesSupport runfilesSupport, @Nullable Artifact executable) {
-    this.label = label;
     this.filesToRun = filesToRun;
     this.runfilesSupport = runfilesSupport;
     this.executable  = executable;
@@ -50,17 +50,8 @@
   /**
    * Creates an instance that contains one single executable and no other files.
    */
-  public static FilesToRunProvider fromSingleArtifact(Label label, Artifact artifact) {
-    return new FilesToRunProvider(label, ImmutableList.of(artifact), null, artifact);
-  }
-
-  /**
-   * Returns the label that is associated with this piece of information.
-   *
-   * <p>This is usually the label of the target that provides the information.
-   */
-  public Label getLabel() {
-    return label;
+  public static FilesToRunProvider fromSingleExecutableArtifact(Artifact artifact) {
+    return new FilesToRunProvider(ImmutableList.of(artifact), null, artifact);
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java b/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java
index d6c186b..d2b7e18 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java
@@ -114,7 +114,7 @@
     this.options = ImmutableSet.copyOf(options);
   }
 
-  public Map<Label, Collection<Artifact>> getLocationMap() {
+  private Map<Label, Collection<Artifact>> getLocationMap() {
     if (locationMap == null) {
       locationMap = buildLocationMap(ruleContext, labelMap, options.contains(Options.ALLOW_DATA));
     }
@@ -288,30 +288,31 @@
     }
 
     // Add all locations associated with dependencies and tools
-    List<FilesToRunProvider> depsDataAndTools = new ArrayList<>();
+    List<TransitiveInfoCollection> depsDataAndTools = new ArrayList<>();
     if (ruleContext.getRule().isAttrDefined("deps", BuildType.LABEL_LIST)) {
       Iterables.addAll(depsDataAndTools,
-          ruleContext.getPrerequisites("deps", Mode.DONT_CHECK, FilesToRunProvider.class));
+          ruleContext.getPrerequisitesIf("deps", Mode.DONT_CHECK, FilesToRunProvider.class));
     }
     if (allowDataAttributeEntriesInLabel
         && ruleContext.getRule().isAttrDefined("data", BuildType.LABEL_LIST)) {
       Iterables.addAll(depsDataAndTools,
-          ruleContext.getPrerequisites("data", Mode.DATA, FilesToRunProvider.class));
+          ruleContext.getPrerequisitesIf("data", Mode.DATA, FilesToRunProvider.class));
     }
     if (ruleContext.getRule().isAttrDefined("tools", BuildType.LABEL_LIST)) {
       Iterables.addAll(depsDataAndTools,
-          ruleContext.getPrerequisites("tools", Mode.HOST, FilesToRunProvider.class));
+          ruleContext.getPrerequisitesIf("tools", Mode.HOST, FilesToRunProvider.class));
     }
 
-    for (FilesToRunProvider dep : depsDataAndTools) {
+    for (TransitiveInfoCollection dep : depsDataAndTools) {
       Label label = dep.getLabel();
-      Artifact executableArtifact = dep.getExecutable();
+      FilesToRunProvider filesToRun = dep.getProvider(FilesToRunProvider.class);
+      Artifact executableArtifact = filesToRun.getExecutable();
 
       // If the label has an executable artifact add that to the multimaps.
       if (executableArtifact != null) {
         mapGet(locationMap, label).add(executableArtifact);
       } else {
-        mapGet(locationMap, label).addAll(dep.getFilesToRun());
+        mapGet(locationMap, label).addAll(filesToRun.getFilesToRun());
       }
     }
     return locationMap;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
index abca5ad..dbf281c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
@@ -81,7 +81,7 @@
       return null;
     }
 
-    FilesToRunProvider filesToRunProvider = new FilesToRunProvider(ruleContext.getLabel(),
+    FilesToRunProvider filesToRunProvider = new FilesToRunProvider(
         getFilesToRun(runfilesSupport, filesToBuild), runfilesSupport, executable);
     add(FileProvider.class, new FileProvider(ruleContext.getLabel(), filesToBuild));
     add(FilesToRunProvider.class, filesToRunProvider);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigSetting.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigSetting.java
index c9a7acb..87770e7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigSetting.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigSetting.java
@@ -14,7 +14,6 @@
 
 package com.google.devtools.build.lib.analysis.config;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.devtools.build.lib.actions.Artifact;
@@ -72,8 +71,7 @@
         .add(RunfilesProvider.class, RunfilesProvider.EMPTY)
         .add(FileProvider.class, new FileProvider(ruleContext.getLabel(),
             NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER)))
-        .add(FilesToRunProvider.class, new FilesToRunProvider(ruleContext.getLabel(),
-            ImmutableList.<Artifact>of(), null, null))
+        .add(FilesToRunProvider.class, FilesToRunProvider.EMPTY)
         .add(ConfigMatchingProvider.class, configMatcher)
         .build();
   }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java b/src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java
index 22def20..84d4186 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/constraints/Environment.java
@@ -14,7 +14,6 @@
 
 package com.google.devtools.build.lib.analysis.constraints;
 
-import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.FileProvider;
@@ -55,8 +54,7 @@
         .addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY)
         .add(FileProvider.class, new FileProvider(ruleContext.getLabel(),
             NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER)))
-        .add(FilesToRunProvider.class, new FilesToRunProvider(ruleContext.getLabel(),
-            ImmutableList.<Artifact>of(), null, null))
+        .add(FilesToRunProvider.class, FilesToRunProvider.EMPTY)
         .build();
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java
index 4ce4cfc..5158730 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java
@@ -73,7 +73,7 @@
       // TODO(bazel-team): When using getFilesToRun(), the middleman is
       // not expanded. Fix by providing code to expand and use getFilesToRun here.
       RunfilesSupport aaptRunnerRunfiles = toolRunner.getRunfilesSupport();
-      Preconditions.checkState(aaptRunnerRunfiles != null, toolRunner.getLabel());
+      Preconditions.checkState(aaptRunnerRunfiles != null);
       // Note the below may be an overapproximation of the actual runfiles, due to "conditional
       // artifacts" (see Runfiles.PruningManifest).
       Iterables.addAll(inputs, aaptRunnerRunfiles.getRunfilesArtifactsWithoutMiddlemen());