aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java
diff options
context:
space:
mode:
authorGravatar Damien Martin-Guillerez <dmarting@google.com>2015-11-27 16:22:59 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-11-30 18:30:08 +0000
commit8ca065c2ae941309b53f95313a68e585ecc70560 (patch)
tree02c56b462dfd0edd66d9a139b58a3ba3c3106043 /src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java
parent31a9149d4a347d3a3d4b6407b18e256ad061ab3a (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.java43
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));
}
}