Builder(Parameters parameters, IAnnotatedElement source, IFactory factory) { this(source); arity = Range.parameterArity(source); required = arity.min > 0; // method parameters may be positional parameters without @Parameters annotation if (parameters == null) { paramLabel = inferLabel(null, source.getName(), source.getTypeInfo()); } else { paramLabel = inferLabel(parameters.paramLabel(), source.getName(), source.getTypeInfo()); hideParamSyntax = parameters.hideParamSyntax(); interactive = parameters.interactive(); description = parameters.description(); descriptionKey = parameters.descriptionKey(); splitRegex = parameters.split(); hidden = parameters.hidden(); defaultValue = parameters.defaultValue(); showDefaultValue = parameters.showDefaultValue(); if (factory != null) { // annotation processors will pass a null factory converters = DefaultFactory.createConverter(factory, parameters.converter()); if (!NoCompletionCandidates.class.equals(parameters.completionCandidates())) { completionCandidates = DefaultFactory.createCompletionCandidates(factory, parameters.completionCandidates()); } } } } private static String inferLabel(String label, String fieldName, ITypeInfo typeInfo) {
static PositionalParamSpec extractPositionalParamSpec(TypedMember member, IFactory factory) { PositionalParamSpec.Builder builder = PositionalParamSpec.builder(); initCommon(builder, member); Range arity = Range.parameterArity(member); builder.arity(arity); builder.index(Range.parameterIndex(member)); builder.capacity(Range.parameterCapacity(member)); builder.required(arity.min > 0); Parameters parameters = member.getAnnotation(Parameters.class); builder.interactive(parameters.interactive()); Class<?>[] elementTypes = inferTypes(member.getType(), parameters.type(), member.getGenericType()); builder.auxiliaryTypes(elementTypes); builder.paramLabel(inferLabel(parameters.paramLabel(), member.name(), member.getType(), elementTypes)); builder.hideParamSyntax(parameters.hideParamSyntax()); builder.description(parameters.description()); builder.descriptionKey(parameters.descriptionKey()); builder.splitRegex(parameters.split()); builder.hidden(parameters.hidden()); builder.defaultValue(parameters.defaultValue()); builder.converters(DefaultFactory.createConverter(factory, parameters.converter())); builder.showDefaultValue(parameters.showDefaultValue()); if (!NoCompletionCandidates.class.equals(parameters.completionCandidates())) { builder.completionCandidates(DefaultFactory.createCompletionCandidates(factory, parameters.completionCandidates())); } return builder.build(); } static PositionalParamSpec extractUnannotatedPositionalParamSpec(TypedMember member, IFactory factory) {