From 214e9969d5d1cb8c019f40d56bb877d28740e0a7 Mon Sep 17 00:00:00 2001 From: Valerie R Young Date: Mon, 30 Oct 2017 00:34:05 -0400 Subject: class fields: added tests for privatename production --- .../cls-decl-after-same-line-async-gen.template | 1 + .../cls-decl-after-same-line-async-method.template | 1 + .../default/cls-decl-after-same-line-gen.template | 1 + .../cls-decl-after-same-line-method.template | 1 + ...-decl-after-same-line-static-async-gen.template | 1 + ...cl-after-same-line-static-async-method.template | 1 + .../cls-decl-after-same-line-static-gen.template | 1 + ...cls-decl-after-same-line-static-method.template | 1 + .../default/cls-decl-multiple-definitions.template | 1 + .../cls-decl-multiple-stacked-definitions.template | 1 + .../cls-decl-new-no-sc-line-method.template | 1 + .../cls-decl-new-sc-line-generator.template | 1 + .../default/cls-decl-new-sc-line-method.template | 1 + .../default/cls-decl-regular-definitions.template | 1 + .../default/cls-decl-same-line-generator.template | 1 + .../default/cls-decl-same-line-method.template | 1 + .../default/cls-decl-wrapped-in-sc.template | 1 + .../cls-expr-after-same-line-async-gen.template | 1 + .../cls-expr-after-same-line-async-method.template | 1 + .../default/cls-expr-after-same-line-gen.template | 1 + .../cls-expr-after-same-line-method.template | 1 + ...-expr-after-same-line-static-async-gen.template | 1 + ...pr-after-same-line-static-async-method.template | 1 + .../cls-expr-after-same-line-static-gen.template | 1 + ...cls-expr-after-same-line-static-method.template | 1 + .../default/cls-expr-multiple-definitions.template | 1 + .../cls-expr-multiple-stacked-definitions.template | 1 + .../cls-expr-new-no-sc-line-method.template | 1 + .../cls-expr-new-sc-line-generator.template | 1 + .../default/cls-expr-new-sc-line-method.template | 1 + .../default/cls-expr-regular-definitions.template | 1 + .../default/cls-expr-same-line-generator.template | 1 + .../default/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 (limited to 'src') 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 0e8b27edc..2b7019564 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 531c7f835..4834b53fc 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 876e0d8c5..635294c5d 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 5e8dffcbd..3ad70efd6 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 223bfd345..60176379a 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 70e6085c1..360df4a7f 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 d89d9975a..2a9fdff3a 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 0f412da85..568b3c564 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 e481f94dd..5671a0b6c 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 6a16f68f9..36515109e 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 d87e9152e..56037a513 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 3be29af98..40098a781 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 640244370..6f5635646 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 9d1ee0c28..4ccdd76f7 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 1c4fa07d7..182d9df50 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 2a825bee8..c94c864bd 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 5d04a5622..b76403262 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 cb27c785c..3a1a6f463 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 eafc614d7..87c137ce2 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 07e7a485d..58aa427d3 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 70fca8fe2..d9e6703d6 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 1f34b5cf8..f19896d7a 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 e4a9657d7..0b0ae19ec 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 c64467527..1eff6019a 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 56f677a9b..162137947 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 543b9f2b0..8a786bf9e 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 6bf9a746f..a1c53aee1 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 88045824d..50e6762ad 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 022c5b8ff..143317368 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 04cc5d7f1..3e7291ad6 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 65cea698c..630c04f41 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 b85431604..c6ee64851 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 2b06fe732..4c9602caf 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 6646d1b4c..4f7397057 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 000000000..6987bcd7b --- /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 000000000..464b53a9e --- /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"); -- cgit v1.2.1