aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java8
-rw-r--r--src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileTypeApi.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java29
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java2
8 files changed, 42 insertions, 32 deletions
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 6d38c43c3f..884fe299e7 100644
--- a/src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java
+++ b/src/main/java/com/google/devtools/build/docgen/SkylarkDocumentationCollector.java
@@ -30,7 +30,6 @@ import com.google.devtools.build.lib.syntax.FuncallExpression;
import com.google.devtools.build.lib.syntax.Runtime;
import com.google.devtools.build.lib.util.Classpath;
import com.google.devtools.build.lib.util.Classpath.ClassPathException;
-import com.google.devtools.build.lib.util.StringUtilities;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayDeque;
@@ -234,11 +233,8 @@ final class SkylarkDocumentationCollector {
private static String getFullyQualifiedName(
String objectName, Method method, SkylarkCallable callable) {
- String objectDotExpressionPrefix =
- objectName.isEmpty() ? "" : objectName + ".";
- String methodName = callable.name().isEmpty()
- ? StringUtilities.toPythonStyleFunctionName(method.getName())
- : callable.name();
+ String objectDotExpressionPrefix = objectName.isEmpty() ? "" : objectName + ".";
+ String methodName = callable.name();
return objectDotExpressionPrefix + methodName;
}
}
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java
index 614d155325..eeff9fa73e 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java
@@ -17,7 +17,6 @@ import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
-import com.google.devtools.build.lib.util.StringUtilities;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -36,9 +35,7 @@ public final class SkylarkJavaMethodDoc extends SkylarkMethodDoc {
public SkylarkJavaMethodDoc(String moduleName, Method method, SkylarkCallable callable) {
this.moduleName = moduleName;
- this.name = callable.name().isEmpty()
- ? StringUtilities.toPythonStyleFunctionName(method.getName())
- : callable.name();
+ this.name = callable.name();
this.method = method;
this.callable = callable;
this.params =
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileTypeApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileTypeApi.java
index cbff500d36..83faf7fd61 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileTypeApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileTypeApi.java
@@ -32,7 +32,9 @@ import com.google.devtools.build.lib.syntax.EvalException;
)
public interface FileTypeApi<FileApiT extends FileApi> {
- @SkylarkCallable(doc =
+ @SkylarkCallable(
+ name = "filter",
+ 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=\"depset.html\"><code>depset</code></a> or a "
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
index 7c1be4caf3..12c2c523c9 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
@@ -264,10 +264,15 @@ public interface SkylarkRuleContextApi extends SkylarkValue {
)
public FileRootApi getGenfilesDirectory() throws EvalException;
- @SkylarkCallable(structField = true, doc = OUTPUTS_DOC)
+ @SkylarkCallable(
+ name = "outputs",
+ structField = true,
+ doc = OUTPUTS_DOC
+ )
public ClassObject outputs() throws EvalException;
@SkylarkCallable(
+ name = "rule",
structField = true,
doc =
"Returns rule attributes descriptor for the rule that aspect is applied to."
@@ -276,8 +281,8 @@ public interface SkylarkRuleContextApi extends SkylarkValue {
public SkylarkAttributesCollectionApi rule() throws EvalException;
@SkylarkCallable(
- structField = true,
name = "aspect_ids",
+ structField = true,
doc =
"Returns a list ids for all aspects applied to the target."
+ " Only available in aspect implementation functions."
@@ -285,18 +290,28 @@ public interface SkylarkRuleContextApi extends SkylarkValue {
public ImmutableList<String> aspectIds() throws EvalException;
@SkylarkCallable(
+ name = "var",
structField = true,
doc = "Dictionary (String to String) of configuration variables."
)
public SkylarkDict<String, String> var() throws EvalException;
- @SkylarkCallable(structField = true, doc = "Toolchains required for this rule.")
+ @SkylarkCallable(
+ name = "toolchains",
+ structField = true,
+ doc = "Toolchains required for this rule."
+ )
public SkylarkIndexable toolchains() throws EvalException;
- @SkylarkCallable(doc = "Splits a shell command to a list of tokens.", documented = false)
+ @SkylarkCallable(
+ name = "tokenize",
+ doc = "Splits a shell command to a list of tokens.",
+ documented = false
+ )
public SkylarkList<String> tokenize(String optionString) throws FuncallException, EvalException;
@SkylarkCallable(
+ name = "expand",
doc =
"Expands all references to labels embedded within a string for all files using a mapping "
+ "from definition labels (i.e. the label in the output type attribute) to files. "
@@ -366,11 +381,15 @@ public interface SkylarkRuleContextApi extends SkylarkValue {
)
public FileApi newDirectory(String name, Object siblingArtifactUnchecked) throws EvalException;
- @SkylarkCallable(documented = false)
+ @SkylarkCallable(
+ name = "check_placeholders",
+ documented = false
+ )
public boolean checkPlaceholders(String template, SkylarkList<Object> allowedPlaceholders)
throws EvalException;
@SkylarkCallable(
+ name = "expand_make_variables",
doc =
"<b>Deprecated.</b> Use <a href=\"ctx.html#var\">ctx.var</a> to access the variables "
+ "instead.<br>Returns a string after expanding all references to \"Make "
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java
index 9b5720fcf5..ceb65b033f 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java
@@ -60,7 +60,7 @@ public @interface SkylarkCallable {
/**
* Name of the method, as exposed to Skylark.
*/
- String name() default "";
+ String name();
/**
* The documentation text in Skylark. It can contain HTML tags for special formatting.
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
index 2ccc6ccb49..ecfd963529 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
@@ -109,6 +109,7 @@ public final class SkylarkCallableProcessor extends AbstractProcessor {
}
try {
+ verifyNameNotEmpty(methodElement, annotation);
verifyDocumented(methodElement, annotation);
verifyNotStructFieldWithParams(methodElement, annotation);
verifyParamSemantics(methodElement, annotation);
@@ -123,6 +124,15 @@ public final class SkylarkCallableProcessor extends AbstractProcessor {
return true;
}
+ private void verifyNameNotEmpty(ExecutableElement methodElement, SkylarkCallable annotation)
+ throws SkylarkCallableProcessorException {
+ if (annotation.name().isEmpty()) {
+ throw new SkylarkCallableProcessorException(
+ methodElement,
+ "@SkylarkCallable.name must be non-empty.");
+ }
+ }
+
private void verifyIfSelfCall(ExecutableElement methodElement, SkylarkCallable annotation)
throws SkylarkCallableProcessorException {
if (annotation.selfCall()) {
@@ -131,11 +141,6 @@ public final class SkylarkCallableProcessor extends AbstractProcessor {
methodElement,
"@SkylarkCallable-annotated methods with selfCall=true must have structField=false");
}
- if (annotation.name().isEmpty()) {
- throw new SkylarkCallableProcessorException(
- methodElement,
- "@SkylarkCallable-annotated methods with selfCall=true must have a name");
- }
if (!classesWithSelfcall.add(methodElement.getEnclosingElement().asType().toString())) {
throw new SkylarkCallableProcessorException(
methodElement,
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
index bf43266b21..877b087ea6 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
@@ -36,7 +36,6 @@ import com.google.devtools.build.lib.syntax.EvalException.EvalExceptionWithJavaC
import com.google.devtools.build.lib.syntax.Runtime.NoneType;
import com.google.devtools.build.lib.syntax.SkylarkList.Tuple;
import com.google.devtools.build.lib.util.Pair;
-import com.google.devtools.build.lib.util.StringUtilities;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -132,9 +131,6 @@ public final class FuncallExpression extends Expression {
continue;
}
String name = callable.name();
- if (name.isEmpty()) {
- name = StringUtilities.toPythonStyleFunctionName(method.getName());
- }
if (methodMap.containsKey(name)) {
methodMap.get(name).add(new MethodDescriptor(method, callable));
} else {
@@ -168,11 +164,6 @@ public final class FuncallExpression extends Expression {
for (MethodDescriptor fieldMethod : fieldMethods) {
SkylarkCallable callable = fieldMethod.getAnnotation();
String name = callable.name();
- if (name.isEmpty()) {
- name =
- StringUtilities.toPythonStyleFunctionName(
- fieldMethod.getMethod().getName());
- }
// TODO(b/72113542): Validate with annotation processor instead of at runtime.
if (!fieldNamesForCollisions.add(name)) {
throw new IllegalArgumentException(
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 5d5094117d..f5311328f4 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
@@ -51,7 +51,7 @@ public class SkylarkSignatureProcessor {
SkylarkCallable annotation = descriptor.getAnnotation();
// TODO(cparsons): Validate these properties with the annotation processor instead.
- Preconditions.checkArgument(annotation.name().isEmpty() || name.equals(annotation.name()),
+ Preconditions.checkArgument(name.equals(annotation.name()),
"%s != %s", name, annotation.name());
boolean documented = annotation.documented();
if (annotation.doc().isEmpty() && documented) {