aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-10-28 20:41:27 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2016-10-31 08:26:53 +0000
commit7597baa83d8c2d20d8110701d2d7f7b2e3696f00 (patch)
tree9c5ee7c365b89579a8d83704141c04f7e2fb2259 /src/main/java/com
parent5abb90d2c0cb5909f78d73adbe071e5001801823 (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.java83
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.