org.eclipse.wst.jsdt.core.dom

## Class FunctionRefParameter

- java.lang.Object
- - org.eclipse.wst.jsdt.core.dom.ASTNode
  - - org.eclipse.wst.jsdt.core.dom.FunctionRefParameter

    public class FunctionRefParameter
    extends ASTNode

AST node for a parameter within a method reference (`FunctionRef`). These nodes only occur within doc comments (`JSdoc`). For JLS2:

     FunctionRefParameter:
                    Type [ Identifier ]

For JLS3, the variable arity indicator was added:

     FunctionRefParameter:
                    Type [ ... ] [ Identifier ]

Note: The 1.5 spec for the jsdoc tool does not mention the possibility of a variable arity indicator in method references. However, the 1.5 jsdoc tool itself does indeed support it. Since it makes sense to have a way to explicitly refer to variable arity methods, it seems more likely that the jsdoc spec is wrong in this case.

Provisional API: This class/interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

### Field Summary

Fields
`static ChildPropertyDescriptor` `NAME_PROPERTY` The "name" structural property of this node type.
`static ChildPropertyDescriptor` `TYPE_PROPERTY` The "type" structural property of this node type.
`static SimplePropertyDescriptor` `VARARGS_PROPERTY` The "varargs" structural property of this node type (added in JLS3 API).

### Fields inherited from class org.eclipse.wst.jsdt.core.dom.ASTNode

`ANONYMOUS_CLASS_DECLARATION, ARRAY_ACCESS, ARRAY_CREATION, ARRAY_INITIALIZER, ARRAY_NAME, ARRAY_TYPE, ARROW_FUNCTION_EXPRESSION, ASSIGNMENT, ASSIGNMENT_NAME, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, DEBUGGER_STATEMENT, DO_STATEMENT, EMPTY_EXPRESSION, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, EXPORT_DECLARATION, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_IN_STATEMENT, FOR_OF_STATEMENT, FOR_STATEMENT, FUNCTION_DECLARATION, FUNCTION_DECLARATION_STATEMENT, FUNCTION_EXPRESSION, FUNCTION_INVOCATION, FUNCTION_REF, FUNCTION_REF_PARAMETER, IF_STATEMENT, IMPORT_DECLARATION, INFERRED_TYPE, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, JAVASCRIPT_UNIT, JSDOC, LABELED_STATEMENT, LINE_COMMENT, LIST_EXPRESSION, MALFORMED, MEMBER_REF, META_PROPERTY, MODIFIER, MODULE_SPECIFIER, NULL_LITERAL, NUMBER_LITERAL, OBJECT_LITERAL, OBJECT_LITERAL_FIELD, OBJECT_NAME, ORIGINAL, PACKAGE_DECLARATION, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, QUALIFIED_NAME, QUALIFIED_TYPE, RECOVERED, REGULAR_EXPRESSION_LITERAL, REST_ELEMENT_NAME, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_VARIABLE_DECLARATION, SPREAD_ELEMENT, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SWITCH_CASE, SWITCH_STATEMENT, TAG_ELEMENT, TEMPLATE_ELEMENT, TEMPLATE_LITERAL, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_EXPRESSION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, UNDEFINED_LITERAL, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WITH_STATEMENT, YIELD_EXPRESSION`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`SimpleName` `getName()` Returns the parameter name, or `null` if there is none.
`Type` `getType()` Returns the paramter type.
`boolean` `isVarargs()` Returns whether this method reference parameter is for the last parameter of a variable arity method (added in JLS3 API).
`static java.util.List` `propertyDescriptors(int apiLevel)` Returns a list of structural property descriptors for this node type.
`void` `setName(SimpleName name)` Sets or clears the parameter name.
`void` `setType(Type type)` Sets the paramter type to the given type.
`void` `setVarargs(boolean variableArity)` Sets whether this method reference parameter is for the last parameter of a variable arity method (added in JLS3 API).

### Methods inherited from class org.eclipse.wst.jsdt.core.dom.ASTNode

`accept, copySubtree, copySubtrees, delete, equals, getAST, getBodyChild, getFlags, getLength, getLocationInParent, getNodeType, getParent, getProperty, getRoot, getStartPosition, getStructuralProperty, hashCode, nodeClassForType, properties, setFlags, setProperty, setSourceRange, setStructuralProperty, structuralPropertiesForType, subtreeBytes, subtreeMatch, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### TYPE_PROPERTY

    public static final ChildPropertyDescriptor TYPE_PROPERTY

The "type" structural property of this node type.

#### VARARGS_PROPERTY

    public static final SimplePropertyDescriptor VARARGS_PROPERTY

The "varargs" structural property of this node type (added in JLS3 API).

#### NAME_PROPERTY

    public static final ChildPropertyDescriptor NAME_PROPERTY

The "name" structural property of this node type.

### Method Detail

#### propertyDescriptors

    public static java.util.List propertyDescriptors(int apiLevel)

Returns a list of structural property descriptors for this node type. Clients must not modify the result.

Parameters:
  `apiLevel` - the API level; one of the AST.JLS* constants
Returns:
  a list of property descriptors (element type: `StructuralPropertyDescriptor`)

#### getType

    public Type getType()

Returns the paramter type.

Returns:
  the parameter type

#### setType

    public void setType(Type type)

Sets the paramter type to the given type.

Parameters:
  `type` - the new type
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the type is `null`
  - the node belongs to a different AST
  - the node already has a parent

#### isVarargs

    public boolean isVarargs()

Returns whether this method reference parameter is for the last parameter of a variable arity method (added in JLS3 API).

Note that the binding for the type `Foo`in the vararg method reference `#fun(Foo...)` is always for the type as written; i.e., the type binding for `Foo`. However, if you navigate from the FunctionRef to its method binding to the type binding for its last parameter, the type binding for the vararg parameter is always an array type (i.e., `Foo[]`) reflecting the way vararg methods get compiled.

Returns:
  `true` if this is a variable arity parameter, and `false` otherwise
Throws:
  `java.lang.UnsupportedOperationException` - if this operation is used in a JLS2 AST

#### setVarargs

    public void setVarargs(boolean variableArity)

Sets whether this method reference parameter is for the last parameter of a variable arity method (added in JLS3 API).

Parameters:
  `variableArity` - `true` if this is a variable arity parameter, and `false` otherwise

#### getName

    public SimpleName getName()

Returns the parameter name, or `null` if there is none.

Returns:
  the parameter name node, or `null` if there is none

#### setName

    public void setName(SimpleName name)

Sets or clears the parameter name.

Parameters:
  `name` - the parameter name node, or `null` if there is none
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent