// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

// TEST BEGIN

// verify debugger line numbers are accurate
try {
    `
    a
    b
    c
    `;
    throw Error("error");
} catch (e) {
    assertEq(e.lineNumber, 14);
}

try {
    function tagThatThrows(...args) { throw new Error(); }

    tagThatThrows`
        multi-line
        template
        string`;
} catch (e) {
    var stackLines = e.stack.split('\n');
    var firstLine = stackLines[0].split(':');
    var secondLine = stackLines[1].split(':');
    var firstLineSize = firstLine.length;
    var secondLineSize = secondLine.length;
    assertEq(firstLine[firstLineSize - 2], "20");
    assertEq(firstLine[firstLineSize - 1], "45");
    assertEq(secondLine[secondLineSize - 2], "22");
    assertEq(secondLine[secondLineSize - 1], "18");
}

try {
    ` multi-line
        template
        with
        ${substitutionThatThrows()}`

} catch (e) {
    assertEq(e.lineNumber, 42);
}



reportCompare(0, 0, "ok");
