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/docgen/skylark | |
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/docgen/skylark')
-rw-r--r-- | src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java | 5 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/docgen/skylark/SkylarkModuleDoc.java | 20 |
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() { |