From 23aab171d93d7a6a0945b64fecf3e2094626e1fc Mon Sep 17 00:00:00 2001 From: cparsons Date: Fri, 13 Jul 2018 11:47:17 -0700 Subject: Remove SkylarkCallable.mandatoryPositionals RELNOTES: None. PiperOrigin-RevId: 204505003 --- .../build/docgen/skylark/SkylarkMethodDoc.java | 8 +---- .../lib/skylarkinterface/SkylarkCallable.java | 14 +------- .../processor/SkylarkCallableProcessor.java | 3 +- .../build/lib/syntax/FuncallExpression.java | 40 +--------------------- .../lib/syntax/SkylarkSignatureProcessor.java | 16 --------- 5 files changed, 4 insertions(+), 77 deletions(-) (limited to 'src/main/java/com/google') 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 293c56e863..a0d22bfc82 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 @@ -48,14 +48,8 @@ public abstract class SkylarkMethodDoc extends SkylarkDoc { private String getParameterString(Method method) { SkylarkCallable annotation = SkylarkInterfaceUtils.getSkylarkCallable(method); - int nbPositional = annotation.mandatoryPositionals(); - if (annotation.parameters().length > 0 && nbPositional < 0) { - nbPositional = 0; - } List argList = new ArrayList<>(); - for (int i = 0; i < nbPositional; i++) { - argList.add("arg" + i + ":" + getTypeAnchor(method.getParameterTypes()[i])); - } + boolean named = false; for (Param param : withoutSelfParam(annotation, method)) { if (param.named() && !param.positional() && !named) { 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 c89e06fc6a..7bc40efef5 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 @@ -84,19 +84,7 @@ public @interface SkylarkCallable { boolean structField() default false; /** - * Number of parameters in the signature that are mandatory positional parameters. Any parameter - * after {@link #mandatoryPositionals()} must be specified in {@link #parameters()}. A negative - * value (default is {@code -1}), means that all arguments are mandatory positionals if {@link - * #parameters()} remains empty. If {@link #parameters()} is non empty, then a negative value for - * {@link #mandatoryPositionals()} is taken as 0. - * - * @deprecated specify parameters via the {@link #parameters} field instead - */ - @Deprecated - int mandatoryPositionals() default -1; - - /** - * List of parameters this function accept after the {@link #mandatoryPositionals()} parameters. + * List of parameters this function accepts. */ Param[] parameters() default {}; 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 a2d43ae528..09f18f96a3 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,8 +265,7 @@ public final class SkylarkCallableProcessor extends AbstractProcessor { List methodSignatureParams = methodElement.getParameters(); int numExtraInterpreterParams = numExpectedExtraInterpreterParams(annotation); - int numDeclaredArgs = - annotation.parameters().length + Math.max(0, annotation.mandatoryPositionals()); + int numDeclaredArgs = annotation.parameters().length; if (methodSignatureParams.size() != numDeclaredArgs + numExtraInterpreterParams) { 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 877b087ea6..6bd4c9e2e8 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 @@ -614,48 +614,10 @@ public final class FuncallExpression extends Expression { ImmutableMap.Builder extraKwargsBuilder = ImmutableMap.builder(); boolean acceptsExtraArgs = !callable.extraPositionals().name().isEmpty(); boolean acceptsExtraKwargs = !callable.extraKeywords().name().isEmpty(); - Class[] javaMethodSignatureParams = method.getMethod().getParameterTypes(); - int numExtraInterpreterParams = 0; - numExtraInterpreterParams += acceptsExtraArgs ? 1 : 0; - numExtraInterpreterParams += acceptsExtraKwargs ? 1 : 0; - numExtraInterpreterParams += callable.useLocation() ? 1 : 0; - numExtraInterpreterParams += callable.useAst() ? 1 : 0; - numExtraInterpreterParams += callable.useEnvironment() ? 1 : 0; - numExtraInterpreterParams += callable.useSkylarkSemantics() ? 1 : 0; - - int mandatoryPositionals = callable.mandatoryPositionals(); - if (mandatoryPositionals < 0) { - if (callable.parameters().length > 0) { - mandatoryPositionals = 0; - } else { - mandatoryPositionals = javaMethodSignatureParams.length - numExtraInterpreterParams; - } - } - if (mandatoryPositionals > args.size()) { - return ArgumentListConversionResult.fromError("too few arguments"); - } - // First process the legacy positional parameters. int argIndex = 0; - if (mandatoryPositionals > 0) { - for (Class param : javaMethodSignatureParams) { - Object value = args.get(argIndex); - if (!param.isAssignableFrom(value.getClass())) { - return ArgumentListConversionResult.fromError( - String.format( - "Cannot convert parameter at position %d from type %s to type %s", - argIndex, EvalUtils.getDataTypeName(value), param.toString())); - } - builder.add(value); - argIndex++; - if (argIndex >= mandatoryPositionals) { - // Stops for specified parameters instead. - break; - } - } - } - // Then process parameters specified in callable.parameters() + // Process parameters specified in callable.parameters() Set keys = new LinkedHashSet<>(kwargs.keySet()); // Positional parameters are always enumerated before non-positional parameters, // And default-valued positional parameters are always enumerated after other positional 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 f5311328f4..6cdb889105 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 @@ -14,7 +14,6 @@ package com.google.devtools.build.lib.syntax; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; import com.google.common.primitives.Booleans; import com.google.devtools.build.lib.skylarkinterface.Param; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; @@ -57,22 +56,10 @@ public class SkylarkSignatureProcessor { if (annotation.doc().isEmpty() && documented) { throw new RuntimeException(String.format("function %s is undocumented", name)); } - ImmutableList.Builder> parameters = ImmutableList.builder(); - - Class[] javaMethodSignatureParams = descriptor.getMethod().getParameterTypes(); - - for (int paramIndex = 0; paramIndex < annotation.mandatoryPositionals(); paramIndex++) { - Parameter parameter = - new Parameter.Mandatory( - Identifier.of("arg" + paramIndex), - SkylarkType.of(javaMethodSignatureParams[paramIndex])); - parameters.add(parameter); - } return getSignatureForCallable( name, documented, - parameters.build(), annotation.parameters(), annotation.extraPositionals(), annotation.extraKeywords(), @@ -107,7 +94,6 @@ public class SkylarkSignatureProcessor { throw new RuntimeException(String.format("function %s is undocumented", name)); } return getSignatureForCallable(name, documented, - /*mandatoryPositionals=*/ImmutableList.>of(), annotation.parameters(), annotation.extraPositionals(), annotation.extraKeywords(), defaultValues, paramDoc, enforcedTypesList); @@ -119,13 +105,11 @@ public class SkylarkSignatureProcessor { private static FunctionSignature.WithValues getSignatureForCallable( String name, boolean documented, - ImmutableList> mandatoryPositionals, Param[] parameters, @Nullable Param extraPositionals, @Nullable Param extraKeywords, @Nullable Iterable defaultValues, @Nullable List paramDoc, @Nullable List enforcedTypesList) { ArrayList> paramList = new ArrayList<>(); - paramList.addAll(mandatoryPositionals); HashMap enforcedTypes = enforcedTypesList == null ? null : new HashMap<>(); -- cgit v1.2.3