diff options
author | Chris Parsons <cparsons@google.com> | 2016-10-28 20:41:27 +0000 |
---|---|---|
committer | Laszlo Csomor <laszlocsomor@google.com> | 2016-10-31 08:26:53 +0000 |
commit | 7597baa83d8c2d20d8110701d2d7f7b2e3696f00 (patch) | |
tree | 9c5ee7c365b89579a8d83704141c04f7e2fb2259 /src/main/java/com | |
parent | 5abb90d2c0cb5909f78d73adbe071e5001801823 (diff) |
Verify (in test) that ObjcProvider keys are either exposed to skylark or explicitly omitted
--
MOS_MIGRATED_REVID=137547748
Diffstat (limited to 'src/main/java/com')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java | 83 |
1 files changed, 53 insertions, 30 deletions
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 df0d955a03..f1a8d08135 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 @@ -17,6 +17,7 @@ package com.google.devtools.build.lib.rules.objc; import static com.google.devtools.build.lib.collect.nestedset.Order.LINK_ORDER; import static com.google.devtools.build.lib.collect.nestedset.Order.STABLE_ORDER; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -380,43 +381,65 @@ public final class ObjcProvider extends SkylarkClassObject implements Transitive /** All keys in ObjcProvider that will be passed in the corresponding Skylark provider. */ static final ImmutableList<Key<?>> KEYS_FOR_SKYLARK = ImmutableList.<Key<?>>of( - LIBRARY, + ASSET_CATALOG, + BUNDLE_FILE, + BUNDLE_IMPORT_DIR, + DEFINE, + DYNAMIC_FRAMEWORK_FILE, + DEBUG_SYMBOLS, + DEBUG_SYMBOLS_PLIST, + EXPORTED_DEBUG_ARTIFACTS, + FRAMEWORK_DIR, + FRAMEWORK_SEARCH_PATH_ONLY, + FORCE_LOAD_LIBRARY, + GENERAL_RESOURCE_DIR, + GENERAL_RESOURCE_FILE, + HEADER, IMPORTED_LIBRARY, + INCLUDE, + INCLUDE_SYSTEM, + J2OBJC_LIBRARY, JRE_LIBRARY, + LIBRARY, + LINK_INPUTS, LINKED_BINARY, - FORCE_LOAD_LIBRARY, - HEADER, - SOURCE, - DEFINE, - ASSET_CATALOG, + LINKMAP_FILE, + LINKOPT, + MERGE_ZIP, + MODULE_MAP, + MULTI_ARCH_DYNAMIC_LIBRARIES, + MULTI_ARCH_LINKED_ARCHIVES, + MULTI_ARCH_LINKED_BINARIES, + ROOT_MERGE_ZIP, SDK_DYLIB, SDK_FRAMEWORK, - WEAK_SDK_FRAMEWORK, - XCDATAMODEL, - MODULE_MAP, - MERGE_ZIP, + SOURCE, STATIC_FRAMEWORK_FILE, - DYNAMIC_FRAMEWORK_FILE, - DEBUG_SYMBOLS, - DEBUG_SYMBOLS_PLIST, STORYBOARD, - XIB, STRINGS, - LINKOPT, - LINK_INPUTS, - J2OBJC_LIBRARY, - ROOT_MERGE_ZIP, - INCLUDE, - INCLUDE_SYSTEM, - GENERAL_RESOURCE_DIR, - GENERAL_RESOURCE_FILE, - BUNDLE_FILE, - BUNDLE_IMPORT_DIR, + WEAK_SDK_FRAMEWORK, XCASSETS_DIR, - FRAMEWORK_DIR, - MULTI_ARCH_LINKED_BINARIES, - MULTI_ARCH_LINKED_ARCHIVES, - MULTI_ARCH_DYNAMIC_LIBRARIES); + XCDATAMODEL, + XIB); + + /** + * All keys in ObjcProvider that are explicitly not exposed to skylark. This is used for + * testing and verification purposes to ensure that a conscious decision is made for all keys; + * by default, keys should be exposed to skylark: a comment outlining why a key is omitted + * from skylark should follow each such case. + **/ + @VisibleForTesting + static final ImmutableList<Key<?>> KEYS_NOT_IN_SKYLARK = ImmutableList.<Key<?>>of( + // LibraryToLink not exposed to skylark. + CC_LIBRARY, + // Xcodegen is deprecated. + FORCE_LOAD_FOR_XCODEGEN, + // Flag enum is not exposed to skylark. + FLAG, + // Bundle not exposed to skylark. + NESTED_BUNDLE, + // CppModuleMap is not exposed to skylark. + TOP_LEVEL_MODULE_MAP); /** * Returns the skylark key for the given string, or null if no such key exists or is available @@ -471,7 +494,7 @@ public final class ObjcProvider extends SkylarkClassObject implements Transitive } return builder.build(); } - + /** * All artifacts, bundleable files, etc, that should be propagated to transitive dependers, of * the type specified by {@code key}. @@ -573,7 +596,7 @@ public final class ObjcProvider extends SkylarkClassObject implements Transitive } return this; } - + /** * Add all keys and values from the given provider, but propagate any normally-propagated items * only to direct dependers of this ObjcProvider. |