private static List<TypeSignature> getLambdaArgumentTypeSignatures(TypeSignature lambdaTypeSignature) { List<TypeSignature> typeParameters = lambdaTypeSignature.getTypeParametersAsTypeSignatures(); return typeParameters.subList(0, typeParameters.size() - 1); }
List<Object> fixedValue = new ArrayList<>(); for (Object object : List.class.cast(value)) { fixedValue.add(fixValue(signature.getTypeParametersAsTypeSignatures().get(0), object)); TypeSignature keySignature = signature.getTypeParametersAsTypeSignatures().get(0); TypeSignature valueSignature = signature.getTypeParametersAsTypeSignatures().get(1); Map<Object, Object> fixedValue = new HashMap<>(); for (Map.Entry<?, ?> entry : (Set<Map.Entry<?, ?>>) Map.class.cast(value).entrySet()) {
if (argumentTypes.get(0).getBase().equals(StandardTypes.ARRAY)) { checkArgument(argumentTypes.get(1).getBase().equals(StandardTypes.BIGINT), "Second argument must be a BIGINT"); TypeSignature elementType = argumentTypes.get(0).getTypeParametersAsTypeSignatures().get(0); checkArgument(returnType.equals(elementType), "[] return type does not match ARRAY element type"); TypeSignature valueType = argumentTypes.get(0).getTypeParametersAsTypeSignatures().get(1); checkArgument(returnType.equals(valueType), "[] return type does not match MAP value type");
List<TypeSignature> formalTypeParameterTypeSignatures = formalTypeSignature.getTypeParametersAsTypeSignatures(); resultBuilder.add(new FunctionSolver( getLambdaArgumentTypeSignatures(formalTypeSignature),
@Override void validateSignature(TypeSignature returnType, List<TypeSignature> argumentTypes) { validateOperatorSignature(this, returnType, argumentTypes, 2); checkArgument(argumentTypes.get(0).getBase().equals(StandardTypes.ARRAY) || argumentTypes.get(0).getBase().equals(StandardTypes.MAP), "First argument must be an ARRAY or MAP"); if (argumentTypes.get(0).getBase().equals(StandardTypes.ARRAY)) { checkArgument(argumentTypes.get(1).getBase().equals(StandardTypes.BIGINT), "Second argument must be a BIGINT"); TypeSignature elementType = argumentTypes.get(0).getTypeParametersAsTypeSignatures().get(0); checkArgument(returnType.equals(elementType), "[] return type does not match ARRAY element type"); } else { TypeSignature valueType = argumentTypes.get(0).getTypeParametersAsTypeSignatures().get(1); checkArgument(returnType.equals(valueType), "[] return type does not match MAP value type"); } } },
List<Object> fixedValue = new ArrayList<>(); for (Object object : List.class.cast(value)) { fixedValue.add(fixValue(signature.getTypeParametersAsTypeSignatures().get(0).toString(), object)); String keyType = signature.getTypeParametersAsTypeSignatures().get(0).toString(); String valueType = signature.getTypeParametersAsTypeSignatures().get(1).toString(); Map<Object, Object> fixedValue = new HashMap<>(); for (Map.Entry<?, ?> entry : (Set<Map.Entry<?, ?>>) Map.class.cast(value).entrySet()) {