aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java
diff options
context:
space:
mode:
authorGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-05 22:32:08 +0000
committerGravatar David Chen <dzc@google.com>2016-02-07 11:33:27 +0000
commit5e95a46074fa011461f58cb04521e4b7c2a5f3d5 (patch)
treeb5f601749a3bb0efd6e07a30d1965628c82f7805 /src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java
parentbc8b5e09ff667c7d0bf7186a7a207629e6d7bad5 (diff)
WorkspaceASTFunction returns a list of ASTs so we can split the AST before load statements
Issue #824 Step 2. -- MOS_MIGRATED_REVID=113986176
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java35
1 files changed, 28 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java
index 96f42dfa71..35479fca31 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java
@@ -14,25 +14,46 @@
package com.google.devtools.build.lib.skyframe;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.syntax.BuildFileAST;
import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
+import java.util.List;
+
/**
- * A SkyValue that stores the parsed WORKSPACE file as an AST.
+ * A SkyValue that stores the parsed WORKSPACE file as a list of AST. Each AST contains the part
+ * of the WORKSPACE file between the first load statement of a series of load statements and the
+ * last statement before the next load statement. As example, the comment indicate where the next
+ * file would be split:
+ *
+ * <p><code>
+ * # First AST
+ * load('//foo:bar.bzl', 'foobar')
+ * foo_bar = 1
+ *
+ * # Second AST
+ * load('//foo:baz.bzl', 'foos')
+ * load('//bar:foo.bzl', 'bars')
+ * foos()
+ * bars()
+ *
+ * # Third AST
+ * load('//:bleh.bzl', 'bleh')
+ * </code>
*/
public class WorkspaceASTValue implements SkyValue {
- private final BuildFileAST ast;
+ private final ImmutableList<BuildFileAST> asts;
- public WorkspaceASTValue(BuildFileAST ast) {
- Preconditions.checkNotNull(ast);
- this.ast = ast;
+ public WorkspaceASTValue(List<BuildFileAST> asts) {
+ Preconditions.checkNotNull(asts);
+ this.asts = ImmutableList.copyOf(asts);
}
- public BuildFileAST getAST() {
- return ast;
+ public ImmutableList<BuildFileAST> getASTs() {
+ return asts;
}
public static SkyKey key(RootedPath path) {