From b8e92c2341e9a84ea9f479939d230f4f26313e8e Mon Sep 17 00:00:00 2001 From: Caio Lima <ticaiolima@gmail.com> Date: Fri, 8 Feb 2019 13:07:30 -0200 Subject: [PATCH] Added case to verify invalid syntax when using private field on object destructuring --- ...private-field-on-object-destructuring.case | 24 ++++++++++++++ ...r-private-field-on-object-destructuring.js | 33 +++++++++++++++++++ ...r-private-field-on-object-destructuring.js | 33 +++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 src/class-elements/grammar-private-field-on-object-destructuring.case create mode 100644 test/language/expressions/class/elements/syntax/early-errors/grammar-private-field-on-object-destructuring.js create mode 100644 test/language/statements/class/elements/syntax/early-errors/grammar-private-field-on-object-destructuring.js diff --git a/src/class-elements/grammar-private-field-on-object-destructuring.case b/src/class-elements/grammar-private-field-on-object-destructuring.case new file mode 100644 index 0000000000..e2c9bc742a --- /dev/null +++ b/src/class-elements/grammar-private-field-on-object-destructuring.case @@ -0,0 +1,24 @@ +// Copyright (C) 2019 Caio Lima. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: Acessing private field from object destructuring pattern is not a valid syntax +info: | + Updated Productions + + ObjectAssignmentPattern[Yield, Await]: + {} + {AssignmentRestProperty[?Yield, ?Await]} + {AssignmentPropertyList[?Yield, ?Await]} + {AssignmentPropertyList[?Yield, ?Await],AssignmentRestProperty[?Yield, ?Await]opt} +template: syntax/invalid +features: [class-fields-private] +---*/ + +//- elements +#x = 1; + +destructureX() { + const { #x: x } = this; + return x; +} diff --git a/test/language/expressions/class/elements/syntax/early-errors/grammar-private-field-on-object-destructuring.js b/test/language/expressions/class/elements/syntax/early-errors/grammar-private-field-on-object-destructuring.js new file mode 100644 index 0000000000..797499c9f7 --- /dev/null +++ b/test/language/expressions/class/elements/syntax/early-errors/grammar-private-field-on-object-destructuring.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/grammar-private-field-on-object-destructuring.case +// - src/class-elements/syntax/invalid/cls-expr-elements-invalid-syntax.template +/*--- +description: Acessing private field from object destructuring pattern is not a valid syntax (class expression) +esid: prod-ClassElement +features: [class-fields-private, class] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Updated Productions + + ObjectAssignmentPattern[Yield, Await]: + {} + {AssignmentRestProperty[?Yield, ?Await]} + {AssignmentPropertyList[?Yield, ?Await]} + {AssignmentPropertyList[?Yield, ?Await],AssignmentRestProperty[?Yield, ?Await]opt} + +---*/ + + +$DONOTEVALUATE(); + +var C = class { + #x = 1; + + destructureX() { + const { #x: x } = this; + return x; + } +}; diff --git a/test/language/statements/class/elements/syntax/early-errors/grammar-private-field-on-object-destructuring.js b/test/language/statements/class/elements/syntax/early-errors/grammar-private-field-on-object-destructuring.js new file mode 100644 index 0000000000..08a1478906 --- /dev/null +++ b/test/language/statements/class/elements/syntax/early-errors/grammar-private-field-on-object-destructuring.js @@ -0,0 +1,33 @@ +// This file was procedurally generated from the following sources: +// - src/class-elements/grammar-private-field-on-object-destructuring.case +// - src/class-elements/syntax/invalid/cls-decl-elements-invalid-syntax.template +/*--- +description: Acessing private field from object destructuring pattern is not a valid syntax (class declaration) +esid: prod-ClassElement +features: [class-fields-private, class] +flags: [generated] +negative: + phase: parse + type: SyntaxError +info: | + Updated Productions + + ObjectAssignmentPattern[Yield, Await]: + {} + {AssignmentRestProperty[?Yield, ?Await]} + {AssignmentPropertyList[?Yield, ?Await]} + {AssignmentPropertyList[?Yield, ?Await],AssignmentRestProperty[?Yield, ?Await]opt} + +---*/ + + +$DONOTEVALUATE(); + +class C { + #x = 1; + + destructureX() { + const { #x: x } = this; + return x; + } +} -- GitLab