aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skylarkinterface
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-03-30 13:54:46 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-30 13:56:26 -0700
commit7f475d738320933ef4a0e25b0653eabb49a53b88 (patch)
tree6df93d442fd6b7a179900fd9bed6604a521ce718 /src/main/java/com/google/devtools/build/lib/skylarkinterface
parent0654620304728a5aecadd58138e96c41135d24e7 (diff)
Enforce @SkylarkCallable must have a non-empty doc string or explicitly be documented=false.
RELNOTES: None. PiperOrigin-RevId: 191112140
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skylarkinterface')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java13
1 files changed, 13 insertions, 0 deletions
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 a5b242bc81..10a42e4379 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
@@ -52,6 +52,9 @@ import javax.tools.Diagnostic;
* Each parameter, if explicitly typed, may only use either 'type' or 'allowedTypes',
* not both.
* </li>
+ * <li>
+ * Either the doc string is non-empty, or documented is false.
+ * </li>
* </ul>
*
* <p>These properties can be relied upon at runtime without additional checks.
@@ -91,6 +94,7 @@ public final class SkylarkCallableProcessor extends AbstractProcessor {
}
try {
+ verifyDocumented(methodElement, annotation);
verifyNotStructFieldWithInvalidExtraParams(methodElement, annotation);
verifyParamSemantics(methodElement, annotation);
verifyNumberOfParameters(methodElement, annotation);
@@ -103,6 +107,15 @@ public final class SkylarkCallableProcessor extends AbstractProcessor {
return true;
}
+ private void verifyDocumented(ExecutableElement methodElement, SkylarkCallable annotation)
+ throws SkylarkCallableProcessorException {
+ if (annotation.documented() && annotation.doc().isEmpty()) {
+ throw new SkylarkCallableProcessorException(
+ methodElement,
+ "The 'doc' string must be non-empty if 'documented' is true.");
+ }
+ }
+
private void verifyNotStructFieldWithInvalidExtraParams(
ExecutableElement methodElement, SkylarkCallable annotation)
throws SkylarkCallableProcessorException {