//// [tests/cases/conformance/es6/arrowFunction/emitArrowFunctionES6.ts] ////

=== emitArrowFunctionES6.ts ===
var f1 = () => { }
>f1 : Symbol(f1, Decl(emitArrowFunctionES6.ts, 0, 3))

var f2 = (x: string, y: string) => { }
>f2 : Symbol(f2, Decl(emitArrowFunctionES6.ts, 1, 3))
>x : Symbol(x, Decl(emitArrowFunctionES6.ts, 1, 10))
>y : Symbol(y, Decl(emitArrowFunctionES6.ts, 1, 20))

var f3 = (x: string, y: number, ...rest) => { }
>f3 : Symbol(f3, Decl(emitArrowFunctionES6.ts, 2, 3))
>x : Symbol(x, Decl(emitArrowFunctionES6.ts, 2, 10))
>y : Symbol(y, Decl(emitArrowFunctionES6.ts, 2, 20))
>rest : Symbol(rest, Decl(emitArrowFunctionES6.ts, 2, 31))

var f4 = (x: string, y: number, z=10) => { }
>f4 : Symbol(f4, Decl(emitArrowFunctionES6.ts, 3, 3))
>x : Symbol(x, Decl(emitArrowFunctionES6.ts, 3, 10))
>y : Symbol(y, Decl(emitArrowFunctionES6.ts, 3, 20))
>z : Symbol(z, Decl(emitArrowFunctionES6.ts, 3, 31))

function foo(func: () => boolean) { }
>foo : Symbol(foo, Decl(emitArrowFunctionES6.ts, 3, 44))
>func : Symbol(func, Decl(emitArrowFunctionES6.ts, 4, 13))

foo(() => true);
>foo : Symbol(foo, Decl(emitArrowFunctionES6.ts, 3, 44))

foo(() => { return false; });
>foo : Symbol(foo, Decl(emitArrowFunctionES6.ts, 3, 44))

// Binding patterns in arrow functions
var p1 = ([a]) => { };
>p1 : Symbol(p1, Decl(emitArrowFunctionES6.ts, 9, 3))
>a : Symbol(a, Decl(emitArrowFunctionES6.ts, 9, 11))

var p2 = ([...a]) => { };
>p2 : Symbol(p2, Decl(emitArrowFunctionES6.ts, 10, 3))
>a : Symbol(a, Decl(emitArrowFunctionES6.ts, 10, 11))

var p3 = ([, a]) => { };
>p3 : Symbol(p3, Decl(emitArrowFunctionES6.ts, 11, 3))
>a : Symbol(a, Decl(emitArrowFunctionES6.ts, 11, 12))

var p4 = ([, ...a]) => { };
>p4 : Symbol(p4, Decl(emitArrowFunctionES6.ts, 12, 3))
>a : Symbol(a, Decl(emitArrowFunctionES6.ts, 12, 12))

var p5 = ([a = 1]) => { };
>p5 : Symbol(p5, Decl(emitArrowFunctionES6.ts, 13, 3))
>a : Symbol(a, Decl(emitArrowFunctionES6.ts, 13, 11))

var p6 = ({ a }) => { };
>p6 : Symbol(p6, Decl(emitArrowFunctionES6.ts, 14, 3))
>a : Symbol(a, Decl(emitArrowFunctionES6.ts, 14, 11))

var p7 = ({ a: { b } }) => { };
>p7 : Symbol(p7, Decl(emitArrowFunctionES6.ts, 15, 3))
>a : Symbol(a)
>b : Symbol(b, Decl(emitArrowFunctionES6.ts, 15, 16))

var p8 = ({ a = 1 }) => { };
>p8 : Symbol(p8, Decl(emitArrowFunctionES6.ts, 16, 3))
>a : Symbol(a, Decl(emitArrowFunctionES6.ts, 16, 11))

var p9 = ({ a: { b = 1 } = { b: 1 } }) => { };
>p9 : Symbol(p9, Decl(emitArrowFunctionES6.ts, 17, 3))
>a : Symbol(a)
>b : Symbol(b, Decl(emitArrowFunctionES6.ts, 17, 16))
>b : Symbol(b, Decl(emitArrowFunctionES6.ts, 17, 28))

var p10 = ([{ value, done }]) => { };
>p10 : Symbol(p10, Decl(emitArrowFunctionES6.ts, 18, 3))
>value : Symbol(value, Decl(emitArrowFunctionES6.ts, 18, 13))
>done : Symbol(done, Decl(emitArrowFunctionES6.ts, 18, 20))

