aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-05-01 10:32:30 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-01 10:33:46 -0700
commit2415cb4ab69ec05d2e7ba15c75a20e2d2da2fc90 (patch)
tree33a8c5810973f58ff8c084b14078be87cc2bf5ad /src/main/java/com/google/devtools/build/lib/rules/objc
parent2e4f703d361823fa12df9ddb57f21189743b2c74 (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.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryInfo.java43
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);
+ }
+ }
}