[7.4.1] Add missing private API for tokenizing javacopts (#24153)
PiperOrigin-RevId: 587638256
Change-Id: I4aa6b9c2009323e9c4adc7f6e8b5e335a637ed1c
(cherry picked from commit fb446e6366b50a93f794118cb3b77bb55f189325)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaStarlarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaStarlarkCommon.java
index 015c589..68ab4a3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaStarlarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaStarlarkCommon.java
@@ -472,6 +472,12 @@
}
}
+ @Override
+ public Sequence<?> tokenizeJavacOpts(Sequence<?> opts) throws EvalException {
+ return StarlarkList.immutableCopyOf(
+ JavaHelper.tokenizeJavaOptions(Sequence.noneableCast(opts, String.class, "opts")));
+ }
+
static boolean isInstanceOfProvider(Object obj, Provider provider) {
if (obj instanceof NativeInfo) {
return ((NativeInfo) obj).getProvider().getKey().equals(provider.getKey());
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCommonApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCommonApi.java
index 4dbe47f..69e66f9 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCommonApi.java
@@ -751,4 +751,10 @@
Sequence<?> expandJavaOpts(
StarlarkRuleContextT ctx, String attr, boolean tokenize, boolean execPaths)
throws EvalException, InterruptedException;
+
+ @StarlarkMethod(
+ name = "tokenize_javacopts",
+ documented = false,
+ parameters = {@Param(name = "opts")})
+ Sequence<?> tokenizeJavacOpts(Sequence<?> opts) throws EvalException, InterruptedException;
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaStarlarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaStarlarkApiTest.java
index 4f705ac..b1821d5 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaStarlarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaStarlarkApiTest.java
@@ -3752,6 +3752,7 @@
"{api: _incompatible_depset_for_java_output_source_jars}",
"{api: wrap_java_info}",
"{api: intern_javac_opts}",
+ "{api: tokenize_javacopts}",
})
public void testJavaCommonPrivateApis_areNotVisibleToPublicStarlark(String api) throws Exception {
// validate that this api is present on the module, so this test fails when the API is deleted