Fix the documentation of set/depset -- PiperOrigin-RevId: 147456653 MOS_MIGRATED_REVID=147456653
diff --git a/src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java b/src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java index a6f9bb6..2eccf19 100644 --- a/src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java +++ b/src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java
@@ -86,7 +86,10 @@ for (SkylarkModuleDoc builtinObject : builtinModules.values()) { // Check the return type for built-in functions, it can be a module previously not added. for (SkylarkBuiltinMethodDoc builtinMethod : builtinObject.getBuiltinMethods().values()) { - Class<?> type = builtinMethod.getAnnotation().returnType(); + Class<?> type = builtinMethod.getAnnotation().documentationReturnType(); + if (type == Object.class) { + type = builtinMethod.getAnnotation().returnType(); + } if (type.isAnnotationPresent(SkylarkModule.class)) { collectJavaObjects(type.getAnnotation(SkylarkModule.class), type, modules); }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java index ed5f9d6..58eee47 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java
@@ -48,7 +48,7 @@ + "<li><h3 id=\"modules.Target.label\">label</h3><code><a class=\"anchor\" " + "href=\"Label.html\">Label</a> Target.label</code><br>The identifier of the target.</li>" + "<li><h3 id=\"modules.Target.files\">files</h3><code><a class=\"anchor\" " - + "href=\"set.html\">set</a> Target.files </code><br>The set of <a class=\"anchor\" " + + "href=\"depset.html\">depset</a> Target.files </code><br>The set of <a class=\"anchor\" " + "href=\"File.html\">File</a>s produced directly by this target.</li>" + "<li><h3 id=\"modules.Target.aspect_ids\">aspect_ids</h3><code><a class=\"anchor\"" + "href=\"list.html\">list</a> Target.aspect_ids </code><br>The list of <a class=\"anchor\" "
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkFileType.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkFileType.java index b077b01..287308c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkFileType.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkFileType.java
@@ -53,7 +53,7 @@ @SkylarkCallable(doc = "Returns a list created from the elements of the parameter containing all the " + "<a href=\"File.html\"><code>File</code></a>s that match the FileType. The parameter " - + "must be a <a href=\"set.html\"><code>set</code></a> or a " + + "must be a <a href=\"depset.html\"><code>depset</code></a> or a " + "<a href=\"list.html\"><code>list</code></a>.") // toIterablesStrict() will ensure the parameter is a SkylarkNestedSet or a java Iterable // (including SkylarkList). If it fails, the error location information will be inserted by the
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkSignature.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkSignature.java index a767010..d69aebc 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkSignature.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkSignature.java
@@ -97,6 +97,13 @@ */ Class<?> returnType() default Object.class; + /** + * Fake return type of the function. Used by the documentation generator for documenting + * deprecated functions (documentation for this type is generated, even if it's not the real + * return type). + */ + Class<?> documentationReturnType() default Object.class; + // TODO(bazel-team): determine this way whether to accept mutable Lists // boolean mutableLists() default false;
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java index b943e4a..30b4161 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java
@@ -100,6 +100,7 @@ @SkylarkSignature( name = "set", returnType = SkylarkNestedSet.class, + documentationReturnType = SkylarkNestedSet.LegacySet.class, doc = "A temporary alias for <a href=\"#depset\">depset</a>. " + "Deprecated in favor of <code>depset</code>.",
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java index 5b42cd7..cff3298 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java
@@ -109,6 +109,20 @@ @Nullable private final List<NestedSet> transitiveItems; + // Dummy class used to create a documentation for the deprecated `set` type + // TODO(bazel-team): remove before the end of 2017 + @SkylarkModule( + name = "set", + category = SkylarkModuleCategory.BUILTIN, + doc = "A deprecated alias for <a href=\"depset.html\">depset</a>. " + + "Please use <a href=\"depset.html\">depset</a> instead. " + + "If you need a hash set that supports O(1) membership testing " + + "consider using a <a href=\"dict.html\">dict</a>." + ) + static final class LegacySet { + private LegacySet() {} + } + public SkylarkNestedSet(Order order, Object item, Location loc) throws EvalException { this(order, SkylarkType.TOP, item, loc, null); }