From 2c67c8f756c042a41114c4c06838cf2e48b70fe5 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Wed, 15 Feb 2023 12:51:25 -0500 Subject: [PATCH] Enforce NLT restriction after 'accessor' keyword (#52763) --- src/compiler/parser.ts | 1 - .../reference/autoAccessor11.errors.txt | 27 +++++++++++++++++ tests/baselines/reference/autoAccessor11.js | 30 +++++++++++++++++++ .../reference/autoAccessor11.symbols | 30 +++++++++++++++++++ .../baselines/reference/autoAccessor11.types | 30 +++++++++++++++++++ .../autoAccessor11.ts | 16 ++++++++++ 6 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/autoAccessor11.errors.txt create mode 100644 tests/baselines/reference/autoAccessor11.js create mode 100644 tests/baselines/reference/autoAccessor11.symbols create mode 100644 tests/baselines/reference/autoAccessor11.types create mode 100644 tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessor11.ts diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 6cf9465387c..7442f74a136 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -2684,7 +2684,6 @@ namespace Parser { return canFollowExportModifier(); case SyntaxKind.DefaultKeyword: return nextTokenCanFollowDefaultKeyword(); - case SyntaxKind.AccessorKeyword: case SyntaxKind.StaticKeyword: case SyntaxKind.GetKeyword: case SyntaxKind.SetKeyword: diff --git a/tests/baselines/reference/autoAccessor11.errors.txt b/tests/baselines/reference/autoAccessor11.errors.txt new file mode 100644 index 00000000000..c259aab9779 --- /dev/null +++ b/tests/baselines/reference/autoAccessor11.errors.txt @@ -0,0 +1,27 @@ +tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessor11.ts(2,5): error TS2300: Duplicate identifier 'accessor'. +tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessor11.ts(9,5): error TS2300: Duplicate identifier 'accessor'. +tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessor11.ts(12,14): error TS2300: Duplicate identifier 'accessor'. + + +==== tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessor11.ts (3 errors) ==== + class C { + accessor + ~~~~~~~~ +!!! error TS2300: Duplicate identifier 'accessor'. + a + + static accessor + b + + static + accessor + ~~~~~~~~ +!!! error TS2300: Duplicate identifier 'accessor'. + c + + accessor accessor + ~~~~~~~~ +!!! error TS2300: Duplicate identifier 'accessor'. + d; + } + \ No newline at end of file diff --git a/tests/baselines/reference/autoAccessor11.js b/tests/baselines/reference/autoAccessor11.js new file mode 100644 index 00000000000..6cfa0dcf49d --- /dev/null +++ b/tests/baselines/reference/autoAccessor11.js @@ -0,0 +1,30 @@ +//// [autoAccessor11.ts] +class C { + accessor + a + + static accessor + b + + static + accessor + c + + accessor accessor + d; +} + + +//// [autoAccessor11.js] +class C { + accessor; + a; + static accessor; + b; + static accessor; + c; + #accessor_accessor_storage; + get accessor() { return this.#accessor_accessor_storage; } + set accessor(value) { this.#accessor_accessor_storage = value; } + d; +} diff --git a/tests/baselines/reference/autoAccessor11.symbols b/tests/baselines/reference/autoAccessor11.symbols new file mode 100644 index 00000000000..d3daf272bb2 --- /dev/null +++ b/tests/baselines/reference/autoAccessor11.symbols @@ -0,0 +1,30 @@ +=== tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessor11.ts === +class C { +>C : Symbol(C, Decl(autoAccessor11.ts, 0, 0)) + + accessor +>accessor : Symbol(C.accessor, Decl(autoAccessor11.ts, 0, 9)) + + a +>a : Symbol(C.a, Decl(autoAccessor11.ts, 1, 12)) + + static accessor +>accessor : Symbol(C.accessor, Decl(autoAccessor11.ts, 2, 5), Decl(autoAccessor11.ts, 5, 5)) + + b +>b : Symbol(C.b, Decl(autoAccessor11.ts, 4, 19)) + + static + accessor +>accessor : Symbol(C.accessor, Decl(autoAccessor11.ts, 2, 5), Decl(autoAccessor11.ts, 5, 5)) + + c +>c : Symbol(C.c, Decl(autoAccessor11.ts, 8, 12)) + + accessor accessor +>accessor : Symbol(C.accessor, Decl(autoAccessor11.ts, 9, 5)) + + d; +>d : Symbol(C.d, Decl(autoAccessor11.ts, 11, 21)) +} + diff --git a/tests/baselines/reference/autoAccessor11.types b/tests/baselines/reference/autoAccessor11.types new file mode 100644 index 00000000000..65a52437daf --- /dev/null +++ b/tests/baselines/reference/autoAccessor11.types @@ -0,0 +1,30 @@ +=== tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessor11.ts === +class C { +>C : C + + accessor +>accessor : any + + a +>a : any + + static accessor +>accessor : any + + b +>b : any + + static + accessor +>accessor : any + + c +>c : any + + accessor accessor +>accessor : any + + d; +>d : any +} + diff --git a/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessor11.ts b/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessor11.ts new file mode 100644 index 00000000000..69b1802417f --- /dev/null +++ b/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessor11.ts @@ -0,0 +1,16 @@ +// @target: es2022 + +class C { + accessor + a + + static accessor + b + + static + accessor + c + + accessor accessor + d; +}