mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 04:08:41 +00:00
fix(parser): add missing ChainExpression in optional TSInstantiationExpression (#7371)
This commit is contained in:
parent
7bf970a4b6
commit
666b6c104c
5 changed files with 15 additions and 4 deletions
|
|
@ -98,6 +98,7 @@ fn test() {
|
|||
("var x = a/*?.*/?.b", None),
|
||||
("var x = '?.'?.['?.']", None),
|
||||
("var x = '?.'?.['?.']", None),
|
||||
("a?.c?.b<c>", None),
|
||||
(
|
||||
"var x = a?.b",
|
||||
Some(serde_json::json!([{
|
||||
|
|
|
|||
|
|
@ -56,6 +56,12 @@ snapshot_kind: text
|
|||
· ────────────
|
||||
╰────
|
||||
|
||||
⚠ oxc(no-optional-chaining): Optional chaining is not allowed.
|
||||
╭─[no_optional_chaining.tsx:1:1]
|
||||
1 │ a?.c?.b<c>
|
||||
· ───────
|
||||
╰────
|
||||
|
||||
⚠ oxc(no-optional-chaining): Optional chaining is not allowed.
|
||||
╭─[no_optional_chaining.tsx:1:9]
|
||||
1 │ var x = a?.b
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@ use pico_args::Arguments;
|
|||
fn main() -> Result<(), String> {
|
||||
let mut args = Arguments::from_env();
|
||||
|
||||
let name = args.subcommand().ok().flatten().unwrap_or_else(|| String::from("test.js"));
|
||||
let show_ast = args.contains("--ast");
|
||||
let show_comments = args.contains("--comments");
|
||||
let name = args.free_from_str().unwrap_or_else(|_| "test.js".to_string());
|
||||
|
||||
let path = Path::new(&name);
|
||||
let source_text = fs::read_to_string(path).map_err(|_| format!("Missing '{name}'"))?;
|
||||
|
|
|
|||
|
|
@ -674,9 +674,15 @@ impl<'a> ParserImpl<'a> {
|
|||
self.parse_tagged_template(lhs_span, expr, *in_optional_chain, type_parameters)?
|
||||
}
|
||||
Kind::LAngle | Kind::ShiftLeft => {
|
||||
let optional_chain_span = (*in_optional_chain).then(|| self.end_span(lhs_span));
|
||||
if let Some(Some(arguments)) =
|
||||
self.try_parse(Self::parse_type_arguments_in_expression)
|
||||
{
|
||||
// `a?.c?.b<c>`
|
||||
if let Some(optional_chain_span) = optional_chain_span {
|
||||
*in_optional_chain = false;
|
||||
lhs = self.map_to_chain_expression(optional_chain_span, lhs);
|
||||
}
|
||||
lhs = self.ast.expression_ts_instantiation(
|
||||
self.end_span(lhs_span),
|
||||
lhs,
|
||||
|
|
|
|||
|
|
@ -1987,9 +1987,7 @@ after transform: ["C", "T"]
|
|||
rebuilt : ["C"]
|
||||
|
||||
* type-arguments/optional-call/input.ts
|
||||
Unresolved references mismatch:
|
||||
after transform: ["Q", "T", "f", "x"]
|
||||
rebuilt : ["f", "x"]
|
||||
x Output mismatch
|
||||
|
||||
* type-arguments/tagged-template/input.ts
|
||||
Unresolved references mismatch:
|
||||
|
|
|
|||
Loading…
Reference in a new issue