summaryrefslogtreecommitdiffstats
path: root/js/src/tests/js1_8/regress/regress-499524.js
blob: 2b996eda2b6be8328239b6cf9afd27afdedb976e (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
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */

/*
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/licenses/publicdomain/
 */

function isSyntaxError(code) {
  try {
    eval(code);
    return false;
  } catch (exception) {
    if (SyntaxError.prototype.isPrototypeOf(exception))
      return true;
    throw exception;
  };
};

/* 
 * Duplicate parameter names must be tolerated (as per ES3), unless
 * the parameter list uses destructuring, in which case we claim the
 * user has opted in to a modicum of sanity, and we forbid duplicate
 * parameter names.
 */
assertEq(isSyntaxError("function f(x,x){}"),                false);

assertEq(isSyntaxError("function f(x,[x]){})"),             true);
assertEq(isSyntaxError("function f(x,{y:x}){})"),           true);
assertEq(isSyntaxError("function f(x,{x}){})"),             true);

assertEq(isSyntaxError("function f([x],x){})"),             true);
assertEq(isSyntaxError("function f({y:x},x){})"),           true);
assertEq(isSyntaxError("function f({x},x){})"),             true);

assertEq(isSyntaxError("function f([x,x]){}"),              true);
assertEq(isSyntaxError("function f({x,x}){}"),              true);
assertEq(isSyntaxError("function f({y:x,z:x}){}"),          true);

assertEq(isSyntaxError("function f(x,x,[y]){}"),            true);
assertEq(isSyntaxError("function f(x,x,{y}){}"),            true);
assertEq(isSyntaxError("function f([y],x,x){}"),            true);
assertEq(isSyntaxError("function f({y},x,x){}"),            true);

assertEq(isSyntaxError("function f(a,b,c,d,e,f,g,h,b,[y]){}"),  true);
assertEq(isSyntaxError("function f([y],a,b,c,d,e,f,g,h,a){}"),  true);
assertEq(isSyntaxError("function f([a],b,c,d,e,f,g,h,i,a){}"),  true);
assertEq(isSyntaxError("function f(a,b,c,d,e,f,g,h,i,[a]){}"),  true);
assertEq(isSyntaxError("function f(a,b,c,d,e,f,g,h,i,[a]){}"),  true);

reportCompare(true, true);