summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/harness/nativeFunctionMatcher.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/harness/nativeFunctionMatcher.js')
-rw-r--r--js/src/tests/test262/harness/nativeFunctionMatcher.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/js/src/tests/test262/harness/nativeFunctionMatcher.js b/js/src/tests/test262/harness/nativeFunctionMatcher.js
new file mode 100644
index 0000000000..f5903aa710
--- /dev/null
+++ b/js/src/tests/test262/harness/nativeFunctionMatcher.js
@@ -0,0 +1,62 @@
+// Copyright (C) 2016 Michael Ficarra. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+ Ensure that the regular expression generally distinguishes between valid
+ and invalid forms of the NativeFunction grammar production.
+includes: [nativeFunctionMatcher.js]
+---*/
+
+[
+ 'function(){[native code]}',
+ 'function(){ [native code] }',
+ 'function ( ) { [ native code ] }',
+ 'function a(){ [native code] }',
+ 'function a(){ /* } */ [native code] }',
+ `function a() {
+ // test
+ [native code]
+ /* test */
+ }`,
+ 'function(a, b = function() { []; }) { [native code] }',
+ 'function [Symbol.xyz]() { [native code] }',
+ 'function [x[y][z[d]()]]() { [native code] }',
+ 'function ["]"] () { [native code] }',
+ 'function [\']\'] () { [native code] }',
+ '/* test */ function() { [native code] }',
+ 'function() { [native code] } /* test */',
+ 'function() { [native code] } // test',
+].forEach((s) => {
+ try {
+ validateNativeFunctionSource(s);
+ } catch (unused) {
+ throw new Error(`${JSON.stringify(s)} should pass`);
+ }
+});
+
+[
+ 'native code',
+ 'function() {}',
+ 'function(){ "native code" }',
+ 'function(){ [] native code }',
+ 'function()) { [native code] }',
+ 'function(() { [native code] }',
+ 'function []] () { [native code] }',
+ 'function [[] () { [native code] }',
+ 'function ["]] () { [native code] }',
+ 'function [\']] () { [native code] }',
+ 'function() { [native code] /* }',
+ '// function() { [native code] }',
+].forEach((s) => {
+ let fail = false;
+ try {
+ validateNativeFunctionSource(s);
+ fail = true;
+ } catch (unused) {}
+ if (fail) {
+ throw new Error(`${JSON.stringify(s)} should fail`);
+ }
+});
+
+reportCompare(0, 0);