Classfields: simple early errors test for privatename references in scripts

This commit is contained in:
Valerie R Young 2017-10-26 17:58:33 -04:00
parent f8456c6dac
commit 54f4d02aa6
24 changed files with 599 additions and 0 deletions

View File

@ -0,0 +1,23 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-semantics-static-semantics-early-errors
description: Early error when referencing privatename in constructor without being declared in class fields
info: |
Static Semantics: Early Errors
Module : ModuleBody
It is a Syntax Error if AllPrivateNamesValid of ModuleBody with an empty List as an argument is false.
features: [class-fields]
flags: [module]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {
constructor() {
this.#x;
}
}

View File

@ -0,0 +1,23 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-semantics-static-semantics-early-errors
description: Early error when referencing privatename in function without declaring in class
info: |
Static Semantics: Early Errors
Module : ModuleBody
It is a Syntax Error if AllPrivateNamesValid of ModuleBody with an empty List as an argument is false.
features: [class-fields]
flags: [module]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {
f() {
this.#x;
}
}

View File

@ -0,0 +1,21 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-semantics-static-semantics-early-errors
description: Early error when referencing privatename in field without being declared in class fields
info: |
Static Semantics: Early Errors
Module : ModuleBody
It is a Syntax Error if AllPrivateNamesValid of ModuleBody with an empty List as an argument is false.
features: [class-fields]
flags: [module]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {
y = this.#x;
}

View File

@ -0,0 +1,27 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-semantics-static-semantics-early-errors
description: Early error when referencing privatename that has not been declared in class.
info: |
Static Semantics: Early Errors
Static Semantics: Early Errors
Module : ModuleBody
It is a Syntax Error if AllPrivateNamesValid of ModuleBody with an empty List as an argument is false.
features: [class-fields]
flags: [module]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {
f() {
this.#x;
class D extends C {
#x;
}
}
}

View File

@ -0,0 +1,23 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-semantics-static-semantics-early-errors
description: Early error when referencing privatename outside of class
info: |
Static Semantics: Early Errors
Module : ModuleBody
It is a Syntax Error if AllPrivateNamesValid of ModuleBody with an empty List as an argument is false.
features: [class-fields]
flags: [module]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {
#x;
}
new C().#x;

View File

@ -0,0 +1,21 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-semantics-static-semantics-early-errors
description: Early error when referencing privatename outside of class.
info: |
Static Semantics: Early Errors
Module : ModuleBody
It is a Syntax Error if AllPrivateNamesValid of ModuleBody with an empty List as an argument is false.
features: [class-fields]
flags: [module]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {}
new C().#x;

View File

@ -0,0 +1,21 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-semantics-static-semantics-early-errors
description: Early error when referencing privatename on object, outside of class.
info: |
Static Semantics: Early Errors
Module : ModuleBody
It is a Syntax Error if AllPrivateNamesValid of ModuleBody with an empty List as an argument is false.
features: [class-fields]
flags: [module]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
obj = {};
obj.#x;

View File

@ -0,0 +1,21 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-semantics-static-semantics-early-errors
description: Early error when referencing privatename on object, outside of class.
info: |
Static Semantics: Early Errors
Module : ModuleBody
It is a Syntax Error if AllPrivateNamesValid of ModuleBody with an empty List as an argument is false.
features: [class-fields]
flags: [module]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
function f() {
this.#x;
}

View File

@ -0,0 +1,24 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename in constructor without being declared in class fields
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
...
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {
constructor() {
this.#x;
}
}

View File

@ -0,0 +1,24 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename in function in class without declaring in field
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
...
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {
f() {
this.#x;
}
}

View File

@ -0,0 +1,22 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename that has not been declared in class.
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
...
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {
y = this.#x;
}

View File

@ -0,0 +1,27 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename that has not been declared in class.
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
...
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {
f() {
this.#x;
class D extends C {
#x;
}
}
}

View File

@ -0,0 +1,24 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename outside of class
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
...
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {
#x;
}
new C().#x;

View File

@ -0,0 +1,22 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename outside of class.
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
...
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
class C {}
new C().#x;

View File

@ -0,0 +1,22 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename on object, outside of class.
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
...
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
obj = {};
obj.#x;

View File

@ -0,0 +1,22 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename on object, outside of class.
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
...
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
negative:
phase: early
type: SyntaxError
---*/
throw "Test262: This statement should not be evaluated.";
function f() {
this.#x;
}

View File

@ -0,0 +1,32 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename in constructor without being declared in class fields
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
2. If Script is parsed directly from PerformEval,
a. Let env be the running execution context's PrivateNameEnvironment.
b. Repeat while env is not null,
i. For each binding named N in env,
1. If names does not contain N, append N to names.
ii. Let env be env's outer environment reference.
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
---*/
var executed = false;
class C {
constructor() {
eval("executed = true; this.#x;");
}
}
assert.throws(SyntaxError, function() {
new C();
});
assert.sameValue(executed, false);

View File

@ -0,0 +1,32 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename in function in class without declaring in field
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
2. If Script is parsed directly from PerformEval,
a. Let env be the running execution context's PrivateNameEnvironment.
b. Repeat while env is not null,
i. For each binding named N in env,
1. If names does not contain N, append N to names.
ii. Let env be env's outer environment reference.
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
---*/
var executed = false;
class C {
f() {
eval("executed = true; this.#x;");
}
}
assert.throws(SyntaxError, function() {
new C().f();
});
assert.sameValue(executed, false);

View File

@ -0,0 +1,30 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename that has not been declared in class.
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
2. If Script is parsed directly from PerformEval,
a. Let env be the running execution context's PrivateNameEnvironment.
b. Repeat while env is not null,
i. For each binding named N in env,
1. If names does not contain N, append N to names.
ii. Let env be env's outer environment reference.
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
---*/
var executed = false;
class C {
y = eval("executed = true; this.#x;")
}
assert.throws(SyntaxError, function() {
new C();
});
assert.sameValue(executed, false);

View File

@ -0,0 +1,35 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename that has not been declared in class.
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
2. If Script is parsed directly from PerformEval,
a. Let env be the running execution context's PrivateNameEnvironment.
b. Repeat while env is not null,
i. For each binding named N in env,
1. If names does not contain N, append N to names.
ii. Let env be env's outer environment reference.
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
---*/
var executed = false;
class C {
f() {
eval("executed = true; this.#x;");
class D extends C {
#x;
}
}
}
assert.throws(SyntaxError, function() {
new C().f();
});
assert.sameValue(executed, false);

View File

@ -0,0 +1,30 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename outside of class
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
2. If Script is parsed directly from PerformEval,
a. Let env be the running execution context's PrivateNameEnvironment.
b. Repeat while env is not null,
i. For each binding named N in env,
1. If names does not contain N, append N to names.
ii. Let env be env's outer environment reference.
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
---*/
var executed = false;
class C {
#x;
}
assert.throws(SyntaxError, function() {
eval("executed = true; new C().#x");
});
assert.sameValue(executed, false);

View File

@ -0,0 +1,27 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename outside of class.
info: |
Static Semantics: Early Errors
Script : ScriptBody
1. Let names be an empty List.
2. If Script is parsed directly from PerformEval,
a. Let env be the running execution context's PrivateNameEnvironment.
b. Repeat while env is not null,
i. For each binding named N in env,
1. If names does not contain N, append N to names.
ii. Let env be env's outer environment reference.
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
---*/
var executed = false;
class C {}
assert.throws(SyntaxError, function() {
eval("executed = true; new C().#x");
});
assert.sameValue(executed, false);

View File

@ -0,0 +1,21 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename on object, outside of class.
info: |
Static Semantics: Early Errors
1. Let names be an empty List.
...
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
---*/
var executed = false;
var obj = {};
assert.throws(SyntaxError, function() {
eval("executed = true; obj.#x;");
});
assert.sameValue(executed, false);

View File

@ -0,0 +1,25 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-scripts-static-semantics-early-errors
description: Early error when referencing privatename on object, outside of class.
info: |
Static Semantics: Early Errors
1. Let names be an empty List.
...
3. If AllPrivateNamesValid of ScriptBody with the argument names is false, throw a SyntaxError exception.
features: [class-fields]
---*/
var executed = false;
function f() {
eval("executed = true; this.#x;");
}
assert.throws(SyntaxError, function() {
f();
});
assert.sameValue(executed, false);