aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java8
-rw-r--r--src/main/java/com/google/devtools/build/docgen/skylark/SkylarkMethodDoc.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkSignature.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java26
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java12
6 files changed, 30 insertions, 33 deletions
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java
index 318ec24ad5..1fe4fdd861 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java
@@ -85,8 +85,12 @@ public final class SkylarkBuiltinMethodDoc extends SkylarkMethodDoc {
processParams(annotation.optionalPositionals());
processParams(annotation.optionalNamedOnly());
processParams(annotation.mandatoryNamedOnly());
- processParams(annotation.extraPositionals());
- processParams(annotation.extraKeywords());
+ if (!annotation.extraPositionals().name().isEmpty()) {
+ this.params.add(new SkylarkParamDoc(this, annotation.extraPositionals()));
+ }
+ if (!annotation.extraKeywords().name().isEmpty()) {
+ this.params.add(new SkylarkParamDoc(this, annotation.extraKeywords()));
+ }
}
private void processParams(Param[] params) {
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkMethodDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkMethodDoc.java
index bf254e17e6..5dbd6a79d6 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkMethodDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkMethodDoc.java
@@ -82,10 +82,10 @@ abstract class SkylarkMethodDoc extends SkylarkDoc {
for (Param param : method.optionalPositionals()) {
argList.add(formatOptionalParameter(param));
}
- for (Param param : method.extraPositionals()) {
- argList.add("*" + param.name());
+ if (!method.extraPositionals().name().isEmpty()) {
+ argList.add("*" + method.extraPositionals().name());
}
- if (argList.size() > 0 && method.extraPositionals().length == 0
+ if (!argList.isEmpty() && method.extraPositionals().name().isEmpty()
&& (method.optionalNamedOnly().length > 0 || method.mandatoryNamedOnly().length > 0)) {
argList.add("*");
}
@@ -95,8 +95,8 @@ abstract class SkylarkMethodDoc extends SkylarkDoc {
for (Param param : method.optionalNamedOnly()) {
argList.add(formatOptionalParameter(param));
}
- for (Param param : method.extraKeywords()) {
- argList.add("**" + param.name());
+ if (!method.extraKeywords().name().isEmpty()) {
+ argList.add("**" + method.extraKeywords().name());
}
String args = "(" + Joiner.on(", ").join(argList) + ")";
if (!objectName.equals(TOP_LEVEL_ID)) {
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 2bcf821fc8..67fd149d22 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
@@ -79,14 +79,13 @@ public class AppleSkylarkCommon {
doc = "Whether this provider should enable Swift support."
)
},
- extraKeywords = {
+ extraKeywords =
@Param(
name = "kwargs",
type = SkylarkDict.class,
defaultValue = "{}",
doc = "Dictionary of arguments"
)
- }
)
public static final BuiltinFunction NEW_OBJC_PROVIDER =
new BuiltinFunction("new_objc_provider") {
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 ffaab00250..eed1888e7e 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
@@ -42,9 +42,9 @@ public @interface SkylarkSignature {
Param[] mandatoryNamedOnly() default {};
- Param[] extraPositionals() default {};
+ Param extraPositionals() default @Param(name = "");
- Param[] extraKeywords() default {};
+ Param extraKeywords() default @Param(name = "");
boolean documented() default true;
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
index 0f25172266..0552414e9e 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
@@ -883,12 +883,11 @@ public class MethodLibrary {
mandatoryPositionals = {
@Param(name = "self", type = String.class, doc = "This string."),
},
- extraPositionals = {
+ extraPositionals =
@Param(name = "args", type = SkylarkList.class, defaultValue = "()",
doc = "List of arguments"),
- },
- extraKeywords = {@Param(name = "kwargs", type = SkylarkDict.class, defaultValue = "{}",
- doc = "Dictionary of arguments")},
+ extraKeywords = @Param(name = "kwargs", type = SkylarkDict.class, defaultValue = "{}",
+ doc = "Dictionary of arguments"),
useLocation = true)
private static final BuiltinFunction format = new BuiltinFunction("format") {
@SuppressWarnings("unused")
@@ -1086,9 +1085,8 @@ public class MethodLibrary {
doc =
"Returns the smallest one of all given arguments. "
+ "If only one argument is provided, it must be a non-empty iterable.",
- extraPositionals = {
- @Param(name = "args", type = SkylarkList.class, doc = "The elements to be checked.")
- },
+ extraPositionals =
+ @Param(name = "args", type = SkylarkList.class, doc = "The elements to be checked."),
useLocation = true
)
private static final BuiltinFunction min = new BuiltinFunction("min") {
@@ -1104,9 +1102,8 @@ public class MethodLibrary {
doc =
"Returns the largest one of all given arguments. "
+ "If only one argument is provided, it must be a non-empty iterable.",
- extraPositionals = {
- @Param(name = "args", type = SkylarkList.class, doc = "The elements to be checked.")
- },
+ extraPositionals =
+ @Param(name = "args", type = SkylarkList.class, doc = "The elements to be checked."),
useLocation = true
)
private static final BuiltinFunction max = new BuiltinFunction("max") {
@@ -1829,8 +1826,7 @@ public class MethodLibrary {
+ "multiple values together.Example:<br>"
+ "<pre class=\"language-python\">s = struct(x = 2, y = 3)\n"
+ "return s.x + getattr(s, \"y\") # returns 5</pre>",
- extraKeywords = {
- @Param(name = "kwargs", doc = "the struct attributes")},
+ extraKeywords = @Param(name = "kwargs", doc = "the struct attributes"),
useLocation = true)
private static final BuiltinFunction struct = new BuiltinFunction("struct") {
@SuppressWarnings("unchecked")
@@ -1887,7 +1883,7 @@ public class MethodLibrary {
+ "exactly two elements: key, value"
),
},
- extraKeywords = {@Param(name = "kwargs", doc = "Dictionary of additional entries.")},
+ extraKeywords = @Param(name = "kwargs", doc = "Dictionary of additional entries."),
useLocation = true, useEnvironment = true
)
private static final BuiltinFunction dict =
@@ -2197,7 +2193,7 @@ public class MethodLibrary {
@Param(name = "sep", type = String.class, defaultValue = "' '",
doc = "The separator string between the objects, default is space (\" \").")},
// NB: as compared to Python3, we're missing optional named-only arguments 'end' and 'file'
- extraPositionals = {@Param(name = "args", doc = "The objects to print.")},
+ extraPositionals = @Param(name = "args", doc = "The objects to print."),
useLocation = true, useEnvironment = true)
private static final BuiltinFunction print = new BuiltinFunction("print") {
public Runtime.NoneType invoke(String sep, SkylarkList<?> starargs,
@@ -2223,7 +2219,7 @@ public class MethodLibrary {
+ "zip([1, 2]) # == [(1,), (2,)]\n"
+ "zip([1, 2], [3, 4]) # == [(1, 3), (2, 4)]\n"
+ "zip([1, 2], [3, 4, 5]) # == [(1, 3), (2, 4)]</pre>",
- extraPositionals = {@Param(name = "args", doc = "lists to zip")},
+ extraPositionals = @Param(name = "args", doc = "lists to zip"),
returnType = MutableList.class, useLocation = true, useEnvironment = true)
private static final BuiltinFunction zip = new BuiltinFunction("zip") {
public MutableList<?> invoke(SkylarkList<?> args, Location loc, Environment env)
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java
index 1348267540..cc3b0c47f0 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java
@@ -72,13 +72,12 @@ public class SkylarkSignatureProcessor {
/*mandatory=*/false, /*star=*/false, /*starStar=*/false,
/*defaultValue=*/getDefaultValue(param, defaultValuesIterator)));
}
- if (annotation.extraPositionals().length > 0
+ if (!annotation.extraPositionals().name().isEmpty()
|| annotation.optionalNamedOnly().length > 0
|| annotation.mandatoryNamedOnly().length > 0) {
@Nullable Param starParam = null;
- if (annotation.extraPositionals().length > 0) {
- Preconditions.checkArgument(annotation.extraPositionals().length == 1);
- starParam = annotation.extraPositionals()[0];
+ if (!annotation.extraPositionals().name().isEmpty()) {
+ starParam = annotation.extraPositionals();
}
paramList.add(getParameter(name, starParam, enforcedTypes, doc, documented,
/*mandatory=*/false, /*star=*/true, /*starStar=*/false, /*defaultValue=*/null));
@@ -92,10 +91,9 @@ public class SkylarkSignatureProcessor {
/*mandatory=*/false, /*star=*/false, /*starStar=*/false,
/*defaultValue=*/getDefaultValue(param, defaultValuesIterator)));
}
- if (annotation.extraKeywords().length > 0) {
- Preconditions.checkArgument(annotation.extraKeywords().length == 1);
+ if (!annotation.extraKeywords().name().isEmpty()) {
paramList.add(
- getParameter(name, annotation.extraKeywords()[0], enforcedTypes, doc, documented,
+ getParameter(name, annotation.extraKeywords(), enforcedTypes, doc, documented,
/*mandatory=*/false, /*star=*/false, /*starStar=*/true, /*defaultValue=*/null));
}
FunctionSignature.WithValues<Object, SkylarkType> signature =