Package com.redhat.ceylon.compiler.typechecker.model

Examples of com.redhat.ceylon.compiler.typechecker.model.Parameter


                makeParameterArgument(arity1, stmts, args, a);
                a++;
            }
            ListBuffer<JCExpression> lb = ListBuffer.lb();
            for (; a < arity1-1 && a < CALLABLE_MAX_FIZED_ARITY; a++) {
                Parameter param = paramLists.getParameters().get(Math.min(a, numParams-1));
                lb.append(makeParameterExpr(param, a, getVariadicIteratedType(), false));
            }
            ListBuffer<JCExpression> spreadCallArgs = ListBuffer.lb();
            spreadCallArgs.append(gen.makeReifiedTypeArgument(getVariadicIteratedType()));
            if (arity1 > CALLABLE_MAX_FIZED_ARITY+1) {
View Full Code Here


                }
                makeParameterArgument(arity, stmts, args, a);
            }
            ListBuffer<JCExpression> variadicElements = ListBuffer.lb();
            for (; a < arity; a++) {
                Parameter param = paramLists.getParameters().get(Math.min(a, numParams-1));
                variadicElements.append(makeParameterExpr(param, a, getVariadicIteratedType(), false));
            }
            ListBuffer<JCExpression> spreadCallArgs = ListBuffer.lb();
            spreadCallArgs.append(gen.makeReifiedTypeArgument(getVariadicIteratedType()));
            if (arity > CALLABLE_MAX_FIZED_ARITY) {
View Full Code Here

                                gen.typeFact().getIntegerDeclaration().getType(), false, BoxingStrategy.BOXED, gen.typeFact().getIntegerDeclaration().getType())));
                get = gen.expressionGen().applyErasureAndBoxing(get,
                        parameterTypes.get(a),
                        true, true, BoxingStrategy.UNBOXED,
                        parameterTypes.get(a), 0);
                Parameter param = paramLists.getParameters().get(a);
                makeVarForParameter(stmts, param, parameterTypes.get(a),
                        name, get);
                args.append(name.makeIdent());
            }
            // Get the rest of the sequential using spanFrom()
            SyntheticName name = parameterName(numParams-1);
            JCExpression spanFrom = gen.make().Apply(null,
                    gen.makeQualIdent(makeParamIdent(gen, arity), "spanFrom"),
                    List.<JCExpression>of(gen.expressionGen().applyErasureAndBoxing(gen.make().Literal(a),
                            gen.typeFact().getIntegerDeclaration().getType(), false, BoxingStrategy.BOXED, gen.typeFact().getIntegerDeclaration().getType())));
            spanFrom = gen.expressionGen().applyErasureAndBoxing(spanFrom,
                    parameterTypes.get(a),
                    true, true, BoxingStrategy.UNBOXED,
                    parameterTypes.get(a), 0);
            Parameter param = paramLists.getParameters().get(numParams-1);
            makeVarForParameter(stmts, param, parameterTypes.get(a),
                    name, spanFrom);
            args.append(name.makeIdent());
        }
View Full Code Here

        AnnotationInvocationVisitor visitor = new AnnotationInvocationVisitor(exprGen, invocation, anno);
        visitor.parameter = classParameter;
        AnnotationTerm term = argument.getTerm();
        if (term instanceof ParameterAnnotationTerm) {
            ParameterAnnotationTerm parameterArgument = (ParameterAnnotationTerm)term;
            Parameter sp = parameterArgument.getSourceParameter();
            int argumentIndex = ((Functional)sp.getDeclaration())
                    .getParameterLists().get(0).getParameters()
                    .indexOf(sp);
            if (invocation.getPositionalArgumentList() != null) {
                java.util.List<Tree.PositionalArgument> positionalArguments = invocation.getPositionalArgumentList().getPositionalArguments();
               
                if (parameterArgument.isSpread()) {
                    visitor.transformSpreadArgument(positionalArguments.subList(argumentIndex, positionalArguments.size()), classParameter);
                } else {
                    if (0 <= argumentIndex && argumentIndex < positionalArguments.size()) {
                        Tree.PositionalArgument pargument = positionalArguments.get(argumentIndex);
                        if (pargument.getParameter().isSequenced()) {
                            visitor.transformVarargs(argumentIndex, positionalArguments);
                        } else {
                            visitor.transformArgument(pargument);
                        }
                    } else if (sp.isDefaulted()) {
                        visitor.makeDefaultExpr(invocation, parameterArgument, sp);
                    } else if (sp.isSequenced()) {
                        visitor.appendBuiltArray(visitor.startArray());
                    }
                }
            } else if (invocation.getNamedArgumentList() != null) {
                boolean found = false;
                for (Tree.NamedArgument na : invocation.getNamedArgumentList().getNamedArguments()) {
                    Parameter parameter = na.getParameter();
                    int parameterIndex = anno.indexOfConstructorParameter(parameter);
                    if (parameterIndex == argumentIndex) {
                        visitor.transformArgument(na);
                        found = true;
                        break;
View Full Code Here

    static void functionalParameters(StringBuilder sb, ParameterList pl) {
        sb.append('(');
        Iterator<Parameter> parameters = pl.getParameters().iterator();
        while (parameters.hasNext()) {
            Parameter p = parameters.next();
            MethodOrValue pm = p.getModel();
            sb.append(pm.getName());
            if(p.isSequenced()) {
                if (p.isAtLeastOne()) {
                    sb.append('+');
                } else {
                    sb.append('*');
                }
            }
View Full Code Here

        return getParameter(argIndex).getModel().getUnboxed();
    }
   
    @Override
    protected BoxingStrategy getParameterBoxingStrategy(int argIndex) {
        Parameter param = getParameter(argIndex);
        if (isOnValueType() && Decl.isValueTypeDecl(getParameterTypeForValueType(producedReference, param))) {
            return BoxingStrategy.UNBOXED;
        }
        return CodegenUtil.getBoxingStrategy(param.getModel());
    }
View Full Code Here

    protected boolean isArgumentComprehension(int argIndex){
        throw new BugException("I override getTransformedArgumentExpression(), so should never be called");
    }
    @Override
    protected JCExpression getTransformedArgumentExpression(int argIndex) {
        Parameter param = callableParameters.get(argIndex);

        // note: we don't deal with unboxing here, as that is taken care of already by CallableBuilder by unboxing the
        // Callable arguments into unboxed local vars if required and if it's a value type
        return tempVars ? gen.makeUnquotedIdent(Naming.getCallableTempVarName(param)) : gen.makeUnquotedIdent(param.getName());
    }
View Full Code Here

    protected Expression getArgumentExpression(int argIndex) {
        throw new BugException("I override getTransformedArgumentExpression(), so should never be called");
    }
    @Override
    protected ProducedType getArgumentType(int argIndex) {
        Parameter param = callableParameters.get(argIndex);
        return getParameterTypeForValueType(getProducedReference(), param);
    }
View Full Code Here

    }
   
    @Override
    protected JCExpression getTransformedArgumentExpression(int argIndex) {
        ProducedType exprType = getParameterType(argIndex);
        Parameter declaredParameter = ((Functional)getPrimaryDeclaration()).getParameterLists().get(0).getParameters().get(argIndex);
        JCExpression result = getParameterExpression(argIndex);
        result = gen.expressionGen().applyErasureAndBoxing(
                result,
                exprType,
                !getParameterUnboxed(argIndex),
                CodegenUtil.getBoxingStrategy(declaredParameter.getModel()),
                declaredParameter.getType());
        return result;
    }
View Full Code Here

    }
   
    private void appendVarsForSequencedArguments(Tree.SequencedArgument sequencedArgument, java.util.List<Parameter> declaredParams) {
        // FIXME: this is suspisciously similar to AbstractTransformer.makeIterable(java.util.List<Tree.PositionalArgument> list, ProducedType seqElemType)
        // and possibly needs to be merged
        Parameter parameter = sequencedArgument.getParameter();
        ProducedType parameterType = parameterType(parameter, parameter.getType(), gen.TP_TO_BOUND);
        // find out the individual type, we use the argument type for the value, and the param type for the temp variable
        ProducedType tupleType = Util.getTupleType(sequencedArgument.getPositionalArguments(), gen.typeFact(), false);
        ProducedType argumentsType = tupleType.getSupertype(gen.typeFact().getIterableDeclaration());
        ProducedType iteratedType = gen.typeFact().getIteratedType(argumentsType);
        ProducedType absentType = gen.typeFact().getIteratedAbsentType(argumentsType);
View Full Code Here

TOP

Related Classes of com.redhat.ceylon.compiler.typechecker.model.Parameter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.