Introduce --incompatible_depset_is_not_iterable
RELNOTES:
Iterating on a `depset` object is deprecated. If you need an iterable,
call the `.to_list()` method first.
PiperOrigin-RevId: 159672887
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index ba6fd69..a8248ea 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -880,6 +880,26 @@
}
@Test
+ public void testSetIsNotIterable() throws Exception {
+ new SkylarkTest("--incompatible_depset_is_not_iterable=true")
+ .testIfErrorContains("not iterable", "list(depset(['a', 'b']))")
+ .testIfErrorContains("not iterable", "max(depset([1, 2, 3]))")
+ .testIfErrorContains("not iterable", "sorted(depset(['a', 'b']))")
+ .testIfErrorContains("not iterable", "tuple(depset(['a', 'b']))")
+ .testIfErrorContains("not iterable", "[x for x in depset()]");
+ }
+
+ @Test
+ public void testSetIsIterable() throws Exception {
+ new SkylarkTest("--incompatible_depset_is_not_iterable=false")
+ .testStatement("str(list(depset(['a', 'b'])))", "[\"a\", \"b\"]")
+ .testStatement("max(depset([1, 2, 3]))", 3)
+ .testStatement("str(sorted(depset(['b', 'a'])))", "[\"a\", \"b\"]")
+ .testStatement("str(tuple(depset(['a', 'b'])))", "(\"a\", \"b\")")
+ .testStatement("str([x for x in depset()])", "[]");
+ }
+
+ @Test
public void testClassObjectCannotAccessNestedSet() throws Exception {
new SkylarkTest()
.update("mock", new MockClassObject())