From adedc1a405849e6c0ea27fd2b14d901d8c82dbc8 Mon Sep 17 00:00:00 2001 From: Boshen Date: Sun, 2 Apr 2023 15:27:54 +0800 Subject: [PATCH] feat(parser): parse jsx element and fragment in JSXAttributeValue --- crates/oxc_parser/src/jsx/mod.rs | 7 +++++++ tasks/coverage/typescript.snap | 11 ++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/crates/oxc_parser/src/jsx/mod.rs b/crates/oxc_parser/src/jsx/mod.rs index 74ad0a579..eac960834 100644 --- a/crates/oxc_parser/src/jsx/mod.rs +++ b/crates/oxc_parser/src/jsx/mod.rs @@ -336,6 +336,13 @@ impl<'a> Parser<'a> { let expr = self.parse_jsx_expression_container(false)?; Ok(JSXAttributeValue::ExpressionContainer(expr)) } + Kind::LAngle => { + if self.peek_at(Kind::RAngle) { + self.parse_jsx_fragment().map(JSXAttributeValue::Fragment) + } else { + self.parse_jsx_element(false).map(JSXAttributeValue::Element) + } + } _ => Err(self.unexpected()), } } diff --git a/tasks/coverage/typescript.snap b/tasks/coverage/typescript.snap index 93ed9b9d1..9f08c0ff0 100644 --- a/tasks/coverage/typescript.snap +++ b/tasks/coverage/typescript.snap @@ -1,7 +1,7 @@ TypeScript Summary: AST Parsed : 2336/2340 (99.83%) Positive Passed: 2330/2340 (99.57%) -Negative Passed: 673/2532 (26.58%) +Negative Passed: 672/2532 (26.54%) Expect Syntax Error: "Symbols/ES5SymbolProperty2.ts" Expect Syntax Error: "Symbols/ES5SymbolProperty6.ts" Expect Syntax Error: "additionalChecks/noPropertyAccessFromIndexSignature1.ts" @@ -1010,6 +1010,7 @@ Expect Syntax Error: "jsx/checkJsxChildrenProperty4.tsx" Expect Syntax Error: "jsx/checkJsxChildrenProperty5.tsx" Expect Syntax Error: "jsx/checkJsxChildrenProperty7.tsx" Expect Syntax Error: "jsx/checkJsxGenericTagHasCorrectInferences.tsx" +Expect Syntax Error: "jsx/jsxEsprimaFbTestSuite.tsx" Expect Syntax Error: "jsx/jsxSpreadOverwritesAttributeStrict.tsx" Expect Syntax Error: "jsx/tsxAttributeErrors.tsx" Expect Syntax Error: "jsx/tsxAttributeResolution1.tsx" @@ -8155,14 +8156,6 @@ Expect to Parse: "salsa/privateIdentifierExpando.ts" 9 │ ╰──── - × Unexpected token - ╭─[jsx/jsxEsprimaFbTestSuite.tsx:40:1] - 40 │ - 41 │ right=monkeys /> gorillas />; - · ─ - 42 │ - ╰──── - × TS18007: JSX expressions may not use the comma operator. ╭─[jsx/jsxParsingError1.tsx:13:1] 13 │ const class2 = "bar";