diff options
author | 2018-03-30 13:54:46 -0700 | |
---|---|---|
committer | 2018-03-30 13:56:26 -0700 | |
commit | 7f475d738320933ef4a0e25b0653eabb49a53b88 (patch) | |
tree | 6df93d442fd6b7a179900fd9bed6604a521ce718 /src/main/java/com/google/devtools/build/lib/skylarkinterface | |
parent | 0654620304728a5aecadd58138e96c41135d24e7 (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.java | 13 |
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 { |