aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar Jon Brandvein <brandjon@google.com>2017-01-20 04:23:37 +0000
committerGravatar Vladimir Moskva <vladmos@google.com>2017-01-20 12:20:55 +0000
commit3cfeeec080e8c837dbc118bc8b6005f01d30a688 (patch)
tree09bdb16a74519f0014281be9615a7a14637c9556 /src/main/java/com/google/devtools/build/lib/rules/objc
parentafd34e072556b1565b43ebc2ba25980f595166c4 (diff)
Refactor SkylarkNestedSet to not implement Iterable
This is not intended to be a user-visible semantic change, aside from error messages. This is to help avoid unintentional flattening of depsets, and to narrow down the number of call sites where this can occur, to help us print warning/deprecation messages. EvalUtils#toIterable will now return an ImmutableList in place of SkylarkNestedSet. This should be ok since the caller shouldn't be relying on the result being a Skylark-safe type. Code that takes Iterable because it accepts either a list or set, can instead be changed to take Object and use EvalUtils#toIterableStrict for validation. Note that NestedSet still implements Iterable, so native code can still easily and accidentally flatten sets. -- PiperOrigin-RevId: 145044023 MOS_MIGRATED_REVID=145044023
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java
index 7e3b443119..ee8a37c35f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java
@@ -94,7 +94,7 @@ public class ObjcProviderSkylarkConverters {
@Override
public Iterable<?> valueForJava(Key<?> javaKey, Object skylarkValue) {
validateTypes(skylarkValue, javaKey.getType(), javaKey.getSkylarkKeyName());
- return (SkylarkNestedSet) skylarkValue;
+ return ((SkylarkNestedSet) skylarkValue).toCollection();
}
}
@@ -118,7 +118,7 @@ public class ObjcProviderSkylarkConverters {
public Iterable<?> valueForJava(Key<?> javaKey, Object skylarkValue) {
validateTypes(skylarkValue, String.class, javaKey.getSkylarkKeyName());
NestedSetBuilder<PathFragment> result = NestedSetBuilder.stableOrder();
- for (String path : (Iterable<String>) skylarkValue) {
+ for (String path : ((SkylarkNestedSet) skylarkValue).toCollection(String.class)) {
result.add(new PathFragment(path));
}
return result.build();
@@ -145,7 +145,7 @@ public class ObjcProviderSkylarkConverters {
public Iterable<?> valueForJava(Key<?> javaKey, Object skylarkValue) {
validateTypes(skylarkValue, String.class, javaKey.getSkylarkKeyName());
NestedSetBuilder<SdkFramework> result = NestedSetBuilder.stableOrder();
- for (String path : (Iterable<String>) skylarkValue) {
+ for (String path : ((SkylarkNestedSet) skylarkValue).toCollection(String.class)) {
result.add(new SdkFramework(path));
}
return result.build();
@@ -178,7 +178,8 @@ public class ObjcProviderSkylarkConverters {
public Iterable<?> valueForJava(Key<?> javaKey, Object skylarkValue) {
validateTypes(skylarkValue, SkylarkClassObject.class, javaKey.getSkylarkKeyName());
NestedSetBuilder<BundleableFile> result = NestedSetBuilder.stableOrder();
- for (SkylarkClassObject struct : (Iterable<SkylarkClassObject>) skylarkValue) {
+ for (SkylarkClassObject struct :
+ ((SkylarkNestedSet) skylarkValue).toCollection(SkylarkClassObject.class)) {
Artifact artifact;
String path;
try {