aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-07-10 17:15:27 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-07-10 17:45:04 +0200
commit77baa4c372ae014db8e17f6d3c60bd88597853d9 (patch)
tree3ca2c63943782b506b0f19f5b7f7465909723590 /src/main/java/com/google/devtools/build/lib/rules/objc
parent45bd34e747d13fc2bebdc849a11b4b952da5d8a6 (diff)
Make native declared providers type-safe.
RELNOTES: None. PiperOrigin-RevId: 161395570
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/Watch2ExtensionSupport.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java6
11 files changed, 36 insertions, 37 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
index 40eaeb8421..6bbfc3bbac 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
@@ -259,9 +259,8 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
private static Iterable<ObjcProvider> getDylibProviders(RuleContext ruleContext) {
ImmutableList.Builder<ObjcProvider> dylibProviders = ImmutableList.builder();
Iterable<AppleDynamicFrameworkProvider> frameworkProviders =
- ruleContext.getPrerequisites(DYLIBS_ATTR_NAME, Mode.TARGET,
- AppleDynamicFrameworkProvider.SKYLARK_CONSTRUCTOR.getKey(),
- AppleDynamicFrameworkProvider.class);
+ ruleContext.getPrerequisites(
+ DYLIBS_ATTR_NAME, Mode.TARGET, AppleDynamicFrameworkProvider.SKYLARK_CONSTRUCTOR);
for (AppleDynamicFrameworkProvider frameworkProvider : frameworkProviders) {
dylibProviders.add(frameworkProvider.getDepsObjcProvider());
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
index eadabb9c57..10ff0d389d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
@@ -18,7 +18,6 @@ import com.google.common.collect.Maps;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import java.util.HashMap;
@@ -64,8 +63,9 @@ public final class AppleDebugOutputsProvider extends SkylarkClassObject
public static final String SKYLARK_NAME = "AppleDebugOutputs";
/** Skylark constructor and identifier for AppleDebugOutputsProvider. */
- public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR =
- new NativeClassObjectConstructor(SKYLARK_NAME) { };
+ public static final NativeClassObjectConstructor<AppleDebugOutputsProvider> SKYLARK_CONSTRUCTOR =
+ new NativeClassObjectConstructor<AppleDebugOutputsProvider>(
+ AppleDebugOutputsProvider.class, SKYLARK_NAME) {};
/**
* Creates a new provider instance.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java
index 76e04d684f..7afae2ef62 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java
@@ -17,7 +17,6 @@ package com.google.devtools.build.lib.rules.objc;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
-import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
@@ -37,9 +36,10 @@ public final class AppleDylibBinaryProvider extends SkylarkClassObject
/** Skylark name for the AppleDylibBinaryProvider. */
public static final String SKYLARK_NAME = "AppleDylibBinary";
- /** Skylark constructor and identifier for AppleDylibBinaryProvider. */
- public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR =
- new NativeClassObjectConstructor(SKYLARK_NAME) { };
+ /** Skylark constructor and identifier for AppleDylibBinaryProvider. */
+ public static final NativeClassObjectConstructor<AppleDylibBinaryProvider> SKYLARK_CONSTRUCTOR =
+ new NativeClassObjectConstructor<AppleDylibBinaryProvider>(
+ AppleDylibBinaryProvider.class, SKYLARK_NAME) {};
private final Artifact dylibBinary;
private final ObjcProvider depsObjcProvider;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java
index 848058efc4..2ab05d6dac 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java
@@ -18,7 +18,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
-import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -43,9 +42,11 @@ public final class AppleDynamicFrameworkProvider extends SkylarkClassObject
/** Skylark name for the AppleDynamicFrameworkProvider. */
public static final String SKYLARK_NAME = "AppleDynamicFramework";
- /** Skylark constructor and identifier for AppleDynamicFrameworkProvider. */
- public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR =
- new NativeClassObjectConstructor(SKYLARK_NAME) {};
+ /** Skylark constructor and identifier for AppleDynamicFrameworkProvider. */
+ public static final NativeClassObjectConstructor<AppleDynamicFrameworkProvider>
+ SKYLARK_CONSTRUCTOR =
+ new NativeClassObjectConstructor<AppleDynamicFrameworkProvider>(
+ AppleDynamicFrameworkProvider.class, SKYLARK_NAME) {};
/** Field name for the dylib binary artifact of the dynamic framework. */
public static final String DYLIB_BINARY_FIELD_NAME = "binary";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java
index 24002a4736..347b1111d3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java
@@ -17,7 +17,6 @@ package com.google.devtools.build.lib.rules.objc;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
-import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
@@ -37,9 +36,11 @@ public final class AppleExecutableBinaryProvider extends SkylarkClassObject
/** Skylark name for the AppleExecutableBinaryProvider. */
public static final String SKYLARK_NAME = "AppleExecutableBinary";
- /** Skylark constructor and identifier for AppleExecutableBinaryProvider. */
- public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR =
- new NativeClassObjectConstructor(SKYLARK_NAME) { };
+ /** Skylark constructor and identifier for AppleExecutableBinaryProvider. */
+ public static final NativeClassObjectConstructor<AppleExecutableBinaryProvider>
+ SKYLARK_CONSTRUCTOR =
+ new NativeClassObjectConstructor<AppleExecutableBinaryProvider>(
+ AppleExecutableBinaryProvider.class, SKYLARK_NAME) {};
private final Artifact appleExecutableBinary;
private final ObjcProvider depsObjcProvider;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java
index f271b73617..cd014bcf43 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java
@@ -17,7 +17,6 @@ package com.google.devtools.build.lib.rules.objc;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
-import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
@@ -34,9 +33,11 @@ public final class AppleLoadableBundleBinaryProvider extends SkylarkClassObject
/** Skylark name for the AppleLoadableBundleBinary. */
public static final String SKYLARK_NAME = "AppleLoadableBundleBinary";
- /** Skylark constructor and identifier for AppleLoadableBundleBinary. */
- public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR =
- new NativeClassObjectConstructor(SKYLARK_NAME) { };
+ /** Skylark constructor and identifier for AppleLoadableBundleBinary. */
+ public static final NativeClassObjectConstructor<AppleLoadableBundleBinaryProvider>
+ SKYLARK_CONSTRUCTOR =
+ new NativeClassObjectConstructor<AppleLoadableBundleBinaryProvider>(
+ AppleLoadableBundleBinaryProvider.class, SKYLARK_NAME) {};
private final Artifact appleLoadableBundleBinary;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java
index e4c477fb53..6cb613f973 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java
@@ -17,7 +17,6 @@ package com.google.devtools.build.lib.rules.objc;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
-import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
@@ -38,9 +37,10 @@ public final class AppleStaticLibraryProvider extends SkylarkClassObject
/** Skylark name for the AppleStaticLibraryProvider. */
public static final String SKYLARK_NAME = "AppleStaticLibrary";
- /** Skylark constructor and identifier for AppleStaticLibraryProvider. */
- public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR =
- new NativeClassObjectConstructor(SKYLARK_NAME) { };
+ /** Skylark constructor and identifier for AppleStaticLibraryProvider. */
+ public static final NativeClassObjectConstructor<AppleStaticLibraryProvider> SKYLARK_CONSTRUCTOR =
+ new NativeClassObjectConstructor<AppleStaticLibraryProvider>(
+ AppleStaticLibraryProvider.class, SKYLARK_NAME) {};
private final Artifact multiArchArchive;
private final ObjcProvider depsObjcProvider;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java
index 79e62b8064..d22fdca486 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java
@@ -19,7 +19,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
@@ -78,8 +77,8 @@ public final class IosDeviceProvider extends SkylarkClassObject implements Trans
public static final String SKYLARK_NAME = "IosDevice";
/** Skylark constructor and identifier for the IosDeviceProvider. */
- public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR =
- new NativeClassObjectConstructor(SKYLARK_NAME) { };
+ public static final NativeClassObjectConstructor<IosDeviceProvider> SKYLARK_CONSTRUCTOR =
+ new NativeClassObjectConstructor<IosDeviceProvider>(IosDeviceProvider.class, SKYLARK_NAME) {};
private final String type;
private final DottedVersion iosVersion;
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 e918abb94a..b040c629ff 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
@@ -30,7 +30,6 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
@@ -507,8 +506,8 @@ public final class ObjcProvider extends SkylarkClassObject
// Items which should be passed to strictly direct dependers, but not transitive dependers.
private final ImmutableMap<Key<?>, NestedSet<?>> strictDependencyItems;
- private static final ClassObjectConstructor OBJC_PROVIDER =
- new NativeClassObjectConstructor("objc_provider") {
+ private static final NativeClassObjectConstructor<ObjcProvider> OBJC_PROVIDER =
+ new NativeClassObjectConstructor<ObjcProvider>(ObjcProvider.class, "objc_provider") {
@Override
public String getErrorMessageFormatForInstances() {
return "ObjcProvider field %s could not be instantiated";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/Watch2ExtensionSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/Watch2ExtensionSupport.java
index f50580ce6f..a73ecaeafb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/Watch2ExtensionSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/Watch2ExtensionSupport.java
@@ -180,8 +180,7 @@ public class Watch2ExtensionSupport {
Iterable<ObjcProvider> binaryDependencies() {
TransitiveInfoCollection info = ruleContext.getPrerequisite("binary", Mode.TARGET);
AppleExecutableBinaryProvider binaryProvider =
- (AppleExecutableBinaryProvider) info.get(
- AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR.getKey());
+ info.get(AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR);
return ImmutableList.of(binaryProvider.getDepsObjcProvider());
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java
index e25c88c154..df27f2e0b0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java
@@ -18,7 +18,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -44,8 +43,9 @@ public final class XcTestAppProvider extends SkylarkClassObject
return XCTEST_APP_SKYLARK_PROVIDER_NAME;
}
- private static final ClassObjectConstructor XCTEST_APP_PROVIDER =
- new NativeClassObjectConstructor("xctest_app_provider") {
+ private static final NativeClassObjectConstructor<XcTestAppProvider> XCTEST_APP_PROVIDER =
+ new NativeClassObjectConstructor<XcTestAppProvider>(
+ XcTestAppProvider.class, "xctest_app_provider") {
@Override
public String getErrorMessageFormatForInstances() {
return "XcTestAppProvider field %s could not be instantiated";