This test checks highlighter correctness.

function bar() {
    // comment here
    var a, b, c, d;
    var a = ((1 + 2) * (3 + 4));
    for(var i = 0; i < 100; ++i) {
        if (a < b && c > d) {
        }
    }
}
Cursor at line #0 >>>function bar() {<<< column 0 (char is "f")
enclosing braces: null

Cursor at line #0 >>>function bar() {<<< column 12 (char is "(")
enclosing braces: {"leftBrace":{"lineNumber":0,"column":12,"token":"brace-start"},"rightBrace":{"lineNumber":0,"column":13,"token":"brace-end"}}

Cursor at line #0 >>>function bar() {<<< column 13 (char is ")")
enclosing braces: {"leftBrace":{"lineNumber":0,"column":12,"token":"brace-start"},"rightBrace":{"lineNumber":0,"column":13,"token":"brace-end"}}

Cursor at line #0 >>>function bar() {<<< column 14 (char is " ")
enclosing braces: null

Cursor at line #0 >>>function bar() {<<< column 15 (char is "{")
enclosing braces: {"leftBrace":{"lineNumber":0,"column":15,"token":"block-start"},"rightBrace":{"lineNumber":8,"column":0,"token":"block-end"}}

Cursor at line #2 >>>    var a, b, c, d;<<< column 5 (char is "a")
enclosing braces: {"leftBrace":{"lineNumber":0,"column":15,"token":"block-start"},"rightBrace":{"lineNumber":8,"column":0,"token":"block-end"}}

Cursor at line #3 >>>    var a = ((1 + 2) * (3 + 4));<<< column 12 (char is "(")
enclosing braces: {"leftBrace":{"lineNumber":3,"column":12,"token":"brace-start"},"rightBrace":{"lineNumber":3,"column":30,"token":"brace-end"}}

Cursor at line #3 >>>    var a = ((1 + 2) * (3 + 4));<<< column 13 (char is "(")
enclosing braces: {"leftBrace":{"lineNumber":3,"column":13,"token":"brace-start"},"rightBrace":{"lineNumber":3,"column":19,"token":"brace-end"}}

Cursor at line #3 >>>    var a = ((1 + 2) * (3 + 4));<<< column 14 (char is "1")
enclosing braces: {"leftBrace":{"lineNumber":3,"column":13,"token":"brace-start"},"rightBrace":{"lineNumber":3,"column":19,"token":"brace-end"}}

Cursor at line #3 >>>    var a = ((1 + 2) * (3 + 4));<<< column 15 (char is " ")
enclosing braces: {"leftBrace":{"lineNumber":3,"column":13,"token":"brace-start"},"rightBrace":{"lineNumber":3,"column":19,"token":"brace-end"}}

Cursor at line #3 >>>    var a = ((1 + 2) * (3 + 4));<<< column 22 (char is " ")
enclosing braces: {"leftBrace":{"lineNumber":3,"column":12,"token":"brace-start"},"rightBrace":{"lineNumber":3,"column":30,"token":"brace-end"}}

Cursor at line #3 >>>    var a = ((1 + 2) * (3 + 4));<<< column 24 (char is "3")
enclosing braces: {"leftBrace":{"lineNumber":3,"column":23,"token":"brace-start"},"rightBrace":{"lineNumber":3,"column":29,"token":"brace-end"}}

Cursor at line #3 >>>    var a = ((1 + 2) * (3 + 4));<<< column 29 (char is ")")
enclosing braces: {"leftBrace":{"lineNumber":3,"column":23,"token":"brace-start"},"rightBrace":{"lineNumber":3,"column":29,"token":"brace-end"}}

Cursor at line #3 >>>    var a = ((1 + 2) * (3 + 4));<<< column 30 (char is ")")
enclosing braces: {"leftBrace":{"lineNumber":3,"column":12,"token":"brace-start"},"rightBrace":{"lineNumber":3,"column":30,"token":"brace-end"}}

Cursor at line #3 >>>    var a = ((1 + 2) * (3 + 4));<<< column 31 (char is ";")
enclosing braces: {"leftBrace":{"lineNumber":0,"column":15,"token":"block-start"},"rightBrace":{"lineNumber":8,"column":0,"token":"block-end"}}

Cursor at line #4 >>>    for(var i = 0; i < 100; ++i) {<<< column 19 (char is "i")
enclosing braces: {"leftBrace":{"lineNumber":4,"column":7,"token":"brace-start"},"rightBrace":{"lineNumber":4,"column":31,"token":"brace-end"}}

Cursor at line #4 >>>    for(var i = 0; i < 100; ++i) {<<< column 32 (char is " ")
enclosing braces: {"leftBrace":{"lineNumber":0,"column":15,"token":"block-start"},"rightBrace":{"lineNumber":8,"column":0,"token":"block-end"}}

Cursor at line #4 >>>    for(var i = 0; i < 100; ++i) {<<< column 33 (char is "{")
enclosing braces: {"leftBrace":{"lineNumber":4,"column":33,"token":"block-start"},"rightBrace":{"lineNumber":7,"column":4,"token":"block-end"}}

Cursor at line #5 >>>        if (a < b && c > d) {<<< column 20 (char is " ")
enclosing braces: {"leftBrace":{"lineNumber":5,"column":11,"token":"brace-start"},"rightBrace":{"lineNumber":5,"column":26,"token":"brace-end"}}

Cursor at line #5 >>>        if (a < b && c > d) {<<< column 28 (char is "{")
enclosing braces: {"leftBrace":{"lineNumber":5,"column":28,"token":"block-start"},"rightBrace":{"lineNumber":6,"column":8,"token":"block-end"}}

Cursor at line #6 >>>        }<<< column 8 (char is "}")
enclosing braces: {"leftBrace":{"lineNumber":5,"column":28,"token":"block-start"},"rightBrace":{"lineNumber":6,"column":8,"token":"block-end"}}

Cursor at line #7 >>>    }<<< column 4 (char is "}")
enclosing braces: {"leftBrace":{"lineNumber":4,"column":33,"token":"block-start"},"rightBrace":{"lineNumber":7,"column":4,"token":"block-end"}}

Cursor at line #8 >>>}<<< column 0 (char is "}")
enclosing braces: {"leftBrace":{"lineNumber":0,"column":15,"token":"block-start"},"rightBrace":{"lineNumber":8,"column":0,"token":"block-end"}}


