fix(parser): parse unary conditional after satisfies (#24807)

Fixes #24804.

Recognize `!` as a type-start token so `?` after `satisfies` remains the conditional-expression operator instead of being consumed as a JSDoc nullable type.

Validated with `just ready`.

AI-assisted.
This commit is contained in:
Boshen committed 2026-07-22 13:22:14 +00:00
1 parent 09d0c8941a
commit 582805df03
7 files changed
+14 -11

No files matched your search

+1 -1
View File
@@ -601,7 +601,7 @@ impl<'a, C: Config> ParserImpl<'a, C> {
| Kind::Object
| Kind::Star
| Kind::Question
| Kind::Break
| Kind::Bang
| Kind::Dot3
| Kind::Infer
| Kind::Import
+3
View File
@@ -0,0 +1,3 @@
const foo = "foo"
const bar = "bar"
foo === "value" satisfies string ? !bar : bar
+2 -2
View File
@@ -1,3 +1,3 @@
codegen_misc Summary:
AST Parsed : 73/73 (100.00%)
Positive Passed: 73/73 (100.00%)
AST Parsed : 74/74 (100.00%)
Positive Passed: 74/74 (100.00%)
+2 -2
View File
@@ -1,3 +1,3 @@
formatter_misc Summary:
AST Parsed : 73/73 (100.00%)
Positive Passed: 73/73 (100.00%)
AST Parsed : 74/74 (100.00%)
Positive Passed: 74/74 (100.00%)
+2 -2
View File
@@ -1,6 +1,6 @@
parser_misc Summary:
AST Parsed : 73/73 (100.00%)
Positive Passed: 73/73 (100.00%)
AST Parsed : 74/74 (100.00%)
Positive Passed: 74/74 (100.00%)
Negative Passed: 154/154 (100.00%)
× Cannot assign to 'arguments' in strict mode
+2 -2
View File
@@ -1,6 +1,6 @@
semantic_misc Summary:
AST Parsed : 73/73 (100.00%)
Positive Passed: 68/73 (93.15%)
AST Parsed : 74/74 (100.00%)
Positive Passed: 69/74 (93.24%)
semantic Error: tasks/coverage/misc/pass/declare-let-private.ts
Bindings mismatch:
after transform: ScopeId(0): ["private"]
@@ -1,3 +1,3 @@
transformer_misc Summary:
AST Parsed : 73/73 (100.00%)
Positive Passed: 73/73 (100.00%)
AST Parsed : 74/74 (100.00%)
Positive Passed: 74/74 (100.00%)