Improve ctx.actions.args() debug print.

It now prints its string representation. Do not use this for anything other than debugging.

Closes #6039.

RELNOTES: None
PiperOrigin-RevId: 211496298
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
index 68f8ee5..be4d487 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
@@ -25,6 +25,7 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.ArtifactRoot;
 import com.google.devtools.build.lib.actions.CommandLine;
+import com.google.devtools.build.lib.actions.CommandLineExpansionException;
 import com.google.devtools.build.lib.actions.ParamFileInfo;
 import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType;
 import com.google.devtools.build.lib.actions.RunfilesSupplier;
@@ -893,6 +894,15 @@
       printer.append("context.args() object");
     }
 
+    @Override
+    public void debugPrint(SkylarkPrinter printer) {
+      try {
+        printer.append(Joiner.on(" ").join(commandLine.build().arguments()));
+      } catch (CommandLineExpansionException e) {
+        printer.append("Cannot expand command line: " + e.getMessage());
+      }
+    }
+
     ImmutableSet<Artifact> getTreeArtifacts() {
       for (Iterable<Object> collection : potentialTreeArtifacts) {
         scanForTreeArtifacts(collection);
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index 264346b..a503c78 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -2859,6 +2859,15 @@
   }
 
   @Test
+  public void testPrintArgs() throws Exception {
+    Args args =
+        (Args)
+            evalRuleContextCode(
+                "args = ruleContext.actions.args()", "args.add_all(['--foo', '--bar'])", "args");
+    assertThat(Printer.debugPrint(args)).isEqualTo("--foo --bar");
+  }
+
+  @Test
   public void testDirectoryInArgs() throws Exception {
     setSkylarkSemanticsOptions("--incompatible_expand_directories");
     SkylarkList<?> result =