use of com.google.javascript.jscomp.parsing.parser.trees.ArrayPatternTree in project closure-compiler by google.
the class Parser method parseArrayPattern.
// Pattern ::= ... | "[" Element? ("," Element?)* "]"
private ParseTree parseArrayPattern(PatternKind kind) {
SourcePosition start = getTreeStartLocation();
ImmutableList.Builder<ParseTree> elements = ImmutableList.builder();
eat(TokenType.OPEN_SQUARE);
while (peek(TokenType.COMMA) || peekArrayPatternElement()) {
if (peek(TokenType.COMMA)) {
SourcePosition nullStart = getTreeStartLocation();
eat(TokenType.COMMA);
elements.add(new NullTree(getTreeLocation(nullStart)));
} else {
elements.add(parsePatternAssignmentTarget(kind));
if (peek(TokenType.COMMA)) {
// Consume the comma separator
eat(TokenType.COMMA);
} else {
// Otherwise we must be done
break;
}
}
}
if (peek(TokenType.ELLIPSIS)) {
recordFeatureUsed(Feature.ARRAY_PATTERN_REST);
elements.add(parseIterRest(kind));
}
if (eat(TokenType.CLOSE_SQUARE) == null) {
// source has syntactic errors.
return new MissingPrimaryExpressionTree(getTreeLocation(getTreeStartLocation()));
}
return new ArrayPatternTree(getTreeLocation(start), elements.build());
}
Aggregations