diff --git a/src/scanner.c b/src/scanner.c index 6858ad6..98423cf 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -244,6 +244,18 @@ bool tree_sitter_rescript_external_scanner_scan( in_multiline_statement = true; } } + } else if (lexer->lookahead == 'e') { + advance(lexer); + if (lexer->lookahead == 'l') { + advance(lexer); + if (lexer->lookahead == 's') { + advance(lexer); + if (lexer->lookahead == 'e') { + // Ignore new lines before `else` keyword (else/else if clauses) + in_multiline_statement = true; + } + } + } } if (in_multiline_statement) { diff --git a/test/corpus/expressions.txt b/test/corpus/expressions.txt index 141a902..c69ea39 100644 --- a/test/corpus/expressions.txt +++ b/test/corpus/expressions.txt @@ -479,6 +479,66 @@ if predicateA { (expression_statement (value_identifier))))))) +================================================================================ +If/else with else on new line +================================================================================ + +if predicateA { + foo +} +else if predicateB { + bar +} +else { + baz +} + +if predicateA { + foo +} // comment before else if +else if predicateB { + bar +} // comment before else +else { + baz +} + +-------------------------------------------------------------------------------- + +(source_file + (expression_statement + (if_expression + (value_identifier) + (block + (expression_statement + (value_identifier))) + (else_if_clause + (value_identifier) + (block + (expression_statement + (value_identifier)))) + (else_clause + (block + (expression_statement + (value_identifier)))))) + (expression_statement + (if_expression + (value_identifier) + (block + (expression_statement + (value_identifier))) + (comment) + (else_if_clause + (value_identifier) + (block + (expression_statement + (value_identifier)))) + (comment) + (else_clause + (block + (expression_statement + (value_identifier))))))) + ================================================================================ Switch of literals ================================================================================