Invalid language tests

- in-statement-position-label-statement.js is an Annex-B test (B.3.2 Labelled Function Declarations), moved to annexB directory
- identifier-let-allowed-as-lefthandside-expression-strict.js needs to check for a SyntaxError (ES6, 12.1.1)
- Remove sort() calls in test/built-ins/Object/getOwnPropertyNames/*.js
- Remove sort() calls in test/language/block-scope/syntax/for-in/acquire-properties-from-*.js
- verifyConfigurable() needs to called last in test/built-ins/Object/is/length.js
- All productions within ClassBody are implicitly strict, update test/language/class/method-definition/yield-as-*.js accordingly
- Remove unnecessary noStrict flag in test/language/class/method-definition/yield-as-generator-method-binding-identifier.js
- Check own symbols are returned in property creation order from Object.getOwnPropertySymbols():
  - test/language/computed-property-names/basics/symbol.js
  - test/language/computed-property-names/class/method/symbol.js
  - test/language/computed-property-names/class/static/method-symbol.js
  - test/language/computed-property-names/object/method/symbol.js
- Fix copy-paste error in test/language/expressions/object/method-definition/yield-as-function-expression-binding-identifier.js
This commit is contained in:
André Bargull 2015-04-27 16:56:19 +02:00
parent 989b7ec22d
commit e31ae1ad9f
20 changed files with 52 additions and 124 deletions

View File

@ -0,0 +1,11 @@
// Copyright (C) 2011 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 13.1
description: >
function declarations in statement position in non-strict mode:
label: Statement
flags: [noStrict]
---*/
label: function g() {}

View File

@ -15,7 +15,6 @@ includes:
function testcase() {
var result = Object.getOwnPropertyNames(Object);
var expResult = ["getPrototypeOf", "getOwnPropertyDescriptor", "getOwnPropertyNames", "create", "defineProperty", "defineProperties", "seal", "freeze", "preventExtensions", "isSealed", "isFrozen", "isExtensible", "keys", "prototype", "length"];
var found;
return arrayContains(result, expResult);
}

View File

@ -19,9 +19,9 @@ function testcase() {
var str = new String("abc");
str[5] = "de";
var expected = ["0", "1", "2", "length", "5"];
var expected = ["0", "1", "2", "5", "length"];
var actual = Object.getOwnPropertyNames(str);
return compareArray(actual.sort(), expected.sort());
return compareArray(actual, expected);
}
runTestCase(testcase);

View File

@ -19,6 +19,6 @@ function testcase() {
var expected = ["0", "1", "2", "length"];
var actual = Object.getOwnPropertyNames(arr);
return compareArray(actual.sort(), expected.sort());
return compareArray(actual, expected);
}
runTestCase(testcase);

View File

@ -42,6 +42,6 @@ function testcase() {
var actual = Object.getOwnPropertyNames(obj);
var expected = ["a", "b", "c", "d"];
return compareArray(actual.sort(), expected.sort());
return compareArray(actual, expected);
}
runTestCase(testcase);

View File

@ -13,6 +13,5 @@ includes: [propertyHelper.js]
assert.sameValue(Object.is.length, 2, "The value of `Object.is.length` is `2`");
verifyNotEnumerable(Object.is, "length");
verifyConfigurable(Object.is, "length");
verifyNotWritable(Object.is, "length");
verifyConfigurable(Object.is, "length");

View File

@ -4,18 +4,19 @@
es6id: 13.1
description: >
for-in to acquire properties from array
includes: [compareArray.js]
includes: [arrayContains.js]
---*/
function props(x) {
var array = [];
for (let p in x) array.push(p);
return array.sort();
return array;
}
assert.sameValue(props([]).length, 0);
assert.sameValue(props([1]).length, 1);
assert.sameValue(props([1,2]).length, 2);
assert.sameValue(props([1,2,3]).length, 3);
assert(compareArray(props([1]), ["0"]));
assert(compareArray(props([1,2]), ["0", "1"]));
assert(compareArray(props([1,2,3]), ["0", "1", "2"]));
assert(arrayContains(props([1]), ["0"]));
assert(arrayContains(props([1,2]), ["0", "1"]));
assert(arrayContains(props([1,2,3]), ["0", "1", "2"]));

View File

@ -4,18 +4,19 @@
es6id: 13.1
description: >
for-in to acquire properties from object
includes: [compareArray.js]
includes: [arrayContains.js]
---*/
function props(x) {
var array = [];
for (let p in x) array.push(p);
return array.sort();
return array;
}
assert.sameValue(props({}).length, 0);
assert.sameValue(props({x:1}).length, 1);
assert.sameValue(props({x:1, y:2}).length, 2);
assert.sameValue(props({x:1, y:2, zoom:3}).length, 3);
assert(compareArray(props({x:1}), ["x"]));
assert(compareArray(props({x:1, y:2}), ["x", "y"]));
assert(compareArray(props({x:1, y:2, zoom:3}), ["x", "y", "zoom"]));
assert(arrayContains(props({x:1}), ["x"]));
assert(arrayContains(props({x:1, y:2}), ["x", "y"]));
assert(arrayContains(props({x:1, y:2, zoom:3}), ["x", "y", "zoom"]));

View File

@ -3,21 +3,15 @@
/*---
description: >
`yield` may be used as the binding identifier of a function expression
within generator bodies.
`yield` may not be used as the binding identifier of a function
expression within classes.
features: [generators]
es6id: 14.1
flags: [noStrict]
negative: SyntaxError
---*/
var result;
class A {
*g() {
(function yield() {});
}
}
result = A.prototype.g().next();
assert.sameValue(result.value, undefined);
assert.sameValue(result.done, true);

View File

@ -7,7 +7,6 @@
strict mode.
features: [generators]
es6id: 12.1.1
flags: [noStrict]
---*/
var iter, result;

View File

@ -3,14 +3,13 @@
/*---
description: >
`yield` is not a reserved keyword within normal function bodies declared
within generator function bodies.
`yield` is a reserved keyword within normal function bodies declared
within classes.
features: [generators]
es6id: 12.1.1
flags: [noStrict]
negative: SyntaxError
---*/
var result;
class A {
*g() {
function h() {
@ -18,7 +17,3 @@ class A {
}
}
}
result = A.prototype.g().next();
assert.sameValue(result.value, undefined);
assert.sameValue(result.done, true);

View File

@ -27,24 +27,7 @@ assert(
compareArray(Object.keys(object), ['a', 'c']),
"`compareArray(Object.keys(object), ['a', 'c'])` returns `true`"
);
// compareArray expects arguments to be sorted,
// which will cause an array containing symbols to
// throw an exception when toString() is called.
//
// Since there is no guarantee of order:
//
// - Assert only that the symbol is present
// - Assert that the length is correct
//
var symbols = Object.getOwnPropertySymbols(object);
assert(
symbols.indexOf(sym1) !== -1,
"The result of `symbols.indexOf(sym1) !== -1` is `true`, after executing `var symbols = Object.getOwnPropertySymbols(object);`"
compareArray(Object.getOwnPropertySymbols(object), [sym1, sym2]),
"`compareArray(Object.getOwnPropertySymbols(object), [sym1, sym2])` returns `true`"
);
assert(
symbols.indexOf(sym2) !== -1,
"The result of `symbols.indexOf(sym2) !== -1` is `true`, after executing `var symbols = Object.getOwnPropertySymbols(object);`"
);
assert.sameValue(symbols.length, 2, "The value of `symbols.length` is `2`, after executing `var symbols = Object.getOwnPropertySymbols(object);`");

View File

@ -31,24 +31,7 @@ assert(
compareArray(Object.getOwnPropertyNames(C.prototype), ['constructor', 'a', 'c']),
"`compareArray(Object.getOwnPropertyNames(C.prototype), ['constructor', 'a', 'c'])` returns `true`"
);
// compareArray expects arguments to be sorted,
// which will cause an array containing symbols to
// throw an exception when toString() is called.
//
// Since there is no guarantee of order:
//
// - Assert only that the symbol is present
// - Assert that the length is correct
//
var symbols = Object.getOwnPropertySymbols(C.prototype);
assert(
symbols.indexOf(sym1) !== -1,
"The result of `symbols.indexOf(sym1) !== -1` is `true`, after executing `var symbols = Object.getOwnPropertySymbols(C.prototype);`"
compareArray(Object.getOwnPropertySymbols(C.prototype), [sym1, sym2]),
"`compareArray(Object.getOwnPropertySymbols(C.prototype), [sym1, sym2])` returns `true`"
);
assert(
symbols.indexOf(sym2) !== -1,
"The result of `symbols.indexOf(sym2) !== -1` is `true`, after executing `var symbols = Object.getOwnPropertySymbols(C.prototype);`"
);
assert.sameValue(symbols.length, 2, "The value of `symbols.length` is `2`, after executing `var symbols = Object.getOwnPropertySymbols(C.prototype);`");

View File

@ -21,6 +21,6 @@ assert(
"`compareArray(Object.keys(C), [])` returns `true`"
);
assert(
compareArray(Object.getOwnPropertyNames(C), ['1', '2', 'length', 'name', 'prototype', 'a', 'c']),
"`compareArray(Object.getOwnPropertyNames(C), ['1', '2', 'length', 'name', 'prototype', 'a', 'c'])` returns `true`"
compareArray(Object.getOwnPropertyNames(C), ['1', '2', 'length', 'prototype', 'a', 'c', 'name']),
"`compareArray(Object.getOwnPropertyNames(C), ['1', '2', 'length', 'prototype', 'a', 'c', 'name'])` returns `true`"
);

View File

@ -21,6 +21,6 @@ assert(
"`compareArray(Object.keys(C), [])` returns `true`"
);
assert(
compareArray(Object.getOwnPropertyNames(C), ['length', 'name', 'prototype', 'a', 'b', 'c', 'd']),
"`compareArray(Object.getOwnPropertyNames(C), ['length', 'name', 'prototype', 'a', 'b', 'c', 'd'])` returns `true`"
compareArray(Object.getOwnPropertyNames(C), ['length', 'prototype', 'a', 'b', 'c', 'd', 'name']),
"`compareArray(Object.getOwnPropertyNames(C), ['length', 'prototype', 'a', 'b', 'c', 'd', 'name'])` returns `true`"
);

View File

@ -23,32 +23,10 @@ assert(
"`compareArray(Object.keys(C), [])` returns `true`"
);
assert(
compareArray(Object.getOwnPropertyNames(C), ['length', 'name', 'prototype', 'a', 'c']),
"`compareArray(Object.getOwnPropertyNames(C), ['length', 'name', 'prototype', 'a', 'c'])` returns `true`"
);
// compareArray expects arguments to be sorted,
// which will cause an array containing symbols to
// throw an exception when toString() is called.
//
// Since there is no guarantee of order:
//
// - Assert only that the symbol is present
// - Assert that the length is correct
//
var symbols = Object.getOwnPropertySymbols(C);
assert(
symbols.indexOf(sym1) !== -1,
"The result of `symbols.indexOf(sym1) !== -1` is `true`, after executing `var symbols = Object.getOwnPropertySymbols(C);`"
compareArray(Object.getOwnPropertyNames(C), ['length', 'prototype', 'a', 'c', 'name']),
"`compareArray(Object.getOwnPropertyNames(C), ['length', 'prototype', 'a', 'c', 'name'])` returns `true`"
);
assert(
symbols.indexOf(sym2) !== -1,
"The result of `symbols.indexOf(sym2) !== -1` is `true`, after executing `var symbols = Object.getOwnPropertySymbols(C);`"
);
assert.sameValue(
symbols.length,
2,
"The value of `symbols.length` is `2`, after executing `var symbols = Object.getOwnPropertySymbols(C);`"
compareArray(Object.getOwnPropertySymbols(C), [sym1, sym2]),
"`compareArray(Object.getOwnPropertySymbols(C), [sym1, sym2])` returns `true`"
);

View File

@ -27,24 +27,7 @@ assert(
compareArray(Object.keys(object), ['a', 'c']),
"`compareArray(Object.keys(object), ['a', 'c'])` returns `true`"
);
// compareArray expects arguments to be sorted,
// which will cause an array containing symbols to
// throw an exception when toString() is called.
//
// Since there is no guarantee of order:
//
// - Assert only that the symbol is present
// - Assert that the length is correct
//
var symbols = Object.getOwnPropertySymbols(object);
assert(
symbols.indexOf(sym1) !== -1,
"The result of `symbols.indexOf(sym1) !== -1` is `true`, after executing `var symbols = Object.getOwnPropertySymbols(object);`"
compareArray(Object.getOwnPropertySymbols(object), [sym1, sym2]),
"`compareArray(Object.getOwnPropertySymbols(object), [sym1, sym2])` returns `true`"
);
assert(
symbols.indexOf(sym2) !== -1,
"The result of `symbols.indexOf(sym2) !== -1` is `true`, after executing `var symbols = Object.getOwnPropertySymbols(object);`"
);
assert.sameValue(symbols.length, 2, "The value of `symbols.length` is `2`, after executing `var symbols = Object.getOwnPropertySymbols(object);`");

View File

@ -17,7 +17,7 @@ var obj = {
}
};
result = A.prototype.g().next();
result = obj.g().next();
assert.sameValue(result.value, undefined);
assert.sameValue(result.done, true);

View File

@ -5,6 +5,8 @@ es6id: 13.1
description: >
function declarations in statement position in strict mode:
label: Statement
flags: [onlyStrict]
negative: SyntaxError
---*/
label: function g() {}

View File

@ -6,7 +6,7 @@ description: >
for declaration:
identifier "let" disallowed as lefthandside expression in strict mode
flags: [onlyStrict]
negative: ReferrenceError
negative: SyntaxError
---*/
var o = { a: 1 };
for (let in o) { }