Skip to content

Commit 2327b3b

Browse files
committed
add rescan question question token to fix regression
1 parent f67e524 commit 2327b3b

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/compiler/parser.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2953,6 +2953,10 @@ namespace ts {
29532953
return parseJSDocAllType(/*postfixEquals*/ false);
29542954
case SyntaxKind.AsteriskEqualsToken:
29552955
return parseJSDocAllType(/*postfixEquals*/ true);
2956+
case SyntaxKind.QuestionQuestionToken:
2957+
// If there is '??', consider that is prefix '?' in JSDoc type.
2958+
scanner.reScanQuestionQuestionToken();
2959+
// falls through
29562960
case SyntaxKind.QuestionToken:
29572961
return parseJSDocUnknownOrNullableType();
29582962
case SyntaxKind.FunctionKeyword:

src/compiler/scanner.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ namespace ts {
3232
scanJsxAttributeValue(): SyntaxKind;
3333
reScanJsxToken(): JsxTokenSyntaxKind;
3434
reScanLessThanToken(): SyntaxKind;
35+
reScanQuestionQuestionToken(): SyntaxKind;
3536
scanJsxToken(): JsxTokenSyntaxKind;
3637
scanJsDocToken(): JSDocSyntaxKind;
3738
scan(): SyntaxKind;
@@ -886,6 +887,7 @@ namespace ts {
886887
scanJsxAttributeValue,
887888
reScanJsxToken,
888889
reScanLessThanToken,
890+
reScanQuestionQuestionToken,
889891
scanJsxToken,
890892
scanJsDocToken,
891893
scan,
@@ -1962,6 +1964,12 @@ namespace ts {
19621964
return token;
19631965
}
19641966

1967+
function reScanQuestionQuestionToken(): SyntaxKind {
1968+
Debug.assert(token === SyntaxKind.QuestionQuestionToken, "'reScanQuestionQuestionToken' should only be called on a '??'");
1969+
pos = tokenPos + 1;
1970+
return token = SyntaxKind.QuestionToken;
1971+
}
1972+
19651973
function scanJsxToken(): JsxTokenSyntaxKind {
19661974
startPos = tokenPos = pos;
19671975

0 commit comments

Comments
 (0)