示例#1
0
 @Override
 public Void visitDefaultFormalParameter(DefaultFormalParameter node) {
   visit(node.getParameter());
   writer.print(" ");
   writer.print(node.getSeparator().getLexeme());
   visit(" ", node.getDefaultValue());
   return null;
 }
示例#2
0
  public void test_visitNamedFormalParameter() {
    ElementHolder holder = new ElementHolder();
    ElementBuilder builder = new ElementBuilder(holder);
    String parameterName = "p";
    DefaultFormalParameter formalParameter =
        namedFormalParameter(simpleFormalParameter(parameterName), identifier("b"));
    formalParameter.accept(builder);
    ParameterElement[] parameters = holder.getParameters();
    assertLength(1, parameters);

    ParameterElement parameter = parameters[0];
    assertNotNull(parameter);
    assertEquals(parameterName, parameter.getName());
    assertFalse(parameter.isConst());
    assertFalse(parameter.isFinal());
    assertFalse(parameter.isSynthetic());
    assertEquals(ParameterKind.NAMED, parameter.getParameterKind());
    FunctionElement initializer = parameter.getInitializer();
    assertNotNull(initializer);
    assertTrue(initializer.isSynthetic());
  }
示例#3
0
  @Override
  public Void visitDefaultFormalParameter(DefaultFormalParameter node) {
    ElementHolder holder = new ElementHolder();
    visitChildren(holder, node.getDefaultValue());

    FunctionElementImpl initializer = new FunctionElementImpl();
    initializer.setFunctions(holder.getFunctions());
    initializer.setLabels(holder.getLabels());
    initializer.setLocalVariables(holder.getVariables());
    initializer.setParameters(holder.getParameters());

    SimpleIdentifier parameterName = node.getParameter().getIdentifier();
    ParameterElementImpl parameter = new ParameterElementImpl(parameterName);
    parameter.setConst(node.isConst());
    parameter.setFinal(node.isFinal());
    parameter.setInitializer(initializer);
    parameter.setParameterKind(node.getKind());

    currentHolder.addParameter(parameter);
    parameterName.setElement(parameter);
    return null;
  }
示例#4
0
  @Override
  public Void visitDefaultFormalParameter(DefaultFormalParameter node) {
    ElementHolder holder = new ElementHolder();

    SimpleIdentifier parameterName = node.getParameter().getIdentifier();
    ParameterElementImpl parameter;
    if (node.getParameter() instanceof FieldFormalParameter) {
      parameter = new DefaultFieldFormalParameterElementImpl(parameterName);
    } else {
      parameter = new DefaultParameterElementImpl(parameterName);
    }
    parameter.setConst(node.isConst());
    parameter.setFinal(node.isFinal());
    parameter.setParameterKind(node.getKind());

    // set initializer, default value range
    Expression defaultValue = node.getDefaultValue();
    if (defaultValue != null) {
      visit(holder, defaultValue);

      FunctionElementImpl initializer =
          new FunctionElementImpl(defaultValue.getBeginToken().getOffset());
      initializer.setFunctions(holder.getFunctions());
      initializer.setLabels(holder.getLabels());
      initializer.setLocalVariables(holder.getLocalVariables());
      initializer.setParameters(holder.getParameters());
      initializer.setSynthetic(true);

      parameter.setInitializer(initializer);
      parameter.setDefaultValueRange(defaultValue.getOffset(), defaultValue.getLength());
    }

    // visible range
    setParameterVisibleRange(node, parameter);

    currentHolder.addParameter(parameter);
    parameterName.setStaticElement(parameter);
    node.getParameter().accept(this);
    holder.validate();
    return null;
  }