aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-09-05 09:44:48 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-09-06 15:38:34 +0000
commit5fd7da5b801a929c669b58322ce5f730b26818fd (patch)
tree77301bf5c9dc40e0f784f8dec902594de368bc3c /src/main/java/com/google/devtools/build/lib/syntax
parentab64e592fe5f5fb2e5dd2996b72c75416b2de721 (diff)
Better API for creating immutable Skylark lists.
-- MOS_MIGRATED_REVID=132226460
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java18
2 files changed, 11 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
index 0df0aa4336..8706337739 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
@@ -623,7 +623,7 @@ public class MethodLibrary {
};
@SkylarkSignature(name = "splitlines", objectType = StringModule.class,
- returnType = MutableList.class,
+ returnType = SkylarkList.class,
doc =
"Splits the string at line boundaries ('\\n', '\\r\\n', '\\r') "
+ "and returns the result as a list.",
@@ -633,7 +633,7 @@ public class MethodLibrary {
doc = "Whether the line breaks should be included in the resulting list.")})
private static final BuiltinFunction splitLines = new BuiltinFunction("splitlines") {
@SuppressWarnings("unused")
- public MutableList<String> invoke(String self, Boolean keepEnds) throws EvalException {
+ public SkylarkList<String> invoke(String self, Boolean keepEnds) throws EvalException {
List<String> result = new ArrayList<>();
Matcher matcher = SPLIT_LINES_PATTERN.matcher(self);
while (matcher.find()) {
@@ -649,7 +649,7 @@ public class MethodLibrary {
result.add(line);
}
}
- return new MutableList(result);
+ return SkylarkList.createImmutable(result);
}
};
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
index 05cf33b176..de03e0ace5 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
@@ -210,6 +210,13 @@ public abstract class SkylarkList<E> extends MutableCollection<E> implements Lis
return castList(getContentsUnsafe(), type, description);
}
+ /**
+ * Creates immutable SkylarkList with given elements.
+ */
+ public static <E> SkylarkList<E> createImmutable(Iterable<? extends E> contents) {
+ return new MutableList<E>(contents, Mutability.IMMUTABLE);
+ }
+
/** A class for mutable lists. */
@SkylarkModule(
name = "list",
@@ -280,15 +287,6 @@ public abstract class SkylarkList<E> extends MutableCollection<E> implements Lis
}
/**
- * Creates a MutableList from contents.
- * @param contents the contents of the list
- * @return an actually immutable MutableList containing the elements
- */
- public MutableList(Iterable<? extends E> contents) {
- this(contents, Mutability.IMMUTABLE);
- }
-
- /**
* Creates a mutable or immutable MutableList depending on the given {@link Mutability}.
*/
public MutableList(Mutability mutability) {
@@ -427,7 +425,7 @@ public abstract class SkylarkList<E> extends MutableCollection<E> implements Lis
/**
* An empty IMMUTABLE MutableList.
*/
- public static final MutableList EMPTY = new MutableList(Tuple.EMPTY);
+ public static final MutableList EMPTY = new MutableList(Tuple.EMPTY, Mutability.IMMUTABLE);
}
/** An immutable tuple, e.g. in (1, 2, 3) */