org.eclipse.wst.jsdt.core.dom

## Class InfixExpression

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

    public class InfixExpression
    extends Expression

Infix expression AST node type.

     InfixExpression:
        Expression InfixOperator Expression { InfixOperator Expression }

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.

### Nested Class Summary

Nested Classes
`static class` `InfixExpression.Operator` Infix operators (typesafe enumeration).

### Field Summary

Fields
`static ChildListPropertyDescriptor` `EXTENDED_OPERANDS_PROPERTY` The "extendedOperands" structural property of this node type.
`static ChildPropertyDescriptor` `LEFT_OPERAND_PROPERTY` The "leftOperand" structural property of this node type.
`static SimplePropertyDescriptor` `OPERATOR_PROPERTY` The "operator" structural property of this node type.
`static ChildPropertyDescriptor` `RIGHT_OPERAND_PROPERTY` The "rightOperand" structural property of this node type.

### 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
`java.util.List` `extendedOperands()` Returns the live list of extended operands.
`Expression` `getLeftOperand()` Returns the left operand of this infix expression.
`InfixExpression.Operator` `getOperator()` Returns the operator of this infix expression.
`Expression` `getRightOperand()` Returns the right operand of this infix expression.
`boolean` `hasExtendedOperands()` Returns where there are any extended operands.
`static java.util.List` `propertyDescriptors(int apiLevel)` Returns a list of structural property descriptors for this node type.
`void` `setLeftOperand(Expression expression)` Sets the left operand of this infix expression.
`void` `setOperator(InfixExpression.Operator operator)` Sets the operator of this infix expression.
`void` `setRightOperand(Expression expression)` Sets the right operand of this infix expression.

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

`resolveBoxing, resolveConstantExpressionValue, resolveTypeBinding, resolveUnboxing`

### 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

#### LEFT_OPERAND_PROPERTY

    public static final ChildPropertyDescriptor LEFT_OPERAND_PROPERTY

The "leftOperand" structural property of this node type.

#### OPERATOR_PROPERTY

    public static final SimplePropertyDescriptor OPERATOR_PROPERTY

The "operator" structural property of this node type.

#### RIGHT_OPERAND_PROPERTY

    public static final ChildPropertyDescriptor RIGHT_OPERAND_PROPERTY

The "rightOperand" structural property of this node type.

#### EXTENDED_OPERANDS_PROPERTY

    public static final ChildListPropertyDescriptor EXTENDED_OPERANDS_PROPERTY

The "extendedOperands" 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`)

#### getOperator

    public InfixExpression.Operator getOperator()

Returns the operator of this infix expression.

Returns:
  the infix operator

#### setOperator

    public void setOperator(InfixExpression.Operator operator)

Sets the operator of this infix expression.

Parameters:
  `operator` - the infix operator
Throws:
  `java.lang.IllegalArgumentException` - if the argument is incorrect

#### getLeftOperand

    public Expression getLeftOperand()

Returns the left operand of this infix expression.

Returns:
  the left operand node

#### setLeftOperand

    public void setLeftOperand(Expression expression)

Sets the left operand of this infix expression.

Parameters:
  `expression` - the left operand node
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created

#### getRightOperand

    public Expression getRightOperand()

Returns the right operand of this infix expression.

Returns:
  the right operand node

#### setRightOperand

    public void setRightOperand(Expression expression)

Sets the right operand of this infix expression.

Parameters:
  `expression` - the right operand node
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created

#### hasExtendedOperands

    public boolean hasExtendedOperands()

Returns where there are any extended operands.

Returns:
  `true` if there are one or more extended operands, and `false` if there are no extended operands

#### extendedOperands

    public java.util.List extendedOperands()

Returns the live list of extended operands.

The extended operands is the preferred way of representing deeply nested expressions of the form `L op R op R2 op R3...` where the same operator appears between all the operands (the most common case being lengthy string concatenation expressions). Using the extended operands keeps the trees from getting too deep; this decreases the risk is running out of thread stack space at runtime when traversing such trees. ((a + b) + c) + d would be translated to: leftOperand: a rightOperand: b extendedOperands: {c, d} operator: +

Returns:
  the live list of extended operands (element type: `Expression`)