aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/docgen/skylark
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/docgen/skylark
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/docgen/skylark')
-rw-r--r--src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java5
-rw-r--r--src/main/java/com/google/devtools/build/docgen/skylark/SkylarkModuleDoc.java20
2 files changed, 20 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java
index 60c19874fd..95f740e002 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java
@@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkInterfaceUtils;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature;
import com.google.devtools.build.lib.syntax.EvalUtils;
@@ -69,8 +70,8 @@ abstract class SkylarkDoc {
return "<a class=\"anchor\" href=\"" + TOP_LEVEL_ID + ".html#None\">None</a>";
} else if (type.equals(NestedSet.class)) {
return "<a class=\"anchor\" href=\"depset.html\">depset</a>";
- } else if (type.isAnnotationPresent(SkylarkModule.class)) {
- SkylarkModule module = type.getAnnotation(SkylarkModule.class);
+ } else if (SkylarkInterfaceUtils.getSkylarkModule(type) != null) {
+ SkylarkModule module = SkylarkInterfaceUtils.getSkylarkModule(type);
if (module.documented()) {
return String.format("<a class=\"anchor\" href=\"%1$s.html\">%1$s</a>",
module.name());
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkModuleDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkModuleDoc.java
index 898c841085..24da2f3e96 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkModuleDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkModuleDoc.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.docgen.skylark;
import com.google.common.base.Preconditions;
import com.google.common.collect.HashMultimap;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Multimap;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -25,10 +26,12 @@ import java.util.Collection;
import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;
+import javax.annotation.Nullable;
/**
- * A class representing a Skylark built-in object with its {@link SkylarkSignature} annotation
- * and the {@link SkylarkCallable} methods it might have.
+ * A class representing documentation for a Skylark built-in object with its {@link SkylarkModule}
+ * annotation and with the {@link SkylarkCallable} methods and {@link SkylarkSignature} fields it
+ * documents.
*/
public final class SkylarkModuleDoc extends SkylarkDoc {
private final SkylarkModule module;
@@ -37,6 +40,7 @@ public final class SkylarkModuleDoc extends SkylarkDoc {
private final Multimap<String, SkylarkJavaMethodDoc> javaMethods;
private TreeMap<String, SkylarkMethodDoc> methodMap;
private final String title;
+ @Nullable private SkylarkJavaMethodDoc javaConstructor;
public SkylarkModuleDoc(SkylarkModule module, Class<?> classObject) {
this.module = Preconditions.checkNotNull(
@@ -74,6 +78,12 @@ public final class SkylarkModuleDoc extends SkylarkDoc {
return classObject;
}
+ public void setConstructor(SkylarkJavaMethodDoc method) {
+ Preconditions.checkState(javaConstructor == null);
+ javaConstructor = method;
+ methodMap.put(method.getName(), method);
+ }
+
public void addMethod(SkylarkBuiltinMethodDoc method) {
methodMap.put(method.getName(), method);
builtinMethodMap.put(method.getName(), method);
@@ -114,7 +124,11 @@ public final class SkylarkModuleDoc extends SkylarkDoc {
}
public Collection<SkylarkJavaMethodDoc> getJavaMethods() {
- return javaMethods.values();
+ ImmutableList.Builder<SkylarkJavaMethodDoc> returnedMethods = ImmutableList.builder();
+ if (javaConstructor != null) {
+ returnedMethods.add(javaConstructor);
+ }
+ return returnedMethods.addAll(javaMethods.values()).build();
}
public Collection<SkylarkMethodDoc> getMethods() {