Skip to content

Commit ca196c9

Browse files
committed
fix for parser backtracking crash
1 parent 2979b84 commit ca196c9

File tree

2 files changed

+2
-0
lines changed

2 files changed

+2
-0
lines changed

internal/js_parser/ts_parser.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -981,6 +981,7 @@ func (originalParser *parser) isTypeScriptArrowReturnTypeAfterQuestionAndBeforeC
981981
options: originalParser.options,
982982
source: originalParser.source,
983983
lexer: originalParser.lexer,
984+
log: logger.NewDeferLog(logger.DeferLogNoVerboseOrDebug, nil),
984985
currentScope: &js_ast.Scope{
985986
Kind: js_ast.ScopeFunctionArgs,
986987
Members: make(map[string]js_ast.ScopeMember),

internal/js_parser/ts_parser_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2388,6 +2388,7 @@ func TestTSArrow(t *testing.T) {
23882388
expectPrintedTS(t, "x = a ? (b) : T => c : d", "x = a ? (b) => c : d;\n")
23892389
expectPrintedTS(t, "x = a ? b - (c) : d => e", "x = a ? b - c : (d) => e;\n")
23902390
expectPrintedTS(t, "x = a ? b = (c) : T => d : e", "x = a ? b = (c) => d : e;\n")
2391+
expectPrintedTS(t, "x = (\n a ? (b = c) : { d: e }\n)", "x = a ? b = c : { d: e };\n") // Note: Newlines are important (they trigger backtracking)
23912392
expectParseErrorTS(t, "x = a ? (b = c) : T => d : (e = f) : g", "<stdin>: ERROR: Expected \";\" but found \":\"\n")
23922393
expectParseErrorTS(t, "x = a ? b ? (c = d) : T => e : (f = g)", "<stdin>: ERROR: Expected \":\" but found end of file\n")
23932394
expectParseErrorTS(t, "x = a ? - (b) : c => d : e", "<stdin>: ERROR: Expected \";\" but found \":\"\n")

0 commit comments

Comments
 (0)