aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java b/src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java
index 1ff08835a2..3d324b21bf 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BuildFileAST.java
@@ -59,6 +59,30 @@ public class BuildFileAST extends ASTNode {
setLocation(result.location);
}
+ private BuildFileAST(
+ ImmutableList<Statement> stmts,
+ boolean containsErrors,
+ String contentHashCode,
+ Location location) {
+ this.stmts = stmts;
+ this.containsErrors = containsErrors;
+ this.contentHashCode = contentHashCode;
+ this.comments = ImmutableList.of();
+ this.setLocation(location);
+ }
+
+ /**
+ * Extract a subtree containing only statements from {@code firstStatement} (included) up to
+ * {@code lastStatement} excluded.
+ */
+ public BuildFileAST subTree(int firstStatement, int lastStatement) {
+ return new BuildFileAST(
+ stmts.subList(firstStatement, lastStatement),
+ containsErrors,
+ null,
+ stmts.get(firstStatement).getLocation());
+ }
+
/** Collects all load statements */
private ImmutableList<SkylarkImport> fetchLoads(List<Statement> stmts) {
ImmutableList.Builder<SkylarkImport> imports = new ImmutableList.Builder<>();