Native declared providers are automatically exported. -- MOS_MIGRATED_REVID=134221884
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java index 453f47d..8a18f54 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
@@ -23,7 +23,7 @@ import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.SkylarkClassObject; -import com.google.devtools.build.lib.packages.SkylarkClassObjectConstructor.Key; +import com.google.devtools.build.lib.packages.SkylarkClassObjectConstructor.SkylarkKey; import java.util.List; import javax.annotation.Nullable; import org.junit.Test; @@ -64,7 +64,8 @@ ConfiguredTarget configuredTarget = getConfiguredTarget("//java/test:my"); SkylarkProviders provider = configuredTarget.getProvider(SkylarkProviders.class); SkylarkClassObject skylarkClassObject = provider - .getDeclaredProvider(new Key(Label.parseAbsolute("//java/test:extension.bzl"), "result")); + .getDeclaredProvider( + new SkylarkKey(Label.parseAbsolute("//java/test:extension.bzl"), "result")); assertThat(Iterables.transform((List<?>) skylarkClassObject.getValue("processor_classpath"), new Function<Object, String>() {
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java index a140187..dc08c01 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
@@ -817,7 +817,7 @@ ); ConfiguredTarget configuredTarget = getConfiguredTarget("//test:r"); - SkylarkClassObjectConstructor.Key key = new SkylarkClassObjectConstructor.Key( + SkylarkClassObjectConstructor.Key key = new SkylarkClassObjectConstructor.SkylarkKey( Label.create(configuredTarget.getLabel().getPackageIdentifier(), "extension.bzl"), "my_provider"); SkylarkProviders skylarkProviders = configuredTarget.getProvider(SkylarkProviders.class); @@ -844,7 +844,7 @@ ); ConfiguredTarget configuredTarget = getConfiguredTarget("//test:r"); - SkylarkClassObjectConstructor.Key key = new SkylarkClassObjectConstructor.Key( + SkylarkClassObjectConstructor.Key key = new SkylarkClassObjectConstructor.SkylarkKey( Label.create(configuredTarget.getLabel().getPackageIdentifier(), "extension.bzl"), "my_provider"); SkylarkProviders skylarkProviders = configuredTarget.getProvider(SkylarkProviders.class);
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java index 42cd32a..7a78b6e 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -981,7 +981,7 @@ assertThat(dataConstructor.isExported()).isTrue(); assertThat(dataConstructor.getPrintableName()).isEqualTo("data"); assertThat(dataConstructor.getKey()).isEqualTo( - new SkylarkClassObjectConstructor.Key(FAKE_LABEL, "data") + new SkylarkClassObjectConstructor.SkylarkKey(FAKE_LABEL, "data") ); } @@ -1017,4 +1017,16 @@ "d = d1 + d2" ); } + + @Test + public void structsAsDeclaredProvidersTest() throws Exception { + evalAndExport( + "data = struct(x = 1)" + ); + SkylarkClassObject data = (SkylarkClassObject) lookup("data"); + assertThat(SkylarkClassObjectConstructor.STRUCT.isExported()).isTrue(); + assertThat(data.getConstructor()).isEqualTo(SkylarkClassObjectConstructor.STRUCT); + assertThat(data.getConstructor().getKey()) + .isEqualTo(SkylarkClassObjectConstructor.STRUCT.getKey()); + } }