diff options
author | 2018-05-01 10:32:30 -0700 | |
---|---|---|
committer | 2018-05-01 10:33:46 -0700 | |
commit | 2415cb4ab69ec05d2e7ba15c75a20e2d2da2fc90 (patch) | |
tree | 33a8c5810973f58ff8c084b14078be87cc2bf5ad /src/main/java/com/google/devtools/build/lib/rules/objc | |
parent | 2e4f703d361823fa12df9ddb57f21189743b2c74 (diff) |
Use a new pattern for builtin Provider objects with @SkylarkCallable.
This deprecates the old NativeProvider pattern.
The new pattern is demonstrated using AppleStaticLibraryInfo.
RELNOTES: None.
PiperOrigin-RevId: 194956883
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/AppleSkylarkCommon.java | 2 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java | 43 |
2 files changed, 40 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java index f073292516..9adf309989 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java @@ -254,7 +254,7 @@ public class AppleSkylarkCommon { + "</pre>", structField = true ) - public Provider getAppleStaticLibraryProvider() { + public AppleStaticLibraryInfo.Provider getAppleStaticLibraryProvider() { return AppleStaticLibraryInfo.SKYLARK_CONSTRUCTOR; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java index 2280bd7487..4fe9844e4c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java @@ -15,11 +15,14 @@ package com.google.devtools.build.lib.rules.objc; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.packages.BuiltinProvider; import com.google.devtools.build.lib.packages.NativeInfo; -import com.google.devtools.build.lib.packages.NativeProvider; +import com.google.devtools.build.lib.skylarkinterface.Param; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; +import com.google.devtools.build.lib.syntax.EvalException; /** * Provider containing information regarding multi-architecture Apple static libraries, as is @@ -46,9 +49,7 @@ public final class AppleStaticLibraryInfo extends NativeInfo { public static final String SKYLARK_NAME = "AppleStaticLibrary"; /** Skylark constructor and identifier for AppleStaticLibraryInfo. */ - public static final NativeProvider<AppleStaticLibraryInfo> SKYLARK_CONSTRUCTOR = - new NativeProvider<AppleStaticLibraryInfo>( - AppleStaticLibraryInfo.class, SKYLARK_NAME) {}; + public static final Provider SKYLARK_CONSTRUCTOR = new Provider(); private final Artifact multiArchArchive; private final ObjcProvider depsObjcProvider; @@ -87,4 +88,38 @@ public final class AppleStaticLibraryInfo extends NativeInfo { public ObjcProvider getDepsObjcProvider() { return depsObjcProvider; } + + /** + * Provider class for {@link AppleStaticLibraryInfo} objects. + */ + public static class Provider extends BuiltinProvider<AppleStaticLibraryInfo> { + private Provider() { + super(SKYLARK_NAME, AppleStaticLibraryInfo.class); + } + + @SkylarkCallable( + name = SKYLARK_NAME, + doc = "The <code>AppleStaticLibrary</code> constructor.", + parameters = { + @Param( + name = "archive", + type = Artifact.class, + named = true, + positional = false, + doc = "Multi-architecture archive (.a) representing a static library"), + @Param( + name = "objc", + type = ObjcProvider.class, + named = true, + positional = false, + doc = "A provider which contains information about the transitive dependencies " + + "linked into the archive."), + }, + selfCall = true) + @SkylarkConstructor(objectType = AppleStaticLibraryInfo.class) + public AppleStaticLibraryInfo appleStaticLibrary( + Artifact archive, ObjcProvider objcProvider) throws EvalException { + return new AppleStaticLibraryInfo(archive, objcProvider); + } + } } |