| // 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`); |
| } |
| }); |