summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/harness/nativeFunctionMatcher.js
blob: f5903aa7108dcc2282daaa9cee9ef859bfbad42f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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);