diff options
author | dslomov <dslomov@google.com> | 2017-07-10 17:15:27 +0200 |
---|---|---|
committer | László Csomor <laszlocsomor@google.com> | 2017-07-10 17:45:04 +0200 |
commit | 77baa4c372ae014db8e17f6d3c60bd88597853d9 (patch) | |
tree | 3ca2c63943782b506b0f19f5b7f7465909723590 /src/main/java/com/google/devtools/build/lib/rules/objc | |
parent | 45bd34e747d13fc2bebdc849a11b4b952da5d8a6 (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')
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"; |