Have PackageFactory#afterDoneLoadingPackage call PackageValidator.validate before it calls Package.Builder.Helper#onLoadingComplete.
This fixes a hypothetical bug where Package.Builder.Helper#onLoadingComplete implementations if rightfully assuming the Package had successfully been loaded when it fact it hadn't.
While I'm here, now that this hypothetical bug has been fixed, I renamed #onLoadingComplete to #onLoadingCompleteAndSuccessful to emphasize that the assumption mentioned above is a legit one to make.
RELNOTES:
PiperOrigin-RevId: 301627063
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Package.java b/src/main/java/com/google/devtools/build/lib/packages/Package.java
index 9736d0f..fd2d66f 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Package.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Package.java
@@ -779,8 +779,8 @@
Package createFreshPackage(PackageIdentifier packageId, String runfilesPrefix);
/**
- * Called after {@link com.google.devtools.build.lib.skyframe.PackageFunction} is completely
- * done loading the given {@link Package}.
+ * Called after {@link com.google.devtools.build.lib.skyframe.PackageFunction} has
+ * successfully loaded the given {@link Package}.
*
* @param pkg the loaded {@link Package}
* @param starlarkSemantics are the semantics used to load the package
@@ -790,7 +790,8 @@
* and parse the package's BUILD file, nor the time to read, parse, or evaluate any of the
* transitively loaded .bzl files.
*/
- void onLoadingComplete(Package pkg, StarlarkSemantics starlarkSemantics, long loadTimeNanos);
+ void onLoadingCompleteAndSuccessful(
+ Package pkg, StarlarkSemantics starlarkSemantics, long loadTimeNanos);
}
/** {@link Helper} that simply calls the {@link Package} constructor. */
@@ -806,7 +807,7 @@
}
@Override
- public void onLoadingComplete(
+ public void onLoadingCompleteAndSuccessful(
Package pkg, StarlarkSemantics starlarkSemantics, long loadTimeMs) {}
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
index 4a90723..b59ab85 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
@@ -664,8 +664,8 @@
long loadTimeNanos,
ExtendedEventHandler eventHandler)
throws InvalidPackageException {
- packageBuilderHelper.onLoadingComplete(pkg, starlarkSemantics, loadTimeNanos);
packageValidator.validate(pkg, eventHandler);
+ packageBuilderHelper.onLoadingCompleteAndSuccessful(pkg, starlarkSemantics, loadTimeNanos);
}
/**
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/BazelPackageBuilderHelperForTesting.java b/src/test/java/com/google/devtools/build/lib/testutil/BazelPackageBuilderHelperForTesting.java
index 908c713..4ea0fb5 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/BazelPackageBuilderHelperForTesting.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/BazelPackageBuilderHelperForTesting.java
@@ -49,7 +49,7 @@
}
@Override
- public void onLoadingComplete(
+ public void onLoadingCompleteAndSuccessful(
Package pkg, StarlarkSemantics starlarkSemantics, long loadTimeNanos) {
sanityCheckBazelPackageLoader(pkg, ruleClassProvider, starlarkSemantics);
}