Fix the whitelist for java_common.create_provider to apply to the package where
the API is directly used instead of the caller package.

RELNOTES: None.
PiperOrigin-RevId: 242661872
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
index 55c8a4a..0252a45 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
@@ -62,7 +62,7 @@
       checkCallPathInWhitelistedPackages(
           environment.getSemantics(),
           location,
-          environment.getCallerLabel().getPackageFragment().toString());
+          environment.getGlobals().getLabel().getPackageName());
     }
     return JavaInfoBuildHelper.getInstance()
         .create(
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 bd9048d..f3390af 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
@@ -2041,8 +2041,8 @@
 
   @Test
   public void testIncompatibleDisallowLegacyJavaInfoWithFlag() throws Exception {
-    setSkylarkSemanticsOptions("--incompatible_disallow_legacy_javainfo");
     setSkylarkSemanticsOptions(
+        "--incompatible_disallow_legacy_javainfo",
         "--experimental_java_common_create_provider_enabled_packages=java/test");
     scratch.file(
         "java/test/custom_rule.bzl",
@@ -2070,6 +2070,78 @@
     assertThat(getConfiguredTarget("//java/test:custom")).isNotNull();
   }
 
+  @Test
+  public void testIncompatibleDisallowLegacyJavaInfoOtherPackageWithFlag() throws Exception {
+    setSkylarkSemanticsOptions(
+        "--incompatible_disallow_legacy_javainfo",
+        "--experimental_java_common_create_provider_enabled_packages=java/package");
+    scratch.file(
+        "java/package/custom_rule.bzl",
+        "def _impl(ctx):",
+        "  jar = ctx.file.jar",
+        "  java_common.create_provider(",
+        "      compile_time_jars = [jar],",
+        "      transitive_compile_time_jars = [jar],",
+        "      runtime_jars = [jar],",
+        "      use_ijar = False,",
+        "  )",
+        "custom_rule = rule(",
+        "  implementation = _impl,",
+        "  attrs = {",
+        "    'jar': attr.label(allow_files = True, single_file = True),",
+        "  }",
+        ")");
+    scratch.file(
+        "java/package/BUILD",
+        "load('//third_party/bazel_skylib:bzl_library.bzl', 'bzl_library')",
+        "bzl_library(name = 'custom_rule', srcs = ['custom_rule.bzl'])");
+    scratch.file(
+        "java/otherpackage/BUILD",
+        "load('//java/package:custom_rule.bzl', 'custom_rule')",
+        "custom_rule(",
+        "  name = 'custom',",
+        "  jar = 'lib.jar'",
+        ")");
+    assertThat(getConfiguredTarget("//java/otherpackage:custom")).isNotNull();
+  }
+
+  @Test
+  public void testIncompatibleDisallowLegacyJavaInfoOtherPackageFailsWithFlag() throws Exception {
+    setSkylarkSemanticsOptions(
+        "--incompatible_disallow_legacy_javainfo",
+        "--experimental_java_common_create_provider_enabled_packages=java/otherpackage");
+    scratch.file(
+        "java/package/custom_rule.bzl",
+        "def _impl(ctx):",
+        "  jar = ctx.file.jar",
+        "  java_common.create_provider(",
+        "      compile_time_jars = [jar],",
+        "      transitive_compile_time_jars = [jar],",
+        "      runtime_jars = [jar],",
+        "      use_ijar = False,",
+        "  )",
+        "custom_rule = rule(",
+        "  implementation = _impl,",
+        "  attrs = {",
+        "    'jar': attr.label(allow_files = True, single_file = True),",
+        "  }",
+        ")");
+    scratch.file(
+        "java/package/BUILD",
+        "load('//third_party/bazel_skylib:bzl_library.bzl', 'bzl_library')",
+        "bzl_library(name = 'custom_rule', srcs = ['custom_rule.bzl'])");
+    checkError(
+        "java/otherpackage",
+        "custom",
+        "java_common.create_provider is deprecated and cannot be used when "
+            + "--incompatible_disallow_legacy_javainfo is set.",
+        "load('//java/package:custom_rule.bzl', 'custom_rule')",
+        "custom_rule(",
+        "  name = 'custom',",
+        "  jar = 'lib.jar'",
+        ")");
+  }
+
   private static boolean javaCompilationArgsHaveTheSameParent(
       JavaCompilationArgsProvider args, JavaCompilationArgsProvider otherArgs) {
     if (!nestedSetsOfArtifactHaveTheSameParent(