diff options
author | cparsons <cparsons@google.com> | 2018-07-13 11:47:17 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-13 11:48:44 -0700 |
commit | 23aab171d93d7a6a0945b64fecf3e2094626e1fc (patch) | |
tree | 71225019cc278c8faed35dd86d8b4b959b294b55 /src/main/java/com/google/devtools/build/lib/syntax | |
parent | 32e9fee4e2192a340d0b1823538bf8e9fdf92b65 (diff) |
Remove SkylarkCallable.mandatoryPositionals
RELNOTES: None.
PiperOrigin-RevId: 204505003
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java | 40 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java | 16 |
2 files changed, 1 insertions, 55 deletions
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<String, Object> 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<String> 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<Parameter<Object, SkylarkType>> parameters = ImmutableList.builder(); - - Class<?>[] javaMethodSignatureParams = descriptor.getMethod().getParameterTypes(); - - for (int paramIndex = 0; paramIndex < annotation.mandatoryPositionals(); paramIndex++) { - Parameter<Object, SkylarkType> parameter = - new Parameter.Mandatory<Object, SkylarkType>( - 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.<Parameter<Object, SkylarkType>>of(), annotation.parameters(), annotation.extraPositionals(), annotation.extraKeywords(), defaultValues, paramDoc, enforcedTypesList); @@ -119,13 +105,11 @@ public class SkylarkSignatureProcessor { private static FunctionSignature.WithValues<Object, SkylarkType> getSignatureForCallable( String name, boolean documented, - ImmutableList<Parameter<Object, SkylarkType>> mandatoryPositionals, Param[] parameters, @Nullable Param extraPositionals, @Nullable Param extraKeywords, @Nullable Iterable<Object> defaultValues, @Nullable List<String> paramDoc, @Nullable List<SkylarkType> enforcedTypesList) { ArrayList<Parameter<Object, SkylarkType>> paramList = new ArrayList<>(); - paramList.addAll(mandatoryPositionals); HashMap<String, SkylarkType> enforcedTypes = enforcedTypesList == null ? null : new HashMap<>(); |