diff options
author | Laurent Le Brun <laurentlb@google.com> | 2015-03-31 17:13:25 +0000 |
---|---|---|
committer | Laurent Le Brun <laurentlb@google.com> | 2015-03-31 20:12:20 +0000 |
commit | ab0ca1afa5fdb79fdd2d6602c3db20c737fd8491 (patch) | |
tree | dc10c0bb4d9a924caf095282db548348e5178464 /src/main/java/com/google/devtools | |
parent | 81cacd78ec026b1cc5406896bcbcbc116553ed3e (diff) |
Skylark: 'in' works on sets.
--
MOS_MIGRATED_REVID=89977206
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java | 8 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java | 5 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java index 39f220e21c..7b8c2dfdc1 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java @@ -36,9 +36,7 @@ public final class BinaryOperatorExpression extends Expression { private final Operator operator; - public BinaryOperatorExpression(Operator operator, - Expression lhs, - Expression rhs) { + public BinaryOperatorExpression(Operator operator, Expression lhs, Expression rhs) { this.lhs = lhs; this.rhs = rhs; this.operator = operator; @@ -250,6 +248,8 @@ public final class BinaryOperatorExpression extends Expression { return ((Collection<?>) rval).contains(lval); } else if (rval instanceof Map<?, ?>) { return ((Map<?, ?>) rval).containsKey(lval); + } else if (rval instanceof SkylarkNestedSet) { + return ((SkylarkNestedSet) rval).expandedSet().contains(lval); } else if (rval instanceof String) { if (lval instanceof String) { return ((String) rval).contains((String) lval); @@ -259,7 +259,7 @@ public final class BinaryOperatorExpression extends Expression { } } else { throw new EvalException(getLocation(), - "in operator only works on lists, tuples, dictionaries and strings"); + "in operator only works on lists, tuples, sets, dicts and strings"); } } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java index 233cfdd6c8..39441b004f 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Set; import javax.annotation.Nullable; @@ -183,6 +184,10 @@ public final class SkylarkNestedSet implements Iterable<Object> { return (NestedSet<T>) set; } + public Set<?> expandedSet() { + return set.toSet(); + } + // For some reason this cast is unsafe in Java @SuppressWarnings("unchecked") @Override |