From 484758a3d3a252bd0c117b91aad37c94c851fea3 Mon Sep 17 00:00:00 2001 From: Andy Date: Mon, 11 Dec 2017 09:45:36 -0800 Subject: [PATCH] Handle `!` following a keyword in isClassMemberStart (#20617) * Handle `!` following a keyword in isClassMemberStart * Fix test --- src/compiler/parser.ts | 1 + .../baselines/reference/parserIsClassMemberStart.js | 12 ++++++++++++ .../reference/parserIsClassMemberStart.symbols | 8 ++++++++ .../reference/parserIsClassMemberStart.types | 8 ++++++++ tests/cases/compiler/parserIsClassMemberStart.ts | 3 +++ 5 files changed, 32 insertions(+) create mode 100644 tests/baselines/reference/parserIsClassMemberStart.js create mode 100644 tests/baselines/reference/parserIsClassMemberStart.symbols create mode 100644 tests/baselines/reference/parserIsClassMemberStart.types create mode 100644 tests/cases/compiler/parserIsClassMemberStart.ts diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index cb28be4677a..52776f8e6a2 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -5462,6 +5462,7 @@ namespace ts { switch (token()) { case SyntaxKind.OpenParenToken: // Method declaration case SyntaxKind.LessThanToken: // Generic Method declaration + case SyntaxKind.ExclamationToken: // Non-null assertion on property name case SyntaxKind.ColonToken: // Type Annotation for declaration case SyntaxKind.EqualsToken: // Initializer for declaration case SyntaxKind.QuestionToken: // Not valid, but permitted so that it gets caught later on. diff --git a/tests/baselines/reference/parserIsClassMemberStart.js b/tests/baselines/reference/parserIsClassMemberStart.js new file mode 100644 index 00000000000..7d57132aee9 --- /dev/null +++ b/tests/baselines/reference/parserIsClassMemberStart.js @@ -0,0 +1,12 @@ +//// [parserIsClassMemberStart.ts] +class C { + type!: number; +} + + +//// [parserIsClassMemberStart.js] +var C = /** @class */ (function () { + function C() { + } + return C; +}()); diff --git a/tests/baselines/reference/parserIsClassMemberStart.symbols b/tests/baselines/reference/parserIsClassMemberStart.symbols new file mode 100644 index 00000000000..72f73375921 --- /dev/null +++ b/tests/baselines/reference/parserIsClassMemberStart.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/parserIsClassMemberStart.ts === +class C { +>C : Symbol(C, Decl(parserIsClassMemberStart.ts, 0, 0)) + + type!: number; +>type : Symbol(C.type, Decl(parserIsClassMemberStart.ts, 0, 9)) +} + diff --git a/tests/baselines/reference/parserIsClassMemberStart.types b/tests/baselines/reference/parserIsClassMemberStart.types new file mode 100644 index 00000000000..b6ad5974274 --- /dev/null +++ b/tests/baselines/reference/parserIsClassMemberStart.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/parserIsClassMemberStart.ts === +class C { +>C : C + + type!: number; +>type : number +} + diff --git a/tests/cases/compiler/parserIsClassMemberStart.ts b/tests/cases/compiler/parserIsClassMemberStart.ts new file mode 100644 index 00000000000..b277451b345 --- /dev/null +++ b/tests/cases/compiler/parserIsClassMemberStart.ts @@ -0,0 +1,3 @@ +class C { + type!: number; +}