| // |reftest| skip-if(!xulRuntime.shell) |
| function test() { |
| |
| // Source location information |
| var withoutFileOrLine = Reflect.parse("42"); |
| var withFile = Reflect.parse("42", {source:"foo.js"}); |
| var withFileAndLine = Reflect.parse("42", {source:"foo.js", line:111}); |
| |
| Pattern({ source: null, start: { line: 1, column: 0 }, end: { line: 1, column: 2 } }).match(withoutFileOrLine.loc); |
| Pattern({ source: "foo.js", start: { line: 1, column: 0 }, end: { line: 1, column: 2 } }).match(withFile.loc); |
| Pattern({ source: "foo.js", start: { line: 111, column: 0 }, end: { line: 111, column: 2 } }).match(withFileAndLine.loc); |
| |
| var withoutFileOrLine2 = Reflect.parse("foo +\nbar"); |
| var withFile2 = Reflect.parse("foo +\nbar", {source:"foo.js"}); |
| var withFileAndLine2 = Reflect.parse("foo +\nbar", {source:"foo.js", line:111}); |
| |
| Pattern({ source: null, start: { line: 1, column: 0 }, end: { line: 2, column: 3 } }).match(withoutFileOrLine2.loc); |
| Pattern({ source: "foo.js", start: { line: 1, column: 0 }, end: { line: 2, column: 3 } }).match(withFile2.loc); |
| Pattern({ source: "foo.js", start: { line: 111, column: 0 }, end: { line: 112, column: 3 } }).match(withFileAndLine2.loc); |
| |
| var nested = Reflect.parse("(-b + sqrt(sqr(b) - 4 * a * c)) / (2 * a)", {source:"quad.js"}); |
| var fourAC = nested.body[0].expression.left.right.arguments[0].right; |
| |
| Pattern({ source: "quad.js", start: { line: 1, column: 20 }, end: { line: 1, column: 29 } }).match(fourAC.loc); |
| |
| var generator = Reflect.parse("[ for \n(x of a) x+1 ]"); |
| Pattern({ start: { line: 2, column: 1 }, end: { line: 2, column: 2 } }).match(generator.body[0].expression.blocks[0].left.loc); |
| |
| // No source location |
| |
| assertEq(Reflect.parse("42", {loc:false}).loc, null); |
| program([exprStmt(lit(42))]).assert(Reflect.parse("42", {loc:false})); |
| |
| } |
| |
| runtest(test); |