From e661f88e58ab73e1f21f16531e8cc78ff7d2cad9 Mon Sep 17 00:00:00 2001 From: cparsons Date: Thu, 28 Jun 2018 10:12:05 -0700 Subject: Require @SkylarkCallable parameters to be explicitly specified. This will be enforced by annotation processor. This will be followed up, along with turndown of mandatoryPositionals, by removing the intepreter code which infers the correct number and type of parameters. RELNOTES: None. PiperOrigin-RevId: 202499089 --- .../processor/SkylarkCallableProcessor.java | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'src/main/java/com/google/devtools/build') 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 ecfd963529..a2d43ae528 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 @@ -265,17 +265,15 @@ public final class SkylarkCallableProcessor extends AbstractProcessor { List methodSignatureParams = methodElement.getParameters(); int numExtraInterpreterParams = numExpectedExtraInterpreterParams(annotation); - if (annotation.parameters().length > 0 || annotation.mandatoryPositionals() >= 0) { - int numDeclaredArgs = - annotation.parameters().length + Math.max(0, annotation.mandatoryPositionals()); - if (methodSignatureParams.size() != numDeclaredArgs + numExtraInterpreterParams) { - throw new SkylarkCallableProcessorException( - methodElement, - String.format( - "@SkylarkCallable annotated method has %d parameters, but annotation declared " - + "%d user-supplied parameters and %d extra interpreter parameters.", - methodSignatureParams.size(), numDeclaredArgs, numExtraInterpreterParams)); - } + int numDeclaredArgs = + annotation.parameters().length + Math.max(0, annotation.mandatoryPositionals()); + if (methodSignatureParams.size() != numDeclaredArgs + numExtraInterpreterParams) { + throw new SkylarkCallableProcessorException( + methodElement, + String.format( + "@SkylarkCallable annotated method has %d parameters, but annotation declared " + + "%d user-supplied parameters and %d extra interpreter parameters.", + methodSignatureParams.size(), numDeclaredArgs, numExtraInterpreterParams)); } if (annotation.structField()) { if (methodSignatureParams.size() != numExtraInterpreterParams) { -- cgit v1.2.3