//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

let pass = 'pass';

function func4(a = 123) {
    function v8() {
        function v9() {
            return v9;
        }
        return v9();
    }
    return v8();
}
func4();


var func5 = (a = 123) => (function v6() {
    function v7() {
        return v7;
    }
    return v7();
})()
func5();

function func6(a = v => { console.log('pass'); }, b = v => { return a; }) {
    function c() {
        return b();
    }
    return c();
}
func6()();

function func7(a, b = function() { return pass; }, c) {
    function func8(d, e = function() { return b; }, f) {
        return e;
    }
    return func8();
}
console.log(func7()()());

var func9 = (a, b = () => pass, c) => {
    var func10 = (d, e = () => b, f) => {
        return e;
    }
    return func10();
}
console.log(func9()()());

var func11 = (a, b = () => { return pass; }, c) => {
    var func12 = (d, e = () => { return b; }, f) => {
        return e;
    }
    return func12();
}
console.log(func11()()());

@@ -379,16 +379,35 @@
  'pass';
+%0Alet fail = 'fail';
 %0A%0Afuncti
@@ -1345,16 +1345,1016 @@
 (func11()()());%0A
+%0Afunction func13(a = (b = () =%3E pass, c = () =%3E fail) =%3E b()) %7B%0A    return a();%0A%7D%0Aconsole.log(func13());%0A%0Afunction func14(a = (b = () =%3E %7B return fail; %7D, c = () =%3E %7B return pass; %7D) =%3E %7B return c(); %7D) %7B%0A    return a();%0A%7D%0Aconsole.log(func14());%0A%0Afunction func15(a = class A %7B meth() %7B return pass %7D static meth2() %7B return fail; %7D %7D, b = v =%3E fail, c = (v) =%3E %7B return fail %7D, d = fail) %7B%0A    return new a().meth();%0A%7D%0Aconsole.log(func15());%0Afunction func16(a = class A %7B meth() %7B return fail %7D static meth2() %7B return pass; %7D %7D, b = v =%3E fail, c = (v) =%3E %7B return fail %7D, d = fail) %7B%0A    return a.meth2();%0A%7D%0Aconsole.log(func16());%0Afunction func17(a = class A %7B meth() %7B return fail %7D static meth2() %7B return fail; %7D %7D, b = v =%3E pass, c = (v) =%3E %7B return fail %7D, d = fail) %7B%0A    return b();%0A%7D%0Aconsole.log(func17());%0Afunction func18(a = class A %7B meth() %7B return fail %7D static meth2() %7B return fail; %7D %7D, b = v =%3E fail, c = (v) =%3E %7B return pass %7D, d = fail) %7B%0A    return c();%0A%7D%0Aconsole.log(func18());%0A

Add unit test coverage