destructuring-function-parameters.js (2204B)
1 // |reftest| slow skip-if(!xulRuntime.shell) 2 function test() { 3 4 function testParamPatternCombinations(makePattSrc, makePattPatt) { 5 var pattSrcs = makePatternCombinations(n => ("x" + n), makePattSrc); 6 var pattPatts = makePatternCombinations(n => (ident("x" + n)), makePattPatt); 7 8 for (var i = 0; i < pattSrcs.length; i++) { 9 function makeSrc(body) { 10 return "(function(" + pattSrcs[i].join(",") + ") " + body + ")"; 11 } 12 function makePatt(body) { 13 return funExpr(null, pattPatts[i], body); 14 } 15 16 // no upvars, block body 17 assertExpr(makeSrc("{ }"), makePatt(blockStmt([]))); 18 // upvars, block body 19 assertExpr(makeSrc("{ return [x1,x2,x3,x4,x5]; }"), 20 makePatt(blockStmt([returnStmt(arrExpr([ident("x1"), ident("x2"), ident("x3"), ident("x4"), ident("x5")]))]))); 21 } 22 } 23 24 testParamPatternCombinations(n => ("{a" + n + ":x" + n + "," + "b" + n + ":y" + n + "," + "c" + n + ":z" + n + "}"), 25 n => (objPatt([assignProp("a" + n, ident("x" + n)), 26 assignProp("b" + n, ident("y" + n)), 27 assignProp("c" + n, ident("z" + n))]))); 28 29 testParamPatternCombinations(n => ("{a" + n + ":x" + n + " = 10," + "b" + n + ":y" + n + " = 10," + "c" + n + ":z" + n + " = 10}"), 30 n => (objPatt([assignProp("a" + n, ident("x" + n), lit(10)), 31 assignProp("b" + n, ident("y" + n), lit(10)), 32 assignProp("c" + n, ident("z" + n), lit(10))]))); 33 34 testParamPatternCombinations(n => ("[x" + n + "," + "y" + n + "," + "z" + n + "]"), 35 n => (arrPatt([assignElem("x" + n), assignElem("y" + n), assignElem("z" + n)]))); 36 37 testParamPatternCombinations(n => ("[a" + n + ", ..." + "b" + n + "]"), 38 n => (arrPatt([assignElem("a" + n), spread(ident("b" + n))]))); 39 40 testParamPatternCombinations(n => ("[a" + n + ", " + "b" + n + " = 10]"), 41 n => (arrPatt([assignElem("a" + n), assignElem("b" + n, lit(10))]))); 42 43 } 44 45 runtest(test);