Fix non-fatal error in StarlarkProvider.export() Follow-up to https://github.com/bazelbuild/bazel/commit/859d7faa49c582cf3ed33a2436678a4e853a6a42 - .bzl loading thread exportables' owner is now BzlLoadThreadOwner, not BzlLoadValue.Key. We didn't catch this before because StarlarkProvider explicitly omits the owner check when running under tests. PiperOrigin-RevId: 964184306 Change-Id: I0e79625c6eaa5f61b6cdeb3529ca3ff2fd2dccc9
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StarlarkProvider.java b/src/main/java/com/google/devtools/build/lib/packages/StarlarkProvider.java index 19be348..f0934e0 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/StarlarkProvider.java +++ b/src/main/java/com/google/devtools/build/lib/packages/StarlarkProvider.java
@@ -30,6 +30,7 @@ import com.google.devtools.build.lib.collect.nestedset.Depset; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.events.EventHandler; +import com.google.devtools.build.lib.skyframe.BzlLoadThreadOwner; import com.google.devtools.build.lib.skyframe.BzlLoadValue; import com.google.devtools.build.lib.util.Fingerprint; import com.google.errorprone.annotations.CanIgnoreReturnValue; @@ -482,15 +483,15 @@ EventHandler handler, Label extensionLabel, String exportedName, Location exportedLocation) { Preconditions.checkState(!isExported()); SymbolGenerator.Symbol<?> identifier = (SymbolGenerator.Symbol<?>) keyOrIdentityToken; - if (identifier.getOwner() instanceof BzlLoadValue.Key bzlKey) { + if (identifier.getOwner() instanceof BzlLoadThreadOwner bzlLoadOwner) { // In production code, StarlarkProviders are created only when loading .bzl files so the owner // of the Symbol should be a BzlLoadValue.Key. checkArgument( - extensionLabel.equals(bzlKey.getLabel()), + extensionLabel.equals(bzlLoadOwner.key().getLabel()), "export extensionLabel=%s, but owner=%s", extensionLabel, - bzlKey); - this.keyOrIdentityToken = new Key(bzlKey, exportedName); + bzlLoadOwner.key()); + this.keyOrIdentityToken = new Key(bzlLoadOwner.key(), exportedName); } else { // In tests, the symbol may be arbitrary. if (!isInTest()) {