Remove "return struct" in rule implementation of some Bazel tests (#3)

This makes the affected tests compatible with --incompatible_disallow_struct_provider_syntax

Progress toward #7347.

RELNOTES: None.
PiperOrigin-RevId: 244360214
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index bdcc604..c13b844 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -1502,8 +1502,10 @@
         ":guava_junit_truth",
         ":packages_testutil",
         "//src/main/java/com/google/devtools/build/lib:build-base",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
         "//src/main/java/com/google/devtools/build/lib:proto-rules",
         "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/proto",
         "//src/main/java/com/google/devtools/build/lib/vfs",
     ],
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java
index 6a3e402..f07a0cb 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java
@@ -1000,7 +1000,7 @@
         "      output=ctx.outputs.out_file,",
         "      content=ctx.attr.string_value,",
         "  )",
-        "  return struct()",
+        "  return []",
         "",
         "def _derived_value(string_value):",
         "  return Label(\"//test:%s\" % string_value)",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java
index 6fa0285..9d77d04 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java
@@ -442,12 +442,14 @@
         "testrule(name='b')");
     scratch.file(
         "a/def.bzl",
+        "MyInfo = provider()",
         "def _aspect_impl(target, ctx):",
         "  f = ctx.actions.declare_file('foo.txt')",
         "  ctx.actions.run_shell(outputs = [f], command = 'echo foo > \"$1\"')",
-        "  return struct(output=f)",
+        "  return MyInfo(output=f)",
         "def _rule_impl(ctx):",
-        "  return struct(files=depset([artifact.output for artifact in ctx.attr.deps]))",
+        "  return DefaultInfo(",
+        "      files=depset([artifact[MyInfo].output for artifact in ctx.attr.deps]))",
         "aspect1 = aspect(_aspect_impl, attr_aspects=['deps'], ",
         "    attrs = {'parameter': attr.string(values = ['param_value'])})",
         "testrule = rule(_rule_impl, attrs = { ",
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformerTest.java
index 1c6c59f..68607a9 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/CompileOneDependencyTransformerTest.java
@@ -70,7 +70,7 @@
         "foo/rule.bzl",
         "def _impl(ctx):",
         "  ctx.actions.do_nothing(mnemonic='Mnemonic')",
-        "  return struct()",
+        "  return []",
         "crule_without_srcs = rule(",
         "  _impl,",
         "  attrs = { ",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkTest.java
index e208591..395da5c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkTest.java
@@ -17,14 +17,19 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ListMultimap;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
 import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.packages.SkylarkProvider;
+import com.google.devtools.build.lib.packages.StructImpl;
 import com.google.devtools.build.lib.packages.util.BazelMockAndroidSupport;
 import com.google.devtools.build.lib.syntax.Runtime;
 import java.util.List;
 import java.util.Map;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -35,8 +40,9 @@
   private void writeAndroidSplitTransitionTestFiles() throws Exception  {
     scratch.file(
         "test/skylark/my_rule.bzl",
+        "load('//myinfo:myinfo.bzl', 'MyInfo')",
         "def impl(ctx): ",
-        "  return struct(",
+        "  return MyInfo(",
         "    split_attr_deps = ctx.split_attr.deps,",
         "    split_attr_dep = ctx.split_attr.dep,",
         "    k8_deps = ctx.split_attr.deps.get('k8', None),",
@@ -57,6 +63,20 @@
         "cc_binary(name = 'main2', srcs = ['main2.c'])");
   }
 
+  @Before
+  public void setupMyInfo() throws Exception {
+    scratch.file("myinfo/myinfo.bzl", "MyInfo = provider()");
+
+    scratch.file("myinfo/BUILD");
+  }
+
+  private StructImpl getMyInfoFromTarget(ConfiguredTarget configuredTarget) throws Exception {
+    Provider.Key key =
+        new SkylarkProvider.SkylarkKey(
+            Label.parseAbsolute("//myinfo:myinfo.bzl", ImmutableMap.of()), "MyInfo");
+    return (StructImpl) configuredTarget.get(key);
+  }
+
   @Test
   public void testAndroidSplitTransition() throws Exception {
     getAnalysisMock().ccSupport().setupCcToolchainConfigForCpu(mockToolsConfig, "armeabi-v7a");
@@ -64,6 +84,7 @@
 
     useConfiguration("--fat_apk_cpu=k8,armeabi-v7a");
     ConfiguredTarget target = getConfiguredTarget("//test/skylark:test");
+    StructImpl myInfo = getMyInfoFromTarget(target);
 
     // Check that ctx.split_attr.deps has this structure:
     // {
@@ -72,7 +93,7 @@
     // }
     @SuppressWarnings("unchecked")
     Map<String, List<ConfiguredTarget>> splitDeps =
-        (Map<String, List<ConfiguredTarget>>) target.get("split_attr_deps");
+        (Map<String, List<ConfiguredTarget>>) myInfo.getValue("split_attr_deps");
     assertThat(splitDeps).containsKey("k8");
     assertThat(splitDeps).containsKey("armeabi-v7a");
     assertThat(splitDeps.get("k8")).hasSize(2);
@@ -91,7 +112,7 @@
     // }
     @SuppressWarnings("unchecked")
     Map<String, ConfiguredTarget> splitDep =
-        (Map<String, ConfiguredTarget>) target.get("split_attr_dep");
+        (Map<String, ConfiguredTarget>) myInfo.getValue("split_attr_dep");
     assertThat(splitDep).containsKey("k8");
     assertThat(splitDep).containsKey("armeabi-v7a");
     assertThat(getConfiguration(splitDep.get("k8")).getCpu()).isEqualTo("k8");
@@ -100,7 +121,7 @@
     // The regular ctx.attr.deps should be a single list with all the branches of the split merged
     // together (i.e. for aspects).
     @SuppressWarnings("unchecked")
-    List<ConfiguredTarget> attrDeps = (List<ConfiguredTarget>) target.get("attr_deps");
+    List<ConfiguredTarget> attrDeps = (List<ConfiguredTarget>) myInfo.getValue("attr_deps");
     assertThat(attrDeps).hasSize(4);
     ListMultimap<String, Object> attrDepsMap = ArrayListMultimap.create();
     for (ConfiguredTarget ct : attrDeps) {
@@ -112,7 +133,7 @@
     // Check that even though my_rule.dep is defined as a single label, ctx.attr.dep is still a list
     // with multiple ConfiguredTarget objects because of the two different CPUs.
     @SuppressWarnings("unchecked")
-    List<ConfiguredTarget> attrDep = (List<ConfiguredTarget>) target.get("attr_dep");
+    List<ConfiguredTarget> attrDep = (List<ConfiguredTarget>) myInfo.getValue("attr_dep");
     assertThat(attrDep).hasSize(2);
     ListMultimap<String, Object> attrDepMap = ArrayListMultimap.create();
     for (ConfiguredTarget ct : attrDep) {
@@ -123,7 +144,7 @@
 
     // Check that the deps were correctly accessed from within Skylark.
     @SuppressWarnings("unchecked")
-    List<ConfiguredTarget> k8Deps = (List<ConfiguredTarget>) target.get("k8_deps");
+    List<ConfiguredTarget> k8Deps = (List<ConfiguredTarget>) myInfo.getValue("k8_deps");
     assertThat(k8Deps).hasSize(2);
     assertThat(getConfiguration(k8Deps.get(0)).getCpu()).isEqualTo("k8");
     assertThat(getConfiguration(k8Deps.get(1)).getCpu()).isEqualTo("k8");
@@ -141,7 +162,8 @@
 
     @SuppressWarnings("unchecked")
     Map<Object, List<ConfiguredTarget>> splitDeps =
-        (Map<Object, List<ConfiguredTarget>>) target.get("split_attr_deps");
+        (Map<Object, List<ConfiguredTarget>>)
+            getMyInfoFromTarget(target).getValue("split_attr_deps");
 
     String cpu = "armeabi-v7a";
     assertThat(splitDeps.get(cpu)).hasSize(2);
@@ -158,7 +180,8 @@
 
     @SuppressWarnings("unchecked")
     Map<Object, List<ConfiguredTarget>> splitDeps =
-        (Map<Object, List<ConfiguredTarget>>) target.get("split_attr_deps");
+        (Map<Object, List<ConfiguredTarget>>)
+            getMyInfoFromTarget(target).getValue("split_attr_deps");
 
     // Split transition isn't in effect, so the deps are compiled normally (i.e. using --cpu).
     assertThat(splitDeps.get(Runtime.NONE)).hasSize(2);
@@ -170,8 +193,9 @@
   public void testAndroidSdkConfigurationField() throws Exception {
     scratch.file(
         "foo_library.bzl",
+        "load('//myinfo:myinfo.bzl', 'MyInfo')",
         "def _impl(ctx):",
-        "  return struct(foo = ctx.attr._android_sdk.label)",
+        "  return MyInfo(foo = ctx.attr._android_sdk.label)",
         "foo_library = rule(implementation = _impl,",
         "    attrs = { '_android_sdk': attr.label(default = configuration_field(",
         "        fragment = 'android', name = 'android_sdk_label'))},",
@@ -183,6 +207,8 @@
         "foo_library(name = 'lib')");
     useConfiguration("--android_sdk=//:new_sdk");
     ConfiguredTarget ct = getConfiguredTarget("//:lib");
-    assertThat(ct.get("foo")).isEqualTo(Label.parseAbsoluteUnchecked("//:new_sdk"));
+
+    assertThat(getMyInfoFromTarget(ct).getValue("foo"))
+        .isEqualTo(Label.parseAbsoluteUnchecked("//:new_sdk"));
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/BUILD b/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
index ff7f702..6344cda 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
@@ -34,6 +34,7 @@
     srcs = ["AndroidSkylarkTest.java"],
     deps = [
         "//src/main/java/com/google/devtools/build/lib:build-base",
+        "//src/main/java/com/google/devtools/build/lib:packages-internal",
         "//src/main/java/com/google/devtools/build/lib:syntax",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/test/java/com/google/devtools/build/lib:analysis_testutil",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
index c0d31e0..f4c515d 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
@@ -16,9 +16,15 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.packages.SkylarkProvider;
+import com.google.devtools.build.lib.packages.StructImpl;
 import java.util.List;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -26,14 +32,29 @@
 /** Tests for Skylark interface to SwiftConfiguration. */
 @RunWith(JUnit4.class)
 public class SwiftConfigurationTest extends BuildViewTestCase {
+  @Before
+  public void setupMyInfo() throws Exception {
+    scratch.file("myinfo/myinfo.bzl", "MyInfo = provider()");
+
+    scratch.file("myinfo/BUILD");
+  }
+
+  private StructImpl getMyInfoFromTarget(ConfiguredTarget configuredTarget) throws Exception {
+    Provider.Key key =
+        new SkylarkProvider.SkylarkKey(
+            Label.parseAbsolute("//myinfo:myinfo.bzl", ImmutableMap.of()), "MyInfo");
+    return (StructImpl) configuredTarget.get(key);
+  }
+
   @Test
   public void testSkylarkApi() throws Exception {
     scratch.file("examples/rule/BUILD");
     scratch.file(
         "examples/rule/apple_rules.bzl",
+        "load('//myinfo:myinfo.bzl', 'MyInfo')",
         "def swift_binary_impl(ctx):",
         "   copts = ctx.fragments.swift.copts()",
-        "   return struct(",
+        "   return MyInfo(",
         "      copts=copts,",
         "   )",
         "swift_binary = rule(",
@@ -54,7 +75,7 @@
     ConfiguredTarget skylarkTarget = getConfiguredTarget("//examples/swift_skylark:my_target");
 
     @SuppressWarnings("unchecked")
-    List<String> copts = (List<String>) skylarkTarget.get("copts");
+    List<String> copts = (List<String>) getMyInfoFromTarget(skylarkTarget).getValue("copts");
 
     assertThat(copts).containsAllOf("foo", "bar");
   }
@@ -64,9 +85,10 @@
     scratch.file("examples/rule/BUILD");
     scratch.file(
         "examples/rule/apple_rules.bzl",
+        "load('//myinfo:myinfo.bzl', 'MyInfo')",
         "def swift_binary_impl(ctx):",
         "   copts = ctx.fragments.swift.copts()",
-        "   return struct(",
+        "   return MyInfo(",
         "      copts=copts,",
         "   )",
         "swift_binary = rule(",
@@ -86,7 +108,7 @@
         getConfiguredTarget("//examples/swift_skylark:my_target", getHostConfiguration());
 
     @SuppressWarnings("unchecked")
-    List<String> copts = (List<String>) target.get("copts");
+    List<String> copts = (List<String>) getMyInfoFromTarget(target).getValue("copts");
 
     assertThat(copts).doesNotContain("foo");
     assertThat(copts).containsAllOf("bar", "baz");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java b/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java
index 060c01a..663674d 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java
@@ -16,9 +16,14 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.packages.SkylarkProvider;
+import com.google.devtools.build.lib.packages.StructImpl;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -34,6 +39,7 @@
     scratch.file("examples/rule/BUILD");
     scratch.file(
         "examples/rule/apple_rules.bzl",
+        "MyInfo = provider()",
         "def my_rule_impl(ctx):",
         "   xcode_properties = ctx.attr.xcode[apple_common.XcodeProperties]",
         "   xcode_version = xcode_properties.xcode_version",
@@ -41,7 +47,7 @@
         "   watchos_version = xcode_properties.default_watchos_sdk_version",
         "   tvos_version = xcode_properties.default_tvos_sdk_version",
         "   macos_version = xcode_properties.default_macos_sdk_version",
-        "   return struct(",
+        "   return MyInfo(",
         "       xcode_version=xcode_version,",
         "       ios_version=ios_version,",
         "       watchos_version=watchos_version,",
@@ -72,11 +78,15 @@
 
     RuleConfiguredTarget skylarkTarget =
         (RuleConfiguredTarget) getConfiguredTarget("//examples/apple_skylark:my_target");
-    assertThat((String) skylarkTarget.get("xcode_version")).isEqualTo("8");
-    assertThat((String) skylarkTarget.get("ios_version")).isEqualTo("9.0");
-    assertThat((String) skylarkTarget.get("watchos_version")).isEqualTo("9.1");
-    assertThat((String) skylarkTarget.get("tvos_version")).isEqualTo("9.2");
-    assertThat((String) skylarkTarget.get("macos_version")).isEqualTo("9.3");
+    Provider.Key key =
+        new SkylarkProvider.SkylarkKey(
+            Label.parseAbsolute("//examples/rule:apple_rules.bzl", ImmutableMap.of()), "MyInfo");
+    StructImpl myInfo = (StructImpl) skylarkTarget.get(key);
+    assertThat((String) myInfo.getValue("xcode_version")).isEqualTo("8");
+    assertThat((String) myInfo.getValue("ios_version")).isEqualTo("9.0");
+    assertThat((String) myInfo.getValue("watchos_version")).isEqualTo("9.1");
+    assertThat((String) myInfo.getValue("tvos_version")).isEqualTo("9.2");
+    assertThat((String) myInfo.getValue("macos_version")).isEqualTo("9.3");
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
index d57016f..9d96f2c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
@@ -22,6 +22,7 @@
 
 import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 import com.google.common.eventbus.EventBus;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
@@ -29,7 +30,11 @@
 import com.google.devtools.build.lib.analysis.ExtraActionArtifactsProvider;
 import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.packages.SkylarkProvider;
+import com.google.devtools.build.lib.packages.StructImpl;
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
 import com.google.devtools.build.lib.rules.java.JavaCompileAction;
 import com.google.devtools.build.lib.rules.java.JavaInfo;
@@ -529,15 +534,16 @@
   public void testJavaLiteProtoLibraryAspectProviders() throws Exception {
     scratch.file(
         "x/aspect.bzl",
+        "MyInfo = provider()",
         "def _foo_aspect_impl(target,ctx):",
         "  proto_found = hasattr(target, 'proto_java')",
         "  if hasattr(ctx.rule.attr, 'deps'):",
         "    for dep in ctx.rule.attr.deps:",
         "      proto_found = proto_found or dep.proto_found",
-        "  return struct(proto_found = proto_found)",
+        "  return MyInfo(proto_found = proto_found)",
         "foo_aspect = aspect(_foo_aspect_impl, attr_aspects = ['deps'])",
         "def _foo_rule_impl(ctx):",
-        "  return struct(result = ctx.attr.dep.proto_found)",
+        "  return MyInfo(result = ctx.attr.dep.proto_found)",
         "foo_rule = rule(_foo_rule_impl, attrs = { 'dep' : attr.label(aspects = [foo_aspect])})");
     scratch.file(
         "x/BUILD",
@@ -548,7 +554,11 @@
         "proto_library(name = 'foo_proto', srcs = ['foo.proto'], java_lib = ':lib')",
         "foo_rule(name = 'foo_rule', dep = 'foo_java_proto')");
     ConfiguredTarget target = getConfiguredTarget("//x:foo_rule");
-    Boolean result = (Boolean) target.get("result");
+    Provider.Key key =
+        new SkylarkProvider.SkylarkKey(
+            Label.parseAbsolute("//x:aspect.bzl", ImmutableMap.of()), "MyInfo");
+    StructImpl myInfo = (StructImpl) target.get(key);
+    Boolean result = (Boolean) myInfo.getValue("result");
 
     // "yes" means that "proto_java" was found on the proto_library + java_proto_library aspect.
     assertThat(result).isTrue();
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinarySkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinarySkylarkApiTest.java
index 8b5a627..087ac58 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinarySkylarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinarySkylarkApiTest.java
@@ -59,11 +59,13 @@
         "test_skylark/apple_binary_skylark.bzl",
         "def apple_binary_skylark_impl(ctx):",
         "  binary_output = apple_common.link_multi_arch_binary(ctx=ctx)",
-        "  return struct(",
-        "      files=depset([binary_output.binary_provider.binary]),",
-        "      output_groups=binary_output.output_groups,",
-        "      providers=[binary_output.binary_provider, binary_output.debug_outputs_provider],",
-        "  )",
+        "  return [",
+        "      DefaultInfo(",
+        "          files=depset([binary_output.binary_provider.binary])),",
+        "      OutputGroupInfo(**binary_output.output_groups),",
+        "      binary_output.binary_provider,",
+        "      binary_output.debug_outputs_provider",
+        "  ]",
         "apple_binary_skylark = rule(",
         "    apple_binary_skylark_impl,",
         "    attrs = {",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
index 751e9cf..6eb8ab6 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
@@ -641,9 +641,7 @@
         "   dep_provider = ctx.attr.proxy[apple_common.AppleStaticLibrary]",
         "   my_provider = apple_common.AppleStaticLibrary(archive = dep_provider.archive,",
         "       objc = dep_provider.objc)",
-        "   return struct(",
-        "      providers = [my_provider]",
-        "   )",
+        "   return [my_provider]",
         "",
         "skylark_static_lib = rule(",
         "  implementation = skylark_static_lib_impl,",
@@ -681,9 +679,7 @@
         "   dep_provider = ctx.attr.proxy[apple_common.AppleStaticLibrary]",
         "   my_provider = apple_common.AppleStaticLibrary(archive = dep_provider.archive,",
         "       objc = dep_provider.objc, foo = 'bar')",
-        "   return struct(",
-        "      providers = [my_provider]",
-        "   )",
+        "   return [my_provider]",
         "",
         "skylark_static_lib = rule(",
         "  implementation = skylark_static_lib_impl,",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
index a773056..c466cd1 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
@@ -951,7 +951,7 @@
         "examples/fake_rule.bzl",
         "def _fake_rule_impl(ctx):",
         "  myProvider = ctx.attr.deps[0][JavaInfo]",
-        "  return struct(providers = [myProvider])",
+        "  return myProvider",
         "",
         "fake_rule = rule(",
         "  implementation = _fake_rule_impl,",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoInfoStarlarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoInfoStarlarkTest.java
index 72eb674..2f22ae2 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoInfoStarlarkTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoInfoStarlarkTest.java
@@ -16,10 +16,15 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.packages.SkylarkProvider;
+import com.google.devtools.build.lib.packages.StructImpl;
 import com.google.devtools.build.lib.packages.util.MockProtoSupport;
 import com.google.devtools.build.lib.skylarkbuildapi.proto.ProtoModuleApi;
 import org.junit.Before;
@@ -34,17 +39,27 @@
   public void setUp() throws Exception {
     useConfiguration("--proto_compiler=//proto:compiler"); // TODO check do we need that.
     scratch.file("proto/BUILD", "licenses(['notice'])", "exports_files(['compiler'])");
+    scratch.file("myinfo/myinfo.bzl", "MyInfo = provider()");
+    scratch.file("myinfo/BUILD");
     MockProtoSupport.setup(mockToolsConfig);
   }
 
+  private StructImpl getMyInfoFromTarget(ConfiguredTarget configuredTarget) throws Exception {
+    Provider.Key key =
+        new SkylarkProvider.SkylarkKey(
+            Label.parseAbsolute("//myinfo:myinfo.bzl", ImmutableMap.of()), "MyInfo");
+    return (StructImpl) configuredTarget.get(key);
+  }
+
   @Test
   public void testLegacyProviderCanBeDisabled() throws Exception {
     useConfiguration("--incompatible_disable_legacy_proto_provider");
     scratch.file(
         "foo/test.bzl",
+        "load('//myinfo:myinfo.bzl', 'MyInfo')",
         "def _impl(ctx):",
         "  provider = ctx.attr.dep.proto", // NB: This is the legacy provider
-        "  return struct(direct_sources=provider.direct_sources)",
+        "  return MyInfo(direct_sources=provider.direct_sources)",
         "test = rule(implementation = _impl, attrs = {'dep': attr.label()})");
 
     scratch.file(
@@ -62,14 +77,15 @@
   public void testProtoCommon() throws Exception {
     scratch.file(
         "foo/test.bzl",
+        "load('//myinfo:myinfo.bzl', 'MyInfo')",
         "def _impl(ctx):",
-        "  return struct(proto_common=proto_common)",
+        "  return MyInfo(proto_common=proto_common)",
         "test = rule(implementation = _impl, attrs = {})");
 
     scratch.file("foo/BUILD", "load(':test.bzl', 'test')", "test(name='test')");
 
     ConfiguredTarget test = getConfiguredTarget("//foo:test");
-    Object protoCommon = test.get("proto_common");
+    Object protoCommon = getMyInfoFromTarget(test).getValue("proto_common");
     assertThat(protoCommon).isInstanceOf(ProtoModuleApi.class);
   }
 
@@ -78,9 +94,10 @@
     useConfiguration("--incompatible_disable_legacy_proto_provider");
     scratch.file(
         "foo/test.bzl",
+        "load('//myinfo:myinfo.bzl', 'MyInfo')",
         "def _impl(ctx):",
         "  provider = ctx.attr.dep[ProtoInfo]", // NB: This is the modern provider
-        "  return struct(direct_sources=provider.direct_sources)",
+        "  return MyInfo(direct_sources=provider.direct_sources)",
         "test = rule(implementation = _impl, attrs = {'dep': attr.label()})");
 
     scratch.file(
@@ -91,7 +108,8 @@
 
     ConfiguredTarget test = getConfiguredTarget("//foo:test");
     @SuppressWarnings("unchecked")
-    Iterable<Artifact> directSources = (Iterable<Artifact>) test.get("direct_sources");
+    Iterable<Artifact> directSources =
+        (Iterable<Artifact>) getMyInfoFromTarget(test).getValue("direct_sources");
     assertThat(ActionsTestUtil.baseArtifactNames(directSources)).containsExactly("p.proto");
   }
 
@@ -100,9 +118,10 @@
     useConfiguration("--noincompatible_disable_legacy_proto_provider");
     scratch.file(
         "foo/test.bzl",
+        "load('//myinfo:myinfo.bzl', 'MyInfo')",
         "def _impl(ctx):",
         "  provider = ctx.attr.dep.proto", // NB: This is the legacy provider
-        "  return struct(direct_sources=provider.direct_sources)",
+        "  return MyInfo(direct_sources=provider.direct_sources)",
         "test = rule(implementation = _impl, attrs = {'dep': attr.label()})");
 
     scratch.file(
@@ -113,7 +132,8 @@
 
     ConfiguredTarget test = getConfiguredTarget("//foo:test");
     @SuppressWarnings("unchecked")
-    Iterable<Artifact> directSources = (Iterable<Artifact>) test.get("direct_sources");
+    Iterable<Artifact> directSources =
+        (Iterable<Artifact>) getMyInfoFromTarget(test).getValue("direct_sources");
     assertThat(ActionsTestUtil.baseArtifactNames(directSources)).containsExactly("p.proto");
   }
 
@@ -121,9 +141,10 @@
   public void testProvider() throws Exception {
     scratch.file(
         "foo/test.bzl",
+        "load('//myinfo:myinfo.bzl', 'MyInfo')",
         "def _impl(ctx):",
         "  provider = ctx.attr.dep[ProtoInfo]", // NB: This is the modern provider
-        "  return struct(direct_sources=provider.direct_sources)",
+        "  return MyInfo(direct_sources=provider.direct_sources)",
         "test = rule(implementation = _impl, attrs = {'dep': attr.label()})");
 
     scratch.file(
@@ -134,7 +155,8 @@
 
     ConfiguredTarget test = getConfiguredTarget("//foo:test");
     @SuppressWarnings("unchecked")
-    Iterable<Artifact> directSources = (Iterable<Artifact>) test.get("direct_sources");
+    Iterable<Artifact> directSources =
+        (Iterable<Artifact>) getMyInfoFromTarget(test).getValue("direct_sources");
     assertThat(ActionsTestUtil.baseArtifactNames(directSources)).containsExactly("p.proto");
   }
 
@@ -143,9 +165,10 @@
 
     scratch.file(
         "foo/myTsetRule.bzl",
+        "load('//myinfo:myinfo.bzl', 'MyInfo')",
         "",
         "def _my_test_rule_impl(ctx):",
-        "    return struct(",
+        "    return MyInfo(",
         "        fetched_proto_source_root = ctx.attr.protodep.proto.proto_source_root",
         "    )",
         "",
@@ -169,7 +192,7 @@
         ")");
 
     ConfiguredTarget ct = getConfiguredTarget("//foo:myRule");
-    String protoSourceRoot = (String) ct.get("fetched_proto_source_root");
+    String protoSourceRoot = (String) getMyInfoFromTarget(ct).getValue("fetched_proto_source_root");
 
     assertThat(protoSourceRoot).isEqualTo("foo");
   }