Propagate aspects to base target toolchains

This change propagates the aspect to the toolchain dependencies of its target based on the aspect's `toolchain_aspects` attribute.

PiperOrigin-RevId: 651544913
Change-Id: Ib9ff12d5757cda9b1a38d9c4f2b3b78ca2232f23
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BaseTargetPrerequisitesSupplier.java b/src/main/java/com/google/devtools/build/lib/skyframe/BaseTargetPrerequisitesSupplier.java
index 3c6aa29..fa52ebb 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BaseTargetPrerequisitesSupplier.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BaseTargetPrerequisitesSupplier.java
@@ -16,6 +16,8 @@
 import com.google.devtools.build.lib.analysis.ConfiguredTargetValue;
 import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
 import com.google.devtools.build.lib.skyframe.config.BuildConfigurationKey;
+import com.google.devtools.build.lib.skyframe.toolchains.ToolchainContextKey;
+import com.google.devtools.build.lib.skyframe.toolchains.UnloadedToolchainContext;
 import javax.annotation.Nullable;
 
 /**
@@ -35,4 +37,11 @@
   @Nullable
   BuildConfigurationValue getPrerequisiteConfiguration(BuildConfigurationKey key)
       throws InterruptedException;
+
+  /**
+   * Directly retrieves unloaded toolchain contexts from Skyframe without adding a dependency edge.
+   */
+  @Nullable
+  UnloadedToolchainContext getUnloadedToolchainContext(ToolchainContextKey key)
+      throws InterruptedException;
 }