Verify (in test) that ObjcProvider keys are either exposed to skylark or explicitly omitted
--
MOS_MIGRATED_REVID=137547748
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 df0d955..f1a8d08 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 @@
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 @@
/** All keys in ObjcProvider that will be passed in the corresponding Skylark provider. */
static final ImmutableList<Key<?>> KEYS_FOR_SKYLARK =
ImmutableList.<Key<?>>of(
- LIBRARY,
- IMPORTED_LIBRARY,
- JRE_LIBRARY,
- LINKED_BINARY,
- FORCE_LOAD_LIBRARY,
- HEADER,
- SOURCE,
- DEFINE,
ASSET_CATALOG,
- SDK_DYLIB,
- SDK_FRAMEWORK,
- WEAK_SDK_FRAMEWORK,
- XCDATAMODEL,
- MODULE_MAP,
- MERGE_ZIP,
- STATIC_FRAMEWORK_FILE,
+ BUNDLE_FILE,
+ BUNDLE_IMPORT_DIR,
+ DEFINE,
DYNAMIC_FRAMEWORK_FILE,
DEBUG_SYMBOLS,
DEBUG_SYMBOLS_PLIST,
- STORYBOARD,
- XIB,
- STRINGS,
- LINKOPT,
- LINK_INPUTS,
- J2OBJC_LIBRARY,
- ROOT_MERGE_ZIP,
- INCLUDE,
- INCLUDE_SYSTEM,
+ EXPORTED_DEBUG_ARTIFACTS,
+ FRAMEWORK_DIR,
+ FRAMEWORK_SEARCH_PATH_ONLY,
+ FORCE_LOAD_LIBRARY,
GENERAL_RESOURCE_DIR,
GENERAL_RESOURCE_FILE,
- BUNDLE_FILE,
- BUNDLE_IMPORT_DIR,
- XCASSETS_DIR,
- FRAMEWORK_DIR,
- MULTI_ARCH_LINKED_BINARIES,
+ HEADER,
+ IMPORTED_LIBRARY,
+ INCLUDE,
+ INCLUDE_SYSTEM,
+ J2OBJC_LIBRARY,
+ JRE_LIBRARY,
+ LIBRARY,
+ LINK_INPUTS,
+ LINKED_BINARY,
+ LINKMAP_FILE,
+ LINKOPT,
+ MERGE_ZIP,
+ MODULE_MAP,
+ MULTI_ARCH_DYNAMIC_LIBRARIES,
MULTI_ARCH_LINKED_ARCHIVES,
- MULTI_ARCH_DYNAMIC_LIBRARIES);
+ MULTI_ARCH_LINKED_BINARIES,
+ ROOT_MERGE_ZIP,
+ SDK_DYLIB,
+ SDK_FRAMEWORK,
+ SOURCE,
+ STATIC_FRAMEWORK_FILE,
+ STORYBOARD,
+ STRINGS,
+ WEAK_SDK_FRAMEWORK,
+ XCASSETS_DIR,
+ 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 @@
}
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 @@
}
return this;
}
-
+
/**
* Add all keys and values from the given provider, but propagate any normally-propagated items
* only to direct dependers of this ObjcProvider.