Fix include scanning crash when no containing package is found.

PiperOrigin-RevId: 295213874
diff --git a/src/main/java/com/google/devtools/build/lib/includescanning/IncludeHintsFunction.java b/src/main/java/com/google/devtools/build/lib/includescanning/IncludeHintsFunction.java
index bf88357..076bf91 100644
--- a/src/main/java/com/google/devtools/build/lib/includescanning/IncludeHintsFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/includescanning/IncludeHintsFunction.java
@@ -13,7 +13,6 @@
 // limitations under the License.
 package com.google.devtools.build.lib.includescanning;
 
-import com.google.common.base.Preconditions;
 import com.google.devtools.build.lib.actions.EnvironmentalExecException;
 import com.google.devtools.build.lib.actions.FileValue;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
@@ -35,8 +34,8 @@
  * INCLUDE_HINTS file.
  */
 public class IncludeHintsFunction implements SkyFunction {
-  // TODO(b/111722810): We don't re-run compiles if INCLUDE_HINTS file changes, because it is not
-  // present in the action graph. This is an incremental compilation bug.
+  // TODO(b/111722810): the action cache is not sensitive to changes in the INCLUDE_HINTS file, so
+  //  even though Skyframe handles changes, we may still not re-execute an affected action.
   @AutoCodec
   public static final SkyKey INCLUDE_HINTS_KEY =
       (SkyKey) () -> IncludeScanningSkyFunctions.INCLUDE_HINTS;
@@ -60,8 +59,17 @@
       if (env.valuesMissing()) {
         return null;
       }
-      Preconditions.checkState(hintsLookupValue.hasContainingPackage(), "%s %s",
-          hintsFile, hintsLookupValue);
+      if (!hintsLookupValue.hasContainingPackage()) {
+        String reasonForNoContainingPackage = hintsLookupValue.getReasonForNoContainingPackage();
+        throw new IncludeHintsFunctionException(
+            new EnvironmentalExecException(
+                "INCLUDE_HINTS file "
+                    + hintsFile
+                    + " was not in a package"
+                    + (reasonForNoContainingPackage != null
+                        ? ": " + reasonForNoContainingPackage
+                        : "")));
+      }
       hintsPackageRoot = hintsLookupValue.getContainingPackageRoot();
       env.getValueOrThrow(FileValue.key(RootedPath.toRootedPath(hintsPackageRoot, hintsFile)),
           IOException.class);