diff options
author | Michajlo Matijkiw <michajlo@google.com> | 2015-10-12 16:24:01 +0000 |
---|---|---|
committer | John Field <jfield@google.com> | 2015-10-13 01:01:28 +0000 |
commit | 945a42de9c73a15f27d603ebef8b8a90a4c0ced8 (patch) | |
tree | 94ac2871d82275368a382f9fdb504d02a25bfb66 /src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java | |
parent | 0a12c0b1630d50bd76ad2a11e192abf94d5855f2 (diff) |
Refactor cycle related skyvalues to use shared empty value
Previously the cycle values (were supposed to) share a common abstract
base class, however usage was inconsistent. Instead refactor to eliminate
the specialized value classes, remove the abstract class, and share a
common empty placeholder value, which should be useful for future/other
current empty values.
--
MOS_MIGRATED_REVID=105217399
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java index 90d976393f..bb0680d6a1 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/FileSymlinkInfiniteExpansionUniquenessFunction.java @@ -13,16 +13,23 @@ // limitations under the License. package com.google.devtools.build.lib.skyframe; +import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.vfs.RootedPath; import com.google.devtools.build.skyframe.SkyFunction; -import com.google.devtools.build.skyframe.SkyValue; +import com.google.devtools.build.skyframe.SkyKey; -/** A {@link SkyFunction} that has the side effect of reporting a file symlink expansion error. */ +/** + * A {@link SkyFunction} that has the side effect of reporting a file symlink expansion error + * exactly once. This is achieved by forcing the same value key for two logically equivalent + * expansion errors (e.g. ['a' -> 'b' -> 'c' -> 'a/nope'] and ['b' -> 'c' -> 'a' -> 'a/nope']), + * and letting Skyframe do its magic. + */ public class FileSymlinkInfiniteExpansionUniquenessFunction extends AbstractChainUniquenessFunction<RootedPath> { - @Override - protected SkyValue getDummyValue() { - return FileSymlinkInfiniteExpansionUniquenessValue.INSTANCE; + + static SkyKey key(ImmutableList<RootedPath> cycle) { + return ChainUniquenessUtils.key( + SkyFunctions.FILE_SYMLINK_INFINITE_EXPANSION_UNIQUENESS, cycle); } @Override |