Skip to content

Commit ceefddd

Browse files
Fix AST construction during error recovery in parsing JSX (#2452)
1 parent 0527802 commit ceefddd

3 files changed

Lines changed: 9 additions & 85 deletions

File tree

internal/parser/parser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4603,7 +4603,7 @@ func (p *Parser) parseJsxElementOrSelfClosingElementOrFragment(inExpressionConte
46034603
// when an unclosed JsxOpeningElement incorrectly parses its parent's JsxClosingElement,
46044604
// restructure (<div>(...<span>...</div>)) --> (<div>(...<span>...</>)</div>)
46054605
// (no need to error; the parent will error)
4606-
end := lastChild.AsJsxElement().OpeningElement.End()
4606+
end := lastChild.Children().End()
46074607
missingIdentifier := p.finishNodeWithEnd(p.newIdentifier(""), end, end)
46084608
newClosingElement := p.finishNodeWithEnd(p.factory.NewJsxClosingElement(missingIdentifier), end, end)
46094609
newLast := p.finishNodeWithEnd(

testdata/baselines/reference/submodule/conformance/jsxUnclosedParserRecovery.types

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -338,15 +338,15 @@ var donkey = <div>
338338
>div : any
339339

340340
<diddy>
341-
><diddy> : any
341+
><diddy> <diddy/> : any
342342
>diddy : () => any
343343

344344
<diddy/>
345345
><diddy/> : any
346346
>diddy : () => any
347-
> : any
348347

349348
</div>;
349+
> : any
350350
>div : any
351351

352352
function noSelfcloseTrailingTag() { }
@@ -358,16 +358,16 @@ var donkey = <div>
358358
>div : any
359359

360360
<diddy<boolean> bananas="please">
361-
><diddy<boolean> bananas="please"> : any
361+
><diddy<boolean> bananas="please"> <diddy/> : any
362362
>diddy : () => any
363363
>bananas : string
364364

365365
<diddy/>
366366
><diddy/> : any
367367
>diddy : () => any
368-
> : any
369368

370369
</div>;
370+
> : any
371371
>div : any
372372

373373
function noSelfcloseTypeArgAttrsTrailingTag() { }
@@ -513,13 +513,12 @@ var donkey = <div>
513513
>div : any
514514

515515
<diddy>
516-
><diddy> : any
516+
><diddy> Cranky Wrinkly Funky : any
517517
>diddy : () => any
518518

519519
Cranky Wrinkly Funky
520-
> : any
521-
522520
</div>;
521+
> : any
523522
>div : any
524523

525524
function noSelfcloseTrailingText() { }
@@ -531,14 +530,13 @@ var donkey = <div>
531530
>div : any
532531

533532
<diddy<boolean> bananas="please">
534-
><diddy<boolean> bananas="please"> : any
533+
><diddy<boolean> bananas="please"> Cranky Wrinkly Funky : any
535534
>diddy : () => any
536535
>bananas : string
537536

538537
Cranky Wrinkly Funky
539-
> : any
540-
541538
</div>;
539+
> : any
542540
>div : any
543541

544542
function noSelfcloseTypeArgAttrsTrailingText() { }

testdata/baselines/reference/submodule/conformance/jsxUnclosedParserRecovery.types.diff

Lines changed: 0 additions & 74 deletions
This file was deleted.

0 commit comments

Comments
 (0)