Use EmptyActionInput instead of null in SpawnInputExpander

This simplifies some spawn runners, which no longer have to specially handle
null; unfortunately, the sandbox runners do not support VirtualActionInput,
so they still have to special-case it.

PiperOrigin-RevId: 181175408
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java
index 58906fd..31f2dcd 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.sandbox;
 
+import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSet.Builder;
 import com.google.devtools.build.lib.actions.ActionExecutionContext;
@@ -22,6 +23,8 @@
 import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander;
 import com.google.devtools.build.lib.actions.Spawn;
 import com.google.devtools.build.lib.actions.Spawns;
+import com.google.devtools.build.lib.actions.cache.VirtualActionInput;
+import com.google.devtools.build.lib.actions.cache.VirtualActionInput.EmptyActionInput;
 import com.google.devtools.build.lib.analysis.test.TestConfiguration;
 import com.google.devtools.build.lib.exec.SpawnInputExpander;
 import com.google.devtools.build.lib.exec.SpawnRunner.SpawnExecutionPolicy;
@@ -97,8 +100,12 @@
 
     Map<PathFragment, Path> inputFiles = new TreeMap<>();
     for (Map.Entry<PathFragment, ActionInput> e : inputMap.entrySet()) {
+      if (e.getValue() instanceof VirtualActionInput) {
+        // TODO(ulfjack): Handle all virtual inputs, e.g., by writing them to a file.
+        Preconditions.checkState(e.getValue() instanceof EmptyActionInput);
+      }
       Path inputPath =
-          e.getValue() == SpawnInputExpander.EMPTY_FILE
+          e.getValue() instanceof EmptyActionInput
               ? null
               : execRoot.getRelative(e.getValue().getExecPath());
       inputFiles.put(e.getKey(), inputPath);