Skip to content

Commit

Permalink
Add nested sets as transitive members in addElementsFromSkylark.
Browse files Browse the repository at this point in the history
RELNOTES: None.
PiperOrigin-RevId: 250731859
  • Loading branch information
Googler authored and copybara-github committed May 30, 2019
1 parent bc6f7cb commit 53decbc
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1129,8 +1129,8 @@ public <E> Builder addAllForDirectDependents(Key<E> key, Iterable<? extends E> 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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand All @@ -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);
}

/**
Expand All @@ -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());
}
}

Expand All @@ -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<PathFragment> result = NestedSetBuilder.stableOrder();
for (String path : ((SkylarkNestedSet) skylarkValue).toCollection(String.class)) {
Expand All @@ -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<SdkFramework> result = NestedSetBuilder.stableOrder();
for (String path : ((SkylarkNestedSet) skylarkValue).toCollection(String.class)) {
Expand Down

0 comments on commit 53decbc

Please sign in to comment.