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

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


                        method.getParameterLists().get(i);
                Tree.ParameterList parameterList =
                        parameterLists.size()<=i ?
                                null : parameterLists.get(i);
                for (int j=0; j<refinedParameters.getParameters().size(); j++) {
                    Parameter refinedParameter =
                            refinedParameters.getParameters().get(j);
                    ProducedType refinedParameterType =
                            refinedProducedReference
                            .getTypedParameter(refinedParameter)
                            .getFullType();
                    if (parameterList==null ||
                            parameterList.getParameters().size()<=j) {
                        Parameter p = parameters.getParameters().get(j);
                        p.getModel().setType(refinedParameterType);
                    }
                    else {
                        Tree.Parameter parameter =
                                parameterList.getParameters().get(j);
                        Parameter p = parameter.getParameterModel();
                        ProducedType parameterType =
                                p.getModel().getTypedReference().getFullType();
                        Node typeNode = parameter;
                        if (parameter instanceof Tree.ParameterDeclaration) {
                            Tree.Type type =
                                    ((Tree.ParameterDeclaration) parameter)
                                    .getTypedDeclaration().getType();
                            if (type!=null) {
                                typeNode = type;
                            }
                        }
                        checkIsExactlyForInterop(that.getUnit(),
                                refinedParameters.isNamedParametersSupported(),
                                parameterType, refinedParameterType, typeNode,
                                "type of parameter '" + p.getName() +
                                "' of '" + method.getName() +
                                "' declared by '" + ci.getName() +
                                "' is different to type of corresponding parameter '" +
                                refinedParameter.getName() + "' of refined method '" +
                                refinedMethod.getName() + "' of '" +
View Full Code Here


        }
    }
   
    @Override public void visit(Tree.InitializerParameter that) {
        super.visit(that);
        Parameter p = that.getParameterModel();
        MethodOrValue model = p.getModel();
        if (model!=null) {
          ProducedType type =
                  model.getTypedReference().getFullType();
          if (type!=null && !isTypeUnknown(type)) {
            checkType(type, that.getSpecifierExpression());
          }
        }
        else {
            Declaration a = that.getScope()
                    .getDirectMember(p.getName(),
                            null, false);
            if (a==null) {
                that.addError("parameter declaration does not exist: '" +
                        p.getName() + "'");
            }
        }
    }
View Full Code Here

                                .addUnsupportedError("wrong number of initializer parameters declared by class alias: " +
                                        alias.getName());
                    }
                   
                    for (int i=0; i<cps && i<aps; i++) {
                        Parameter ap = apl.getParameters().get(i);
                        Parameter cp = cpl.getParameters().get(i);
                        ProducedType pt = at.getTypedParameter(cp).getType();
                        //TODO: properly check type of functional parameters!!
                        checkAssignableWithWarning(ap.getType(), pt, that, "alias parameter " +
                                ap.getName() + " must be assignable to corresponding class parameter " +
                                cp.getName());
                    }
                   
                    //temporary restrictions
                    if (that.getClassSpecifier()!=null) {
                        Tree.InvocationExpression ie =
                                that.getClassSpecifier()
                                    .getInvocationExpression();
                        if (ie!=null) {
                            Tree.PositionalArgumentList pal =
                                    ie.getPositionalArgumentList();
                            if (pal!=null) {
                                List<PositionalArgument> pas =
                                        pal.getPositionalArguments();
                                if (cps!=pas.size()) {
                                    pal.addUnsupportedError("wrong number of arguments for aliased class: " +
                                            alias.getName() + " has " + cps + " parameters");
                                }
                                for (int i=0; i<pas.size() && i<cps && i<aps; i++) {
                                    Tree.PositionalArgument pa = pas.get(i);
                                    Parameter aparam = apl.getParameters().get(i);
                                    Parameter cparam = cpl.getParameters().get(i);
                                    if (pa instanceof Tree.ListedArgument) {
                                        if (cparam.isSequenced()) {
                                            pa.addUnsupportedError("argument to variadic parameter of aliased class must be spread");
                                        }
                                        Tree.Expression e =
                                                ((Tree.ListedArgument) pa).getExpression();
                                        checkAliasArg(aparam, e);
                                    }
                                    else if (pa instanceof Tree.SpreadArgument) {
                                        if (!cparam.isSequenced()) {
                                            pa.addUnsupportedError("argument to non-variadic parameter of aliased class may not be spread");
                                        }
                                        Tree.Expression e =
                                                ((Tree.SpreadArgument) pa).getExpression();
                                        checkAliasArg(aparam, e);
View Full Code Here

            List<Parameter> params = pl.getParameters();
            List<Tree.PositionalArgument> args =
                    pal.getPositionalArguments();
            int j=0;
            for (int i=0; i<args.size() && j<params.size(); i++) {
                Parameter param = params.get(j);
                Tree.PositionalArgument arg = args.get(i);
                if (arg instanceof Tree.ListedArgument) {
                    Tree.ListedArgument la =
                            (Tree.ListedArgument) arg;
                    la.setParameter(param);
                    inferParameterTypes(pr, param,
                            la.getExpression(),
                            param.isSequenced());
                }
                if (!param.isSequenced()) {
                    j++;
                }
            }
        }
    }
View Full Code Here

            for (int i=0; i<args.size(); i++) {
                Tree.NamedArgument arg = args.get(i);
                if (arg instanceof Tree.SpecifiedArgument) {
                    Tree.SpecifiedArgument sa =
                            (Tree.SpecifiedArgument) arg;
                    Parameter param =
                            getMatchingParameter(pl, arg,
                                    foundParameters);
                    if (param!=null) {
                        foundParameters.add(param);
                        sa.setParameter(param);
                        Tree.SpecifierExpression se =
                                sa.getSpecifierExpression();
                        if (se!=null) {
                            inferParameterTypes(pr, param,
                                    se.getExpression(), false);
                        }
                    }
                }
            }
            Tree.SequencedArgument sa = nal.getSequencedArgument();
            if (sa!=null) {
                Parameter param =
                        getUnspecifiedParameter(pr, pl,
                                foundParameters);
                if (param!=null) {
                    for (Tree.PositionalArgument pa: sa.getPositionalArguments()) {
                        if (pa instanceof Tree.ListedArgument) {
View Full Code Here

                        List<Parameter> ppl = ppls.get(0).getParameters();
                        for (TypeParameter tp: fun.getTypeParameters()) {
                            List<ProducedType> list =
                                    new ArrayList<ProducedType>();
                            for (int i=0; i<apl.size() && i<ppl.size(); i++) {
                                Parameter ap = apl.get(i);
                                Parameter pp = ppl.get(i);
                                ProducedType type =
                                        param.getTypedParameter(pp).getFullType();
                                ProducedType template =
                                        arg.getTypedParameter(ap).getFullType();
                                ProducedType it =
View Full Code Here

            List<Tree.Parameter> aps = apls.get(0).getParameters();
            for (int j=0; j<types.size() && j<aps.size(); j++) {
                ProducedType type = types.get(j);
                Tree.Parameter ap = aps.get(j);
                if (ap instanceof Tree.InitializerParameter) {
                    Parameter parameter = ap.getParameterModel();
                    if (parameter.getModel()==null) {
                        Value model = new Value();
                        model.setUnit(unit);
                        model.setType(type);
                        model.setName(parameter.getName());
                        parameter.setModel(model);
                        model.setInitializerParameter(parameter);
                        Method fun = anon.getDeclarationModel();
                        model.setContainer(fun);
                        fun.addMember(model);
                    }
View Full Code Here

        List<Tree.ParameterList> apls = anon.getParameterLists();
        if (!fpls.isEmpty() && !apls.isEmpty()) {
            List<Parameter> fps = fpls.get(0).getParameters();
            List<Tree.Parameter> aps = apls.get(0).getParameters();
            for (int j=0; j<fps.size() && j<aps.size(); j++) {
                Parameter fp = fps.get(j);
                Tree.Parameter ap = aps.get(j);
                if (ap instanceof Tree.InitializerParameter) {
                    Parameter parameter = ap.getParameterModel();
                    if (parameter.getModel()==null) {
                        ProducedType t =
                                pr.getTypedParameter(fp).getType();
                        Value model = new Value();
                        model.setUnit(unit);
                        model.setType(t);
                        model.setName(parameter.getName());
                        parameter.setModel(model);
                        model.setInitializerParameter(parameter);
                        Method fun = anon.getDeclarationModel();
                        model.setContainer(fun);
                        fun.addMember(model);
                    }
View Full Code Here

      if (d!=null) {
        print(" => " + d);
      }
        }
        if (node instanceof Tree.PositionalArgument) {
          Parameter p = ((Tree.PositionalArgument) node).getParameter();
      if (p!=null) {
        print(" => " + p);
      }
        }
        if (node instanceof Tree.NamedArgument) {
          Parameter p = ((Tree.NamedArgument) node).getParameter();
      if (p!=null) {
        print(" => " + p);
      }
        }
        if (node instanceof Tree.SequencedArgument) {
          Parameter p = ((Tree.SequencedArgument) node).getParameter();
      if (p!=null) {
        print(" => " + p);
      }
        }
        if (!node.getErrors().isEmpty()) {
View Full Code Here

    private void checkParameterVisibility(Declaration m,
            Tree.ParameterList list) {
        for (Tree.Parameter tp: list.getParameters()) {
            if (tp!=null) {
                Parameter p = tp.getParameterModel();
                if (p.getModel()!=null) {
                    checkParameterVisibility(tp, m, p);
                }
            }
        }
    }
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.