Type strip Python sources when building a target incompatible with inline
annotations.

--
PiperOrigin-RevId: 150088575
MOS_MIGRATED_REVID=150088575
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
index 8f171a3..c1965f3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
@@ -638,8 +638,8 @@
    * Returns if there are no runfiles.
    */
   public boolean isEmpty() {
-    return unconditionalArtifacts.isEmpty() && symlinks.isEmpty() && rootSymlinks.isEmpty() &&
-        pruningManifests.isEmpty();
+    return unconditionalArtifacts.isEmpty() && symlinks.isEmpty() && rootSymlinks.isEmpty()
+        && pruningManifests.isEmpty();
   }
 
   /**
@@ -1047,7 +1047,15 @@
      * Add the other {@link Runfiles} object transitively.
      */
     public Builder merge(Runfiles runfiles) {
-      return merge(runfiles, true);
+      return merge(runfiles, true, true);
+    }
+
+    /**
+     * Add the other {@link Runfiles} object transitively, but don't merge
+     * unconditional artifacts.
+     */
+    public Builder mergeExceptUnconditionalArtifacts(Runfiles runfiles) {
+      return merge(runfiles, false, true);
     }
 
     /**
@@ -1055,14 +1063,15 @@
      * pruning manifests.
      */
     public Builder mergeExceptPruningManifests(Runfiles runfiles) {
-      return merge(runfiles, false);
+      return merge(runfiles, true, false);
     }
 
     /**
      * Add the other {@link Runfiles} object transitively, with the option to include or exclude
      * pruning manifests in the merge.
      */
-    private Builder merge(Runfiles runfiles, boolean includePruningManifests) {
+    private Builder merge(Runfiles runfiles, boolean includeUnconditionalArtifacts,
+        boolean includePruningManifests) {
       // Propagate the most strict conflict checking from merged-in runfiles
       if (runfiles.conflictPolicy.compareTo(conflictPolicy) > 0) {
         conflictPolicy = runfiles.conflictPolicy;
@@ -1073,7 +1082,9 @@
       // The suffix should be the same within any blaze build, except for the EMPTY runfiles, which
       // may have an empty suffix, but that is covered above.
       Preconditions.checkArgument(suffix.equals(runfiles.suffix));
-      artifactsBuilder.addTransitive(runfiles.getUnconditionalArtifacts());
+      if (includeUnconditionalArtifacts) {
+        artifactsBuilder.addTransitive(runfiles.getUnconditionalArtifacts());
+      }
       symlinksBuilder.addTransitive(runfiles.getSymlinks());
       rootSymlinksBuilder.addTransitive(runfiles.getRootSymlinks());
       if (includePruningManifests) {