Fix simple bazel build_rules cases of rules returning struct

This is a migration step toward #7347 , so that Starlark rule implementation functions no longer return struct.
Not all usages are migrated: cases where a struct is returned with a "custom" field name requires more migration care.
See #7347 for details.

RELNOTES: None.
PiperOrigin-RevId: 241986202
diff --git a/tools/build_rules/java_rules_skylark.bzl b/tools/build_rules/java_rules_skylark.bzl
index d384175..f99449f 100644
--- a/tools/build_rules/java_rules_skylark.bzl
+++ b/tools/build_rules/java_rules_skylark.bzl
@@ -84,10 +84,12 @@
     runfiles = ctx.runfiles(collect_data = True)
 
     return struct(
-        files = depset([class_jar]),
         compile_time_jars = compile_time_jars + [class_jar],
         runtime_jars = runtime_jars + [class_jar],
-        runfiles = runfiles,
+        providers = [DefaultInfo(
+            files = depset([class_jar]),
+            runfiles = runfiles,
+        )],
     )
 
 def java_binary_impl(ctx):
@@ -168,9 +170,9 @@
 
     runfiles = ctx.runfiles(files = [deploy_jar, executable] + ctx.files._jdk, collect_data = True)
     files_to_build = depset([deploy_jar, manifest, executable])
-    files_to_build += library_result.files
+    files_to_build += library_result.providers[0].files
 
-    return struct(files = files_to_build, runfiles = runfiles)
+    return [DefaultInfo(files = files_to_build, runfiles = runfiles)]
 
 def java_import_impl(ctx):
     # TODO(bazel-team): Why do we need to filter here? The attribute
@@ -179,10 +181,9 @@
     neverlink_jars = depset(ctx.files.neverlink_jars)
     runfiles = ctx.runfiles(collect_data = True)
     return struct(
-        files = jars,
         compile_time_jars = jars + neverlink_jars,
         runtime_jars = jars,
-        runfiles = runfiles,
+        providers = [DefaultInfo(files = jars, runfiles = runfiles)],
     )
 
 java_library_attrs = {
diff --git a/tools/build_rules/test_rules.bzl b/tools/build_rules/test_rules.bzl
index 791bb67..57526f9 100644
--- a/tools/build_rules/test_rules.bzl
+++ b/tools/build_rules/test_rules.bzl
@@ -41,7 +41,7 @@
         content = "cat " + dat.path + " ; echo",
         is_executable = True,
     )
-    return struct(runfiles = ctx.runfiles([exe, dat]))
+    return [DefaultInfo(runfiles = ctx.runfiles([exe, dat]))]
 
 def _successful_test_impl(ctx):
     return success_target(ctx, ctx.attr.msg)
@@ -79,7 +79,7 @@
         content = "(cat " + dat.short_path + " ; echo ) >&2 ; exit 1",
         is_executable = True,
     )
-    return struct(runfiles = ctx.runfiles([exe, dat]))
+    return [DefaultInfo(runfiles = ctx.runfiles([exe, dat]))]
 
 def _failed_test_impl(ctx):
     return failure_target(ctx, ctx.attr.msg)
@@ -250,7 +250,7 @@
             ctx.actions.write(output = file_, content = v)
         script = "\n".join(commands + ["true"])
         ctx.actions.write(output = exe, content = script, is_executable = True)
-        return struct(runfiles = ctx.runfiles([exe] + files))
+        return [DefaultInfo(runfiles = ctx.runfiles([exe] + files))]
     else:
         return success_target(ctx, "success")
 
@@ -287,7 +287,7 @@
             content = "diff -u %s %s" % (dat.short_path, file_.short_path),
             is_executable = True,
         )
-        return struct(runfiles = ctx.runfiles([exe, dat, file_]))
+        return [DefaultInfo(runfiles = ctx.runfiles([exe, dat, file_]))]
     if matches != -1:
         script = "[ %s == $(grep -c %s %s) ]" % (
             matches,
@@ -301,7 +301,7 @@
         content = script,
         is_executable = True,
     )
-    return struct(runfiles = ctx.runfiles([exe, file_]))
+    return [DefaultInfo(runfiles = ctx.runfiles([exe, file_]))]
 
 file_test = rule(
     attrs = {