Skip to content

Commit

Permalink
🤖 Pick PR #48067 (Fix incorrect parser error assumpti...) into releas…
Browse files Browse the repository at this point in the history
…e-4.6 (#48068)

Co-authored-by: Jake Bailey <5341706+jakebailey@users.noreply.github.com>
  • Loading branch information
typescript-bot and jakebailey committed Mar 1, 2022
1 parent 78ee4ca commit 014dc3d
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 14 deletions.
13 changes: 1 addition & 12 deletions src/compiler/parser.ts
Expand Up @@ -1680,19 +1680,8 @@ namespace ts {
return;
}

// If an initializer was parsed but there is still an error in finding the next semicolon,
// we generally know there was an error already reported in the initializer...
// class Example { a = new Map([), ) }
// ~
if (initializer) {
// ...unless we've found the start of a block after a property declaration, in which
// case we can know that regardless of the initializer we should complain on the block.
// class Example { a = 0 {} }
// ~
if (token() === SyntaxKind.OpenBraceToken) {
parseErrorAtCurrentToken(Diagnostics._0_expected, tokenToString(SyntaxKind.SemicolonToken));
}

parseErrorAtCurrentToken(Diagnostics._0_expected, tokenToString(SyntaxKind.SemicolonToken));
return;
}

Expand Down
4 changes: 2 additions & 2 deletions tests/baselines/reference/parser0_004152.errors.txt
@@ -1,6 +1,6 @@
tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,28): error TS2304: Cannot find name 'DisplayPosition'.
tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,45): error TS1137: Expression or comma expected.
tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,46): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected.
tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,46): error TS1005: ';' expected.
tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,49): error TS1005: ';' expected.
tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,51): error TS2300: Duplicate identifier '3'.
tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(2,52): error TS1005: ';' expected.
Expand Down Expand Up @@ -41,7 +41,7 @@ tests/cases/conformance/parser/ecmascript5/Fuzz/parser0_004152.ts(3,25): error T
~
!!! error TS1137: Expression or comma expected.
~
!!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected.
!!! error TS1005: ';' expected.
~
!!! error TS1005: ';' expected.
~
Expand Down
17 changes: 17 additions & 0 deletions tests/cases/fourslash/parserCorruptionAfterMapInClass.ts
@@ -0,0 +1,17 @@
/// <reference path="fourslash.ts" />

// @target: esnext
// @lib: es2015
// @strict: true

//// class C {
//// map = new Set<string, number>/*$*/
////
//// foo() {
////
//// }
//// }

goTo.marker('$');
edit.insert('()');
verify.getSyntacticDiagnostics([]);

0 comments on commit 014dc3d

Please sign in to comment.