diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java index ed12648d64a467..ad82eb25801d3d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java @@ -1129,8 +1129,8 @@ public Builder addAllForDirectDependents(Key key, Iterable t * appropriate SkylarkNestedSet. */ void addElementsFromSkylark(Key key, Object skylarkToAdd) { - Iterable toAdd = ObjcProviderSkylarkConverters.convertToJava(key, skylarkToAdd); - uncheckedAddAll(key, toAdd, this.items); + NestedSet toAdd = ObjcProviderSkylarkConverters.convertToJava(key, skylarkToAdd); + uncheckedAddTransitive(key, toAdd, this.items); if (ObjcProvider.KEYS_FOR_DIRECT.contains(key)) { uncheckedAddAllDirect(key, toAdd, this.directItems); } 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 ef745d601778ae..1cde2ee11aa278 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 @@ -51,10 +51,8 @@ public static Object convertToSkylark(Key javaKey, NestedSet javaValue) { return CONVERTERS.get(javaKey.getType()).valueForSkylark(javaKey, javaValue); } - /** - * Returns a value for a java ObjcProvider given a key and a corresponding skylark value. - */ - public static Iterable convertToJava(Key javaKey, Object skylarkValue) { + /** Returns a value for a java ObjcProvider given a key and a corresponding skylark value. */ + public static NestedSet convertToJava(Key javaKey, Object skylarkValue) { return CONVERTERS.get(javaKey.getType()).valueForJava(javaKey, skylarkValue); } @@ -70,19 +68,13 @@ public static SkylarkNestedSet convertPathFragmentsToSkylark( return SkylarkNestedSet.of(String.class, result.build()); } - /** - * A converter for ObjcProvider values. - */ - private static interface Converter { - /** - * Translates a java ObjcProvider value to a skylark ObjcProvider value. - */ - abstract Object valueForSkylark(Key javaKey, NestedSet javaValue); - - /** - * Translates a skylark ObjcProvider value to a java ObjcProvider value. - */ - abstract Iterable valueForJava(Key javaKey, Object skylarkValue); + /** A converter for ObjcProvider values. */ + private interface Converter { + /** Translates a java ObjcProvider value to a skylark ObjcProvider value. */ + Object valueForSkylark(Key javaKey, NestedSet javaValue); + + /** Translates a skylark ObjcProvider value to a java ObjcProvider value. */ + NestedSet valueForJava(Key javaKey, Object skylarkValue); } /** @@ -97,9 +89,9 @@ public Object valueForSkylark(Key javaKey, NestedSet javaValue) { } @Override - public Iterable valueForJava(Key javaKey, Object skylarkValue) { + public NestedSet valueForJava(Key javaKey, Object skylarkValue) { validateTypes(skylarkValue, javaKey.getType(), javaKey.getSkylarkKeyName()); - return ((SkylarkNestedSet) skylarkValue).toCollection(); + return ((SkylarkNestedSet) skylarkValue).getSet(javaKey.getType()); } } @@ -116,7 +108,7 @@ public Object valueForSkylark(Key javaKey, NestedSet javaValue) { @SuppressWarnings("unchecked") @Override - public Iterable valueForJava(Key javaKey, Object skylarkValue) { + public NestedSet valueForJava(Key javaKey, Object skylarkValue) { validateTypes(skylarkValue, String.class, javaKey.getSkylarkKeyName()); NestedSetBuilder result = NestedSetBuilder.stableOrder(); for (String path : ((SkylarkNestedSet) skylarkValue).toCollection(String.class)) { @@ -143,7 +135,7 @@ public Object valueForSkylark(Key javaKey, NestedSet javaValue) { @SuppressWarnings("unchecked") @Override - public Iterable valueForJava(Key javaKey, Object skylarkValue) { + public NestedSet valueForJava(Key javaKey, Object skylarkValue) { validateTypes(skylarkValue, String.class, javaKey.getSkylarkKeyName()); NestedSetBuilder result = NestedSetBuilder.stableOrder(); for (String path : ((SkylarkNestedSet) skylarkValue).toCollection(String.class)) {