diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java index 95fef27c7e..2de3167e86 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java @@ -800,9 +800,22 @@ public class PackageFunction implements SkyFunction { packageId, packageLocator); Preprocessor.Result preprocessingResult = preprocessCache.getIfPresent(packageId); if (preprocessingResult == null) { - preprocessingResult = replacementSource == null - ? packageFactory.preprocess(packageId, buildFilePath, inputSource, globber) - : Preprocessor.Result.noPreprocessing(replacementSource); + try { + preprocessingResult = + replacementSource == null + ? packageFactory.preprocess(packageId, inputSource, globber) + : Preprocessor.Result.noPreprocessing(replacementSource); + } catch (IOException e) { + env + .getListener() + .handle( + Event.error( + Location.fromFile(buildFilePath), + "preprocessing failed: " + e.getMessage())); + throw new PackageFunctionException( + new BuildFileContainsErrorsException(packageId, "preprocessing failed", e), + Transience.TRANSIENT); + } preprocessCache.put(packageId, preprocessingResult); } |