2016-03-21 08:21:11 +01:00
|
|
|
// Copyright (C) 2016 Michael Ficarra. All rights reserved.
|
|
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
|
|
|
|
/*---
|
|
|
|
description: >
|
2016-04-21 21:55:54 +02:00
|
|
|
Ensure that the regular expression generally distinguishes between valid
|
|
|
|
and invalid forms of the NativeFunction grammar production.
|
|
|
|
includes: [nativeFunctionMatcher.js]
|
2016-03-21 08:21:11 +01:00
|
|
|
---*/
|
|
|
|
|
2020-07-26 07:03:44 +02:00
|
|
|
[
|
|
|
|
'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) {
|
2020-09-16 19:57:40 +02:00
|
|
|
throw new Error(`${JSON.stringify(s)} should pass`);
|
2020-07-26 07:03:44 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
[
|
|
|
|
'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) {
|
2020-09-16 19:57:40 +02:00
|
|
|
throw new Error(`${JSON.stringify(s)} should fail`);
|
2020-07-26 07:03:44 +02:00
|
|
|
}
|
|
|
|
});
|