@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; }
@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; }