Split CppIncludeScanningContext out of CppCompileActionContext

Rename IncludeScanningContext to CppIncludeExtractionContext, which more closely matches its semantics.

PiperOrigin-RevId: 184974810
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelActionContextConsumer.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelActionContextConsumer.java
index 9bf4f63..9b3e370 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelActionContextConsumer.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelActionContextConsumer.java
@@ -24,7 +24,8 @@
 import com.google.devtools.build.lib.exec.SpawnCache;
 import com.google.devtools.build.lib.rules.android.WriteAdbArgsActionContext;
 import com.google.devtools.build.lib.rules.cpp.CppCompileActionContext;
-import com.google.devtools.build.lib.rules.cpp.IncludeScanningContext;
+import com.google.devtools.build.lib.rules.cpp.CppIncludeExtractionContext;
+import com.google.devtools.build.lib.rules.cpp.CppIncludeScanningContext;
 import java.util.Map;
 import java.util.TreeMap;
 
@@ -73,7 +74,8 @@
   public Multimap<Class<? extends ActionContext>, String> getActionContexts() {
     return ImmutableMultimap.<Class<? extends ActionContext>, String>builder()
         .put(CppCompileActionContext.class, "")
-        .put(IncludeScanningContext.class, "")
+        .put(CppIncludeExtractionContext.class, "")
+        .put(CppIncludeScanningContext.class, "")
         .put(FileWriteActionContext.class, "")
         .put(WriteAdbArgsActionContext.class, "")
         .put(SpawnCache.class, "")
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index c2804a7..15cf6a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -426,7 +426,7 @@
     try {
       initialResult =
           actionExecutionContext
-              .getContext(CppCompileActionContext.class)
+              .getContext(CppIncludeScanningContext.class)
               .findAdditionalInputs(
                   this, actionExecutionContext, cppSemantics.getIncludeProcessing());
     } catch (ExecException e) {
@@ -1120,8 +1120,8 @@
     ensureCoverageNotesFilesExist();
 
     // This is the .d file scanning part.
-    IncludeScanningContext scanningContext =
-        actionExecutionContext.getContext(IncludeScanningContext.class);
+    CppIncludeExtractionContext scanningContext =
+        actionExecutionContext.getContext(CppIncludeExtractionContext.class);
     Path execRoot = actionExecutionContext.getExecRoot();
 
     NestedSet<Artifact> discoveredInputs;
@@ -1271,7 +1271,7 @@
       throws ActionExecutionException, InterruptedException {
     Iterable<Artifact> scannedIncludes;
     try {
-      scannedIncludes = actionExecutionContext.getContext(CppCompileActionContext.class)
+      scannedIncludes = actionExecutionContext.getContext(CppIncludeScanningContext.class)
           .findAdditionalInputs(this, actionExecutionContext,  cppSemantics.getIncludeProcessing());
     } catch (ExecException e) {
       throw e.toActionExecutionException(this);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java
index 5e890d6..804caf1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java
@@ -16,11 +16,8 @@
 import com.google.devtools.build.lib.actions.ActionContext;
 import com.google.devtools.build.lib.actions.ActionContextMarker;
 import com.google.devtools.build.lib.actions.ActionExecutionContext;
-import com.google.devtools.build.lib.actions.ActionExecutionException;
-import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.ExecException;
 import java.io.IOException;
-import javax.annotation.Nullable;
 
 /**
  * Context for compiling plain C++.
@@ -38,18 +35,6 @@
   }
 
   /**
-   * Does include scanning to find the list of files needed to execute the action.
-   *
-   * <p>Returns null if additional inputs will only be found during action execution, not before.
-   */
-  @Nullable
-  Iterable<Artifact> findAdditionalInputs(
-      CppCompileAction action,
-      ActionExecutionContext actionExecutionContext,
-      IncludeProcessing includeProcessing)
-      throws ExecException, InterruptedException, ActionExecutionException;
-
-  /**
    * Executes the given action and return the reply of the executor.
    *
    * @return a CppCompileActionResult with information resulting from the action's execution
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanningContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeExtractionContext.java
similarity index 95%
rename from src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanningContext.java
rename to src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeExtractionContext.java
index 1305960..8b4b638 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanningContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeExtractionContext.java
@@ -24,7 +24,7 @@
 /**
  * Context for actions that do include scanning.
  */
-public interface IncludeScanningContext extends ActionContext {
+public interface CppIncludeExtractionContext extends ActionContext {
   /**
    * Extracts the set of include files from a source file.
    *
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeScanningContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeScanningContext.java
new file mode 100644
index 0000000..c67f0f8
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppIncludeScanningContext.java
@@ -0,0 +1,40 @@
+// Copyright 2018 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.actions.ActionContext;
+import com.google.devtools.build.lib.actions.ActionContextMarker;
+import com.google.devtools.build.lib.actions.ActionExecutionContext;
+import com.google.devtools.build.lib.actions.ActionExecutionException;
+import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.ExecException;
+import javax.annotation.Nullable;
+
+/**
+ * Context for include scanning.
+ */
+@ActionContextMarker(name = "IncludeScanning")
+public interface CppIncludeScanningContext extends ActionContext {
+  /**
+   * Does include scanning to find the list of files needed to execute the action.
+   *
+   * <p>Returns null if additional inputs will only be found during action execution, not before.
+   */
+  @Nullable
+  Iterable<Artifact> findAdditionalInputs(
+      CppCompileAction action,
+      ActionExecutionContext actionExecutionContext,
+      IncludeProcessing includeProcessing)
+      throws ExecException, InterruptedException, ActionExecutionException;
+}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
index c76ef3d..aa69b13 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java
@@ -68,8 +68,8 @@
   @Override
   public ActionResult execute(ActionExecutionContext actionExecutionContext)
       throws ActionExecutionException, InterruptedException {
-    IncludeScanningContext context =
-        actionExecutionContext.getContext(IncludeScanningContext.class);
+    CppIncludeExtractionContext context =
+        actionExecutionContext.getContext(CppIncludeExtractionContext.class);
     try {
       context.extractIncludes(actionExecutionContext, this, getPrimaryInput(),
           getPrimaryOutput());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
index 102b895..acdaafd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -145,8 +145,8 @@
           actionExecutionContext.getVerboseFailures(),
           this);
     }
-    IncludeScanningContext scanningContext =
-        actionExecutionContext.getContext(IncludeScanningContext.class);
+    CppIncludeExtractionContext scanningContext =
+        actionExecutionContext.getContext(CppIncludeExtractionContext.class);
     Path execRoot = actionExecutionContext.getExecRoot();
 
     NestedSet<Artifact> discoveredInputs;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
index 77966e0..d0f68c9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
@@ -37,15 +37,6 @@
 )
 public class SpawnGccStrategy implements CppCompileActionContext {
   @Override
-  public Iterable<Artifact> findAdditionalInputs(
-      CppCompileAction action,
-      ActionExecutionContext actionExecutionContext,
-      IncludeProcessing includeProcessing)
-      throws ExecException, InterruptedException {
-    return null;
-  }
-
-  @Override
   public CppCompileActionResult execWithReply(
       CppCompileAction action, ActionExecutionContext actionExecutionContext)
       throws ExecException, InterruptedException {
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
index 1181cb7..0c0775b 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
@@ -17,8 +17,10 @@
 import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.actions.ActionContext;
 import com.google.devtools.build.lib.actions.ActionExecutionContext;
+import com.google.devtools.build.lib.actions.ActionExecutionException;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.ArtifactResolver;
+import com.google.devtools.build.lib.actions.ExecException;
 import com.google.devtools.build.lib.actions.ExecutionStrategy;
 import com.google.devtools.build.lib.actions.ResourceManager;
 import com.google.devtools.build.lib.analysis.test.TestActionContext;
@@ -34,7 +36,10 @@
 import com.google.devtools.build.lib.exec.local.LocalSpawnRunner;
 import com.google.devtools.build.lib.exec.local.PosixLocalEnvProvider;
 import com.google.devtools.build.lib.exec.local.WindowsLocalEnvProvider;
-import com.google.devtools.build.lib.rules.cpp.IncludeScanningContext;
+import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
+import com.google.devtools.build.lib.rules.cpp.CppIncludeExtractionContext;
+import com.google.devtools.build.lib.rules.cpp.CppIncludeScanningContext;
+import com.google.devtools.build.lib.rules.cpp.IncludeProcessing;
 import com.google.devtools.build.lib.rules.cpp.SpawnGccStrategy;
 import com.google.devtools.build.lib.rules.test.ExclusiveTestStrategy;
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
@@ -42,6 +47,7 @@
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.Path;
 import java.io.IOException;
+import javax.annotation.Nullable;
 
 /**
  * Provide a standalone, local execution context.
@@ -49,11 +55,11 @@
 public class StandaloneActionContextProvider extends ActionContextProvider {
 
   /**
-   * a IncludeScanningContext that does nothing. Since local execution does not need to
-   * discover inclusion in advance, we do not need include scanning.
+   * An IncludeExtractionContext that does nothing. Since local execution does not need to discover
+   * inclusion in advance, we do not need include scanning.
    */
-  @ExecutionStrategy(contextType = IncludeScanningContext.class)
-  class DummyIncludeScanningContext implements IncludeScanningContext {
+  @ExecutionStrategy(contextType = CppIncludeExtractionContext.class)
+  class DummyCppIncludeExtractionContext implements CppIncludeExtractionContext {
     @Override
     public void extractIncludes(
         ActionExecutionContext actionExecutionContext,
@@ -70,6 +76,23 @@
     }
   }
 
+  /**
+   * An IncludeScanningContext that does nothing. Since local execution does not need to discover
+   * inclusion in advance, we do not need include scanning.
+   */
+  @ExecutionStrategy(contextType = CppIncludeScanningContext.class)
+  static class DummyCppIncludeScanningContext implements CppIncludeScanningContext {
+    @Override
+    @Nullable
+    public Iterable<Artifact> findAdditionalInputs(
+        CppCompileAction action,
+        ActionExecutionContext actionExecutionContext,
+        IncludeProcessing includeProcessing)
+        throws ExecException, InterruptedException, ActionExecutionException {
+      return null;
+    }
+  }
+
   private final CommandEnvironment env;
 
   public StandaloneActionContextProvider(CommandEnvironment env) {
@@ -92,7 +115,8 @@
     // last one from strategies list will be used
     return ImmutableList.of(
         new StandaloneSpawnStrategy(env.getExecRoot(), createLocalRunner(env)),
-        new DummyIncludeScanningContext(),
+        new DummyCppIncludeExtractionContext(),
+        new DummyCppIncludeScanningContext(),
         new SpawnGccStrategy(),
         testStrategy,
         new ExclusiveTestStrategy(testStrategy),