diff options
author | Damien Martin-Guillerez <dmarting@google.com> | 2015-11-27 16:22:59 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2015-11-30 18:30:08 +0000 |
commit | 8ca065c2ae941309b53f95313a68e585ecc70560 (patch) | |
tree | 02c56b462dfd0edd66d9a139b58a3ba3c3106043 /src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java | |
parent | 31a9149d4a347d3a3d4b6407b18e256ad061ab3a (diff) |
Enable load() statement in the WORKSPACE file.
RELNOTES[NEW]: Skylark macros are now enabled in WORKSPACE file.
Design document at https://docs.google.com/document/d/1jKbNXOVp2T1zJD_iRnVr8k5D0xZKgO8blMVDlXOksJg/preview
Fixes #337
--
MOS_MIGRATED_REVID=108860301
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java index c298977f5f..3574e2b2e8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java @@ -15,10 +15,14 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.base.Preconditions; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.syntax.Environment.Extension; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; +import java.io.Serializable; +import java.util.Objects; + /** * A value that represents a Skylark import lookup result. The lookup value corresponds to * exactly one Skylark file, identified by an absolute {@link Label} {@link SkyKey} argument. The @@ -55,10 +59,41 @@ public class SkylarkImportLookupValue implements SkyValue { } /** - * Returns a SkyKey to look up {@link Label} {@code importLabel}, which must be an absolute - * label. + * SkyKey for a Skylark import composed of the label of the Skylark extension and wether it is + * loaded from the WORKSPACE file or from a BUILD file. */ - static SkyKey key(Label importLabel) { - return new SkyKey(SkyFunctions.SKYLARK_IMPORTS_LOOKUP, importLabel); + @Immutable + public static final class SkylarkImportLookupKey implements Serializable { + public final Label importLabel; + public final boolean inWorkspace; + + public SkylarkImportLookupKey(Label importLabel, boolean inWorkspace) { + Preconditions.checkNotNull(importLabel); + this.importLabel = importLabel; + this.inWorkspace = inWorkspace; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof SkylarkImportLookupKey)) { + return false; + } + SkylarkImportLookupKey other = (SkylarkImportLookupKey) obj; + return importLabel.equals(other.importLabel) + && inWorkspace == other.inWorkspace; + } + + @Override + public int hashCode() { + return Objects.hash(importLabel, inWorkspace); + } + } + + static SkyKey key(Label importLabel, boolean inWorkspace) { + return new SkyKey( + SkyFunctions.SKYLARK_IMPORTS_LOOKUP, new SkylarkImportLookupKey(importLabel, inWorkspace)); } } |