Expose the build configuration key through `ConfiguredObjectValue`.

PiperOrigin-RevId: 392535347
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectValue.java b/src/main/java/com/google/devtools/build/lib/analysis/AspectValue.java
index 0c18c7f..c78743f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AspectValue.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AspectValue.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.lib.packages.Aspect;
 import com.google.devtools.build.lib.packages.Package;
 import com.google.devtools.build.lib.skyframe.AspectValueKey.AspectKey;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
 import javax.annotation.Nullable;
 import net.starlark.java.syntax.Location;
 
@@ -88,6 +89,17 @@
   }
 
   @Override
+  public ProviderCollection getConfiguredObject() {
+    return getConfiguredAspect();
+  }
+
+  @Override
+  @Nullable
+  public BuildConfigurationValue.Key getConfigurationKey() {
+    return key.getAspectConfigurationKey();
+  }
+
+  @Override
   public String toString() {
     return getStringHelper()
         .add("key", key)
@@ -96,9 +108,4 @@
         .add("configuredAspect", configuredAspect)
         .toString();
   }
-
-  @Override
-  public ProviderCollection getConfiguredObject() {
-    return getConfiguredAspect();
-  }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
index 4ed66f2..3e7d5c7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
@@ -667,7 +667,9 @@
         ":provider_collection",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/packages",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
         "//src/main/java/com/google/devtools/build/skyframe",
+        "//third_party:jsr305",
     ],
 )
 
@@ -700,6 +702,8 @@
     deps = [
         ":configured_object_value",
         ":configured_target",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
+        "//third_party:jsr305",
     ],
 )
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredObjectValue.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredObjectValue.java
index b06000a..3a6b8eb 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredObjectValue.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredObjectValue.java
@@ -15,7 +15,9 @@
 
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.packages.Package;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
 import com.google.devtools.build.skyframe.NotComparableSkyValue;
+import javax.annotation.Nullable;
 
 /**
  * Super-interface for {@link ConfiguredTargetValue} and {@link RuleConfiguredObjectValue}
@@ -26,6 +28,13 @@
   ProviderCollection getConfiguredObject();
 
   /**
+   * Returns a key representing the configuration in which this value was analyzed, or {@code null}
+   * if no configuration was considered.
+   */
+  @Nullable
+  BuildConfigurationValue.Key getConfigurationKey();
+
+  /**
    * Returns the set of packages transitively loaded by this value. Must only be used for
    * constructing the package -> source root map needed for some builds. If the caller has not
    * specified that this map needs to be constructed (via the constructor argument in {@link
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetValue.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetValue.java
index 63376da..0cc86c9 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetValue.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetValue.java
@@ -14,6 +14,9 @@
 
 package com.google.devtools.build.lib.analysis;
 
+import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import javax.annotation.Nullable;
+
 /** A {@link com.google.devtools.build.skyframe.SkyValue} for a {@link ConfiguredTarget}. */
 public interface ConfiguredTargetValue extends ConfiguredObjectValue {
 
@@ -24,4 +27,10 @@
   default ConfiguredTarget getConfiguredObject() {
     return getConfiguredTarget();
   }
+
+  @Override
+  @Nullable
+  default BuildConfigurationValue.Key getConfigurationKey() {
+    return getConfiguredTarget().getConfigurationKey();
+  }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValueKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValueKey.java
index f97e08d..8ad02a8 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValueKey.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValueKey.java
@@ -218,7 +218,7 @@
      * base target's configuration.
      */
     @Nullable
-    BuildConfigurationValue.Key getAspectConfigurationKey() {
+    public BuildConfigurationValue.Key getAspectConfigurationKey() {
       return aspectConfigurationKey;
     }