From 214e9969d5d1cb8c019f40d56bb877d28740e0a7 Mon Sep 17 00:00:00 2001 From: Valerie R Young <valerie@bocoup.com> Date: Mon, 30 Oct 2017 00:34:05 -0400 Subject: [PATCH] class fields: added tests for privatename production --- ...ls-decl-after-same-line-async-gen.template | 1 + ...decl-after-same-line-async-method.template | 1 + .../cls-decl-after-same-line-gen.template | 1 + .../cls-decl-after-same-line-method.template | 1 + ...-after-same-line-static-async-gen.template | 1 + ...ter-same-line-static-async-method.template | 1 + ...s-decl-after-same-line-static-gen.template | 1 + ...ecl-after-same-line-static-method.template | 1 + .../cls-decl-multiple-definitions.template | 1 + ...decl-multiple-stacked-definitions.template | 1 + .../cls-decl-new-no-sc-line-method.template | 1 + .../cls-decl-new-sc-line-generator.template | 1 + .../cls-decl-new-sc-line-method.template | 1 + .../cls-decl-regular-definitions.template | 1 + .../cls-decl-same-line-generator.template | 1 + .../cls-decl-same-line-method.template | 1 + .../default/cls-decl-wrapped-in-sc.template | 1 + ...ls-expr-after-same-line-async-gen.template | 1 + ...expr-after-same-line-async-method.template | 1 + .../cls-expr-after-same-line-gen.template | 1 + .../cls-expr-after-same-line-method.template | 1 + ...-after-same-line-static-async-gen.template | 1 + ...ter-same-line-static-async-method.template | 1 + ...s-expr-after-same-line-static-gen.template | 1 + ...xpr-after-same-line-static-method.template | 1 + .../cls-expr-multiple-definitions.template | 1 + ...expr-multiple-stacked-definitions.template | 1 + .../cls-expr-new-no-sc-line-method.template | 1 + .../cls-expr-new-sc-line-generator.template | 1 + .../cls-expr-new-sc-line-method.template | 1 + .../cls-expr-regular-definitions.template | 1 + .../cls-expr-same-line-generator.template | 1 + .../cls-expr-same-line-method.template | 1 + .../default/cls-expr-wrapped-in-sc.template | 1 + src/class-fields/private-names.case | 50 +++++++++++++++++++ src/class-fields/static-private-names.case | 50 +++++++++++++++++++ 36 files changed, 134 insertions(+) create mode 100644 src/class-fields/private-names.case create mode 100644 src/class-fields/static-private-names.case diff --git a/src/class-fields/default/cls-decl-after-same-line-async-gen.template b/src/class-fields/default/cls-decl-after-same-line-async-gen.template index 0e8b27edce..2b7019564c 100644 --- a/src/class-fields/default/cls-decl-after-same-line-async-gen.template +++ b/src/class-fields/default/cls-decl-after-same-line-async-gen.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition class C { async *m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-after-same-line-async-method.template b/src/class-fields/default/cls-decl-after-same-line-async-method.template index 531c7f835b..4834b53fc5 100644 --- a/src/class-fields/default/cls-decl-after-same-line-async-method.template +++ b/src/class-fields/default/cls-decl-after-same-line-async-method.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition class C { async m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-after-same-line-gen.template b/src/class-fields/default/cls-decl-after-same-line-gen.template index 876e0d8c5a..635294c5df 100644 --- a/src/class-fields/default/cls-decl-after-same-line-gen.template +++ b/src/class-fields/default/cls-decl-after-same-line-gen.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition class C { *m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-after-same-line-method.template b/src/class-fields/default/cls-decl-after-same-line-method.template index 5e8dffcbd2..3ad70efd6f 100644 --- a/src/class-fields/default/cls-decl-after-same-line-method.template +++ b/src/class-fields/default/cls-decl-after-same-line-method.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition class C { m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-after-same-line-static-async-gen.template b/src/class-fields/default/cls-decl-after-same-line-static-async-gen.template index 223bfd3455..60176379ae 100644 --- a/src/class-fields/default/cls-decl-after-same-line-static-async-gen.template +++ b/src/class-fields/default/cls-decl-after-same-line-static-async-gen.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition class C { static async *m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-after-same-line-static-async-method.template b/src/class-fields/default/cls-decl-after-same-line-static-async-method.template index 70e6085c1d..360df4a7f9 100644 --- a/src/class-fields/default/cls-decl-after-same-line-static-async-method.template +++ b/src/class-fields/default/cls-decl-after-same-line-static-async-method.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition class C { static async m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-after-same-line-static-gen.template b/src/class-fields/default/cls-decl-after-same-line-static-gen.template index d89d9975a2..2a9fdff3a0 100644 --- a/src/class-fields/default/cls-decl-after-same-line-static-gen.template +++ b/src/class-fields/default/cls-decl-after-same-line-static-gen.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition class C { static *m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-after-same-line-static-method.template b/src/class-fields/default/cls-decl-after-same-line-static-method.template index 0f412da85b..568b3c5647 100644 --- a/src/class-fields/default/cls-decl-after-same-line-static-method.template +++ b/src/class-fields/default/cls-decl-after-same-line-static-method.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition class C { static m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-multiple-definitions.template b/src/class-fields/default/cls-decl-multiple-definitions.template index e481f94dda..5671a0b6c4 100644 --- a/src/class-fields/default/cls-decl-multiple-definitions.template +++ b/src/class-fields/default/cls-decl-multiple-definitions.template @@ -14,6 +14,7 @@ class C { /*{ fields }*/ m2() { return 39 } bar = "barbaz"; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-multiple-stacked-definitions.template b/src/class-fields/default/cls-decl-multiple-stacked-definitions.template index 6a16f68f96..36515109ea 100644 --- a/src/class-fields/default/cls-decl-multiple-stacked-definitions.template +++ b/src/class-fields/default/cls-decl-multiple-stacked-definitions.template @@ -12,6 +12,7 @@ class C { /*{ fields }*/ foo = "foobar" bar = "barbaz"; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-new-no-sc-line-method.template b/src/class-fields/default/cls-decl-new-no-sc-line-method.template index d87e9152e9..56037a513a 100644 --- a/src/class-fields/default/cls-decl-new-no-sc-line-method.template +++ b/src/class-fields/default/cls-decl-new-no-sc-line-method.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition class C { /*{ fields }*/ m() { return 42; } +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-new-sc-line-generator.template b/src/class-fields/default/cls-decl-new-sc-line-generator.template index 3be29af985..40098a7810 100644 --- a/src/class-fields/default/cls-decl-new-sc-line-generator.template +++ b/src/class-fields/default/cls-decl-new-sc-line-generator.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition class C { /*{ fields }*/; *m() { return 42; } +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-new-sc-line-method.template b/src/class-fields/default/cls-decl-new-sc-line-method.template index 640244370a..6f56356466 100644 --- a/src/class-fields/default/cls-decl-new-sc-line-method.template +++ b/src/class-fields/default/cls-decl-new-sc-line-method.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition class C { /*{ fields }*/; m() { return 42; } +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-regular-definitions.template b/src/class-fields/default/cls-decl-regular-definitions.template index 9d1ee0c283..4ccdd76f7f 100644 --- a/src/class-fields/default/cls-decl-regular-definitions.template +++ b/src/class-fields/default/cls-decl-regular-definitions.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition class C { /*{ fields }*/ +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-same-line-generator.template b/src/class-fields/default/cls-decl-same-line-generator.template index 1c4fa07d71..182d9df50d 100644 --- a/src/class-fields/default/cls-decl-same-line-generator.template +++ b/src/class-fields/default/cls-decl-same-line-generator.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition class C { /*{ fields }*/; *m() { return 42; } +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-same-line-method.template b/src/class-fields/default/cls-decl-same-line-method.template index 2a825bee8b..c94c864bdd 100644 --- a/src/class-fields/default/cls-decl-same-line-method.template +++ b/src/class-fields/default/cls-decl-same-line-method.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition class C { /*{ fields }*/; m() { return 42; } +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-decl-wrapped-in-sc.template b/src/class-fields/default/cls-decl-wrapped-in-sc.template index 5d04a5622e..b76403262a 100644 --- a/src/class-fields/default/cls-decl-wrapped-in-sc.template +++ b/src/class-fields/default/cls-decl-wrapped-in-sc.template @@ -12,6 +12,7 @@ class C { ;;;; ;;;;;;/*{ fields }*/;;;;;;; ;;;; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-after-same-line-async-gen.template b/src/class-fields/default/cls-expr-after-same-line-async-gen.template index cb27c785c8..3a1a6f4630 100644 --- a/src/class-fields/default/cls-expr-after-same-line-async-gen.template +++ b/src/class-fields/default/cls-expr-after-same-line-async-gen.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition var C = class { async *m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-after-same-line-async-method.template b/src/class-fields/default/cls-expr-after-same-line-async-method.template index eafc614d7b..87c137ce2d 100644 --- a/src/class-fields/default/cls-expr-after-same-line-async-method.template +++ b/src/class-fields/default/cls-expr-after-same-line-async-method.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition var C = class { async m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-after-same-line-gen.template b/src/class-fields/default/cls-expr-after-same-line-gen.template index 07e7a485d6..58aa427d3a 100644 --- a/src/class-fields/default/cls-expr-after-same-line-gen.template +++ b/src/class-fields/default/cls-expr-after-same-line-gen.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition var C = class { *m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-after-same-line-method.template b/src/class-fields/default/cls-expr-after-same-line-method.template index 70fca8fe22..d9e6703d6a 100644 --- a/src/class-fields/default/cls-expr-after-same-line-method.template +++ b/src/class-fields/default/cls-expr-after-same-line-method.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition var C = class { m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-after-same-line-static-async-gen.template b/src/class-fields/default/cls-expr-after-same-line-static-async-gen.template index 1f34b5cf87..f19896d7af 100644 --- a/src/class-fields/default/cls-expr-after-same-line-static-async-gen.template +++ b/src/class-fields/default/cls-expr-after-same-line-static-async-gen.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition var C = class { static async *m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-after-same-line-static-async-method.template b/src/class-fields/default/cls-expr-after-same-line-static-async-method.template index e4a9657d77..0b0ae19ec4 100644 --- a/src/class-fields/default/cls-expr-after-same-line-static-async-method.template +++ b/src/class-fields/default/cls-expr-after-same-line-static-async-method.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition var C = class { static async m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-after-same-line-static-gen.template b/src/class-fields/default/cls-expr-after-same-line-static-gen.template index c64467527d..1eff6019a1 100644 --- a/src/class-fields/default/cls-expr-after-same-line-static-gen.template +++ b/src/class-fields/default/cls-expr-after-same-line-static-gen.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition var C = class { static *m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-after-same-line-static-method.template b/src/class-fields/default/cls-expr-after-same-line-static-method.template index 56f677a9bf..1621379473 100644 --- a/src/class-fields/default/cls-expr-after-same-line-static-method.template +++ b/src/class-fields/default/cls-expr-after-same-line-static-method.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition var C = class { static m() { return 42; } /*{ fields }*/; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-multiple-definitions.template b/src/class-fields/default/cls-expr-multiple-definitions.template index 543b9f2b0f..8a786bf9e5 100644 --- a/src/class-fields/default/cls-expr-multiple-definitions.template +++ b/src/class-fields/default/cls-expr-multiple-definitions.template @@ -14,6 +14,7 @@ var C = class { /*{ fields }*/ m2() { return 39 } bar = "barbaz"; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-multiple-stacked-definitions.template b/src/class-fields/default/cls-expr-multiple-stacked-definitions.template index 6bf9a746f5..a1c53aee19 100644 --- a/src/class-fields/default/cls-expr-multiple-stacked-definitions.template +++ b/src/class-fields/default/cls-expr-multiple-stacked-definitions.template @@ -12,6 +12,7 @@ var C = class { /*{ fields }*/ foo = "foobar" bar = "barbaz"; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-new-no-sc-line-method.template b/src/class-fields/default/cls-expr-new-no-sc-line-method.template index 88045824da..50e6762ada 100644 --- a/src/class-fields/default/cls-expr-new-no-sc-line-method.template +++ b/src/class-fields/default/cls-expr-new-no-sc-line-method.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition var C = class { /*{ fields }*/ m() { return 42; } +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-new-sc-line-generator.template b/src/class-fields/default/cls-expr-new-sc-line-generator.template index 022c5b8ffa..1433173685 100644 --- a/src/class-fields/default/cls-expr-new-sc-line-generator.template +++ b/src/class-fields/default/cls-expr-new-sc-line-generator.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition var C = class { /*{ fields }*/; *m() { return 42; } +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-new-sc-line-method.template b/src/class-fields/default/cls-expr-new-sc-line-method.template index 04cc5d7f1b..3e7291ad66 100644 --- a/src/class-fields/default/cls-expr-new-sc-line-method.template +++ b/src/class-fields/default/cls-expr-new-sc-line-method.template @@ -11,6 +11,7 @@ esid: prod-FieldDefinition var C = class { /*{ fields }*/; m() { return 42; } +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-regular-definitions.template b/src/class-fields/default/cls-expr-regular-definitions.template index 65cea698c7..630c04f41c 100644 --- a/src/class-fields/default/cls-expr-regular-definitions.template +++ b/src/class-fields/default/cls-expr-regular-definitions.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition var C = class { /*{ fields }*/ +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-same-line-generator.template b/src/class-fields/default/cls-expr-same-line-generator.template index b85431604a..c6ee64851f 100644 --- a/src/class-fields/default/cls-expr-same-line-generator.template +++ b/src/class-fields/default/cls-expr-same-line-generator.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition var C = class { /*{ fields }*/; *m() { return 42; } +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-same-line-method.template b/src/class-fields/default/cls-expr-same-line-method.template index 2b06fe7329..4c9602cafc 100644 --- a/src/class-fields/default/cls-expr-same-line-method.template +++ b/src/class-fields/default/cls-expr-same-line-method.template @@ -10,6 +10,7 @@ esid: prod-FieldDefinition var C = class { /*{ fields }*/; m() { return 42; } +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/default/cls-expr-wrapped-in-sc.template b/src/class-fields/default/cls-expr-wrapped-in-sc.template index 6646d1b4c1..4f7397057f 100644 --- a/src/class-fields/default/cls-expr-wrapped-in-sc.template +++ b/src/class-fields/default/cls-expr-wrapped-in-sc.template @@ -12,6 +12,7 @@ var C = class { ;;;; ;;;;;;/*{ fields }*/;;;;;;; ;;;; +/*{ privateinspectionfunctions }*/ } var c = new C(); diff --git a/src/class-fields/private-names.case b/src/class-fields/private-names.case new file mode 100644 index 0000000000..6987bcd7b2 --- /dev/null +++ b/src/class-fields/private-names.case @@ -0,0 +1,50 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: static literal private names +info: | + ClassElement: + ... + FieldDefinition ; + + FieldDefinition: + ClassElementName Initializer_opt + + ClassElementName: + PrivateName + + PrivateName: + #IdentifierName +template: default +---*/ + +//- fields +#x; #y +//- privateinspectionfunctions + x() { + this.#x = 42; + return this.#x; + } + y() { + this.#y = 43; + return this.#y; + } +//- assertions + +// Test the private fields do not appear as properties before set to value +assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#x"), false, "test 1"); +assert.sameValue(Object.hasOwnProperty.call(C, "#x"), false, "test 2"); +assert.sameValue(Object.hasOwnProperty.call(c, "#x"), false, "test 3"); + +assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#y"), false, "test 4"); +assert.sameValue(Object.hasOwnProperty.call(C, "#y"), false, "test 5"); +assert.sameValue(Object.hasOwnProperty.call(c, "#y"), false, "test 6"); + +// Test if private fields can be sucessfully accessed and set to value +assert.sameValue(c.x(), 42, "test 7"); +assert.sameValue(c.y(), 43, "test 8"); + +// Test the private fields do not appear as properties before after set to value +assert.sameValue(Object.hasOwnProperty.call(c, "#x"), false, "test 9"); +assert.sameValue(Object.hasOwnProperty.call(c, "#y"), false, "test 10"); diff --git a/src/class-fields/static-private-names.case b/src/class-fields/static-private-names.case new file mode 100644 index 0000000000..464b53a9e9 --- /dev/null +++ b/src/class-fields/static-private-names.case @@ -0,0 +1,50 @@ +// Copyright (C) 2017 Valerie Young. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: literal private names +info: | + ClassElement: + ... + static FieldDefinition ; + + FieldDefinition: + ClassElementName Initializer_opt + + ClassElementName: + PrivateName + + PrivateName: + #IdentifierName +template: default +---*/ + +//- fields +static #x; static #y +//- privateinspectionfunctions + static x() { + this.#x = 42; + return this.#x; + } + static y() { + this.#y = 43; + return this.#y; + } +//- assertions + +// Test the private fields do not appear as properties before set to value +assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#x"), false, "test 1"); +assert.sameValue(Object.hasOwnProperty.call(C, "#x"), false, "test 2"); +assert.sameValue(Object.hasOwnProperty.call(c, "#x"), false, "test 3"); + +assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#y"), false, "test 4"); +assert.sameValue(Object.hasOwnProperty.call(C, "#y"), false, "test 5"); +assert.sameValue(Object.hasOwnProperty.call(c, "#y"), false, "test 6"); + +// Test if private fields can be sucessfully accessed and set to value +assert.sameValue(C.x(), 42, "test 7"); +assert.sameValue(C.y(), 43, "test 8"); + +// Test the private fields do not appear as properties before after set to value +assert.sameValue(Object.hasOwnProperty.call(C, "#x"), false, "test 9"); +assert.sameValue(Object.hasOwnProperty.call(C, "#y"), false, "test 10"); -- GitLab