diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build')
2 files changed, 18 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java index ce0f094c97..e7d487fb4f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java @@ -110,7 +110,7 @@ public class PrepareDepsOfTargetsUnderDirectoryFunction implements SkyFunction { } builder.put(prepDepsKey.getRecursivePkgKey().getRootedPath(), packagesInSubdirectory); } - return new PrepareDepsOfTargetsUnderDirectoryValue(visitor.isDirectoryPackage(), + return PrepareDepsOfTargetsUnderDirectoryValue.of(visitor.isDirectoryPackage(), builder.build()); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java index 7984b6708e..c98dac6f7c 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java @@ -52,11 +52,27 @@ import java.util.Objects; public final class PrepareDepsOfTargetsUnderDirectoryValue implements SkyValue { public static final PrepareDepsOfTargetsUnderDirectoryValue EMPTY = new PrepareDepsOfTargetsUnderDirectoryValue(false, ImmutableMap.<RootedPath, Boolean>of()); + public static final PrepareDepsOfTargetsUnderDirectoryValue EMPTY_DIRECTORY_PACKAGE = + new PrepareDepsOfTargetsUnderDirectoryValue(true, ImmutableMap.<RootedPath, Boolean>of()); + + public static final PrepareDepsOfTargetsUnderDirectoryValue of(boolean isDirectoryPackage, + ImmutableMap<RootedPath, Boolean> subdirectoryTransitivelyContainsPackages) { + if (subdirectoryTransitivelyContainsPackages.isEmpty()) { + if (isDirectoryPackage) { + return EMPTY_DIRECTORY_PACKAGE; + } else { + return EMPTY; + } + } else { + return new PrepareDepsOfTargetsUnderDirectoryValue( + isDirectoryPackage, subdirectoryTransitivelyContainsPackages); + } + } private final boolean isDirectoryPackage; private final ImmutableMap<RootedPath, Boolean> subdirectoryTransitivelyContainsPackages; - public PrepareDepsOfTargetsUnderDirectoryValue(boolean isDirectoryPackage, + private PrepareDepsOfTargetsUnderDirectoryValue(boolean isDirectoryPackage, ImmutableMap<RootedPath, Boolean> subdirectoryTransitivelyContainsPackages) { this.isDirectoryPackage = isDirectoryPackage; this.subdirectoryTransitivelyContainsPackages = Preconditions.checkNotNull( |