Breakpoints in expressions

This commit is contained in:
Sheetal Nandi
2014-10-20 23:05:44 -07:00
parent 330065fdeb
commit 0cb2e983aa
39 changed files with 3090 additions and 145 deletions
-71
View File
@@ -7815,77 +7815,6 @@ module ts {
return node.parent && node.parent.kind === SyntaxKind.TypeReference;
}
function isExpression(node: Node): boolean {
switch (node.kind) {
case SyntaxKind.ThisKeyword:
case SyntaxKind.SuperKeyword:
case SyntaxKind.NullKeyword:
case SyntaxKind.TrueKeyword:
case SyntaxKind.FalseKeyword:
case SyntaxKind.RegularExpressionLiteral:
case SyntaxKind.ArrayLiteral:
case SyntaxKind.ObjectLiteral:
case SyntaxKind.PropertyAccess:
case SyntaxKind.IndexedAccess:
case SyntaxKind.CallExpression:
case SyntaxKind.NewExpression:
case SyntaxKind.TypeAssertion:
case SyntaxKind.ParenExpression:
case SyntaxKind.FunctionExpression:
case SyntaxKind.ArrowFunction:
case SyntaxKind.PrefixOperator:
case SyntaxKind.PostfixOperator:
case SyntaxKind.BinaryExpression:
case SyntaxKind.ConditionalExpression:
case SyntaxKind.OmittedExpression:
return true;
case SyntaxKind.QualifiedName:
while (node.parent.kind === SyntaxKind.QualifiedName) node = node.parent;
return node.parent.kind === SyntaxKind.TypeQuery;
case SyntaxKind.Identifier:
if (node.parent.kind === SyntaxKind.TypeQuery) {
return true;
}
// Fall through
case SyntaxKind.NumericLiteral:
case SyntaxKind.StringLiteral:
var parent = node.parent;
switch (parent.kind) {
case SyntaxKind.VariableDeclaration:
case SyntaxKind.Parameter:
case SyntaxKind.Property:
case SyntaxKind.EnumMember:
case SyntaxKind.PropertyAssignment:
return (<VariableDeclaration>parent).initializer === node;
case SyntaxKind.ExpressionStatement:
case SyntaxKind.IfStatement:
case SyntaxKind.DoStatement:
case SyntaxKind.WhileStatement:
case SyntaxKind.ReturnStatement:
case SyntaxKind.WithStatement:
case SyntaxKind.SwitchStatement:
case SyntaxKind.CaseClause:
case SyntaxKind.ThrowStatement:
case SyntaxKind.SwitchStatement:
return (<ExpressionStatement>parent).expression === node;
case SyntaxKind.ForStatement:
return (<ForStatement>parent).initializer === node ||
(<ForStatement>parent).condition === node ||
(<ForStatement>parent).iterator === node;
case SyntaxKind.ForInStatement:
return (<ForInStatement>parent).variable === node ||
(<ForInStatement>parent).expression === node;
case SyntaxKind.TypeAssertion:
return node === (<TypeAssertion>parent).operand;
default:
if (isExpression(parent)) {
return true;
}
}
}
return false;
}
function isTypeNode(node: Node): boolean {
if (SyntaxKind.FirstTypeNode <= node.kind && node.kind <= SyntaxKind.LastTypeNode) {
return true;
+71
View File
@@ -67,6 +67,77 @@ module ts {
return identifier.kind === SyntaxKind.Missing ? "(Missing)" : getTextOfNode(identifier);
}
export function isExpression(node: Node): boolean {
switch (node.kind) {
case SyntaxKind.ThisKeyword:
case SyntaxKind.SuperKeyword:
case SyntaxKind.NullKeyword:
case SyntaxKind.TrueKeyword:
case SyntaxKind.FalseKeyword:
case SyntaxKind.RegularExpressionLiteral:
case SyntaxKind.ArrayLiteral:
case SyntaxKind.ObjectLiteral:
case SyntaxKind.PropertyAccess:
case SyntaxKind.IndexedAccess:
case SyntaxKind.CallExpression:
case SyntaxKind.NewExpression:
case SyntaxKind.TypeAssertion:
case SyntaxKind.ParenExpression:
case SyntaxKind.FunctionExpression:
case SyntaxKind.ArrowFunction:
case SyntaxKind.PrefixOperator:
case SyntaxKind.PostfixOperator:
case SyntaxKind.BinaryExpression:
case SyntaxKind.ConditionalExpression:
case SyntaxKind.OmittedExpression:
return true;
case SyntaxKind.QualifiedName:
while (node.parent.kind === SyntaxKind.QualifiedName) node = node.parent;
return node.parent.kind === SyntaxKind.TypeQuery;
case SyntaxKind.Identifier:
if (node.parent.kind === SyntaxKind.TypeQuery) {
return true;
}
// Fall through
case SyntaxKind.NumericLiteral:
case SyntaxKind.StringLiteral:
var parent = node.parent;
switch (parent.kind) {
case SyntaxKind.VariableDeclaration:
case SyntaxKind.Parameter:
case SyntaxKind.Property:
case SyntaxKind.EnumMember:
case SyntaxKind.PropertyAssignment:
return (<VariableDeclaration>parent).initializer === node;
case SyntaxKind.ExpressionStatement:
case SyntaxKind.IfStatement:
case SyntaxKind.DoStatement:
case SyntaxKind.WhileStatement:
case SyntaxKind.ReturnStatement:
case SyntaxKind.WithStatement:
case SyntaxKind.SwitchStatement:
case SyntaxKind.CaseClause:
case SyntaxKind.ThrowStatement:
case SyntaxKind.SwitchStatement:
return (<ExpressionStatement>parent).expression === node;
case SyntaxKind.ForStatement:
return (<ForStatement>parent).initializer === node ||
(<ForStatement>parent).condition === node ||
(<ForStatement>parent).iterator === node;
case SyntaxKind.ForInStatement:
return (<ForInStatement>parent).variable === node ||
(<ForInStatement>parent).expression === node;
case SyntaxKind.TypeAssertion:
return node === (<TypeAssertion>parent).operand;
default:
if (isExpression(parent)) {
return true;
}
}
}
return false;
}
export function createDiagnosticForNode(node: Node, message: DiagnosticMessage, arg0?: any, arg1?: any, arg2?: any): Diagnostic {
node = getErrorSpanForNode(node);
var file = getSourceFileOfNode(node);
+68 -53
View File
@@ -53,6 +53,28 @@ module ts.BreakpointResolver {
function spanInNode(node: Node): TypeScript.TextSpan {
if (node) {
if (isExpression(node)) {
if (node.parent.kind === SyntaxKind.DoStatement) {
// Set span as if on while keyword
return spanInPreviousNode(node);
}
if (node.parent.kind === SyntaxKind.ForStatement) {
// For now lets set the span on this expression, fix it later
return textSpan(node);
}
if (node.parent.kind === SyntaxKind.BinaryExpression && (<BinaryExpression>node.parent).operator === SyntaxKind.CommaToken) {
// if this is comma expression, the breakpoint is possible in this expression
return textSpan(node);
}
if (node.parent.kind == SyntaxKind.ArrowFunction && (<FunctionDeclaration>node.parent).body == node) {
// If this is body of arrow function, it is allowed to have the breakpoint
return textSpan(node);
}
}
switch (node.kind) {
case SyntaxKind.VariableStatement:
return spanInVariableStatement(<VariableStatement>node);
@@ -69,6 +91,8 @@ module ts.BreakpointResolver {
case SyntaxKind.GetAccessor:
case SyntaxKind.SetAccessor:
case SyntaxKind.Constructor:
case SyntaxKind.FunctionExpression:
case SyntaxKind.ArrowFunction:
return spanInFunctionDeclaration(<FunctionDeclaration>node);
case SyntaxKind.FunctionBlock:
@@ -143,10 +167,12 @@ module ts.BreakpointResolver {
case SyntaxKind.ClassDeclaration:
return spanInClassDeclaration(<ClassDeclaration>node);
case SyntaxKind.BinaryExpression:
case SyntaxKind.PostfixOperator:
case SyntaxKind.PrefixOperator:
return spanInExpression(node);
case SyntaxKind.CallExpression:
case SyntaxKind.NewExpression:
return spanInCallOrNewExpression(<CallExpression>node);
case SyntaxKind.WithStatement:
return spanInWithStatement(<WithStatement>node);
// Tokens:
case SyntaxKind.SemicolonToken:
@@ -154,8 +180,8 @@ module ts.BreakpointResolver {
return spanInNodeIfStartsOnSameLine(findPrecedingToken(node.pos, sourceFile));
case SyntaxKind.CommaToken:
return spanInCommaToken(node);
return spanInPreviousNode(node)
case SyntaxKind.OpenBraceToken:
return spanInOpenBraceToken(node);
@@ -171,6 +197,10 @@ module ts.BreakpointResolver {
case SyntaxKind.ColonToken:
return spanInColonToken(node);
case SyntaxKind.GreaterThanToken:
case SyntaxKind.LessThanToken:
return spanInGreaterThanOrLessThanToken(node);
// Keywords:
case SyntaxKind.WhileKeyword:
return spanInWhileKeyword(node);
@@ -181,6 +211,21 @@ module ts.BreakpointResolver {
return spanInNextNode(node);
default:
// If this is name of property assignment, set breakpoint in the initializer
if (node.parent.kind === SyntaxKind.PropertyAssignment && (<PropertyDeclaration>node.parent).name === node) {
return spanInNode((<PropertyDeclaration>node.parent).initializer);
}
// Breakpoint in type assertion goes to its operand
if (node.parent.kind === SyntaxKind.TypeAssertion && (<TypeAssertion>node.parent).type === node) {
return spanInNode((<TypeAssertion>node.parent).operand);
}
// return type of function go to previous token
if (isAnyFunction(node.parent) && (<FunctionDeclaration>node.parent).type === node) {
return spanInPreviousNode(node);
}
// Default go to parent to set the breakpoint
return spanInNode(node.parent);
}
@@ -259,21 +304,6 @@ module ts.BreakpointResolver {
return;
}
// Is this coming because the touchingToken was in typeAnnotation of return type
if (functionDeclaration.type) {
for (var node = tokenAtLocation; node; node = node.parent) {
if (node.parent === functionDeclaration && functionDeclaration.type === node) {
if (functionDeclaration.parameters && functionDeclaration.parameters.length) {
// Set breakpoint in last parameter
return spanInParameterDeclaration(functionDeclaration.parameters[functionDeclaration.parameters.length - 1]);
}
// Set breakpoint in function body
break;
}
}
}
// Set span in function body
return spanInNode(functionDeclaration.body);
}
@@ -417,39 +447,15 @@ module ts.BreakpointResolver {
return spanInNode(classDeclaration.getLastToken());
}
function spanInExpression(expression: Expression): TypeScript.TextSpan {
//TODO (pick this up later) for now lets fix do-while baseline␍ if (node.parent.kind === SyntaxKind.DoStatement) {
// Set span as if on while keyword
return spanInPreviousNode(node);
}
if (node.parent.kind === SyntaxKind.ForStatement) {
// For now lets set the span on this expression, fix it later
return textSpan(expression);
}
// Default action for now:
return spanInNode(expression.parent);
function spanInCallOrNewExpression(callOrNewExpression: CallExpression): TypeScript.TextSpan {
return textSpan(callOrNewExpression);
}
function spanInWithStatement(withStatement: WithStatement): TypeScript.TextSpan {
return spanInNode(withStatement.statement);
}
// Tokens:
function spanInCommaToken(node: Node): TypeScript.TextSpan {
switch (node.parent.kind) {
case SyntaxKind.FunctionDeclaration:
case SyntaxKind.Method:
case SyntaxKind.GetAccessor:
case SyntaxKind.SetAccessor:
case SyntaxKind.Constructor:
case SyntaxKind.VariableStatement:
case SyntaxKind.EnumDeclaration:
return spanInPreviousNode(node);
// Default to parent node
default:
return spanInNode(node.parent);
}
}
function spanInOpenBraceToken(node: Node): TypeScript.TextSpan {
if (node.parent.kind === SyntaxKind.SwitchStatement) {
return spanInNodeIfStartsOnSameLine(node.parent, (<SwitchStatement>node.parent).clauses[0]);
@@ -534,13 +540,22 @@ module ts.BreakpointResolver {
function spanInColonToken(node: Node): TypeScript.TextSpan {
// Is this : specifying return annotation of the function declaration
if (isAnyFunction(node.parent)) {
if (isAnyFunction(node.parent) || node.parent.kind === SyntaxKind.PropertyAssignment) {
return spanInPreviousNode(node);
}
return spanInNode(node.parent);
}
function spanInGreaterThanOrLessThanToken(node: Node): TypeScript.TextSpan {
if (node.parent.kind === SyntaxKind.TypeAssertion) {
return spanInNode((<TypeAssertion>node.parent).operand);
}
return spanInNode(node.parent);
}
function spanInWhileKeyword(node: Node): TypeScript.TextSpan {
if (node.parent.kind === SyntaxKind.DoStatement) {
// Set span on while expression
@@ -0,0 +1,198 @@
1 >var a = [10, 20, 30];
~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 21) SpanInfo: {"start":0,"length":20}
>var a = [10, 20, 30]
>:=> (line 1, col 0) to (line 1, col 20)
--------------------------------
2 >function foo(a: number) {
~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (22 to 47) SpanInfo: {"start":52,"length":8}
>return a
>:=> (line 3, col 4) to (line 3, col 12)
--------------------------------
3 > return a;
~~~~~~~~~~~~~~ => Pos: (48 to 61) SpanInfo: {"start":52,"length":8}
>return a
>:=> (line 3, col 4) to (line 3, col 12)
--------------------------------
4 >}
~~ => Pos: (62 to 63) SpanInfo: {"start":62,"length":1}
>}
>:=> (line 4, col 0) to (line 4, col 1)
--------------------------------
5 >a = [foo(30), (function () {
~~~~~ => Pos: (64 to 68) SpanInfo: {"start":64,"length":49}
>a = [foo(30), (function () {
> return 30;
>})()]
>:=> (line 5, col 0) to (line 7, col 5)
5 >a = [foo(30), (function () {
~~~~~~~~ => Pos: (69 to 76) SpanInfo: {"start":69,"length":7}
>foo(30)
>:=> (line 5, col 5) to (line 5, col 12)
5 >a = [foo(30), (function () {
~~ => Pos: (77 to 78) SpanInfo: {"start":78,"length":34}
>(function () {
> return 30;
>})()
>:=> (line 5, col 14) to (line 7, col 4)
5 >a = [foo(30), (function () {
~~~~~~~~~~~~~~ => Pos: (79 to 92) SpanInfo: {"start":97,"length":9}
>return 30
>:=> (line 6, col 4) to (line 6, col 13)
--------------------------------
6 > return 30;
~~~~~~~~~~~~~~~ => Pos: (93 to 107) SpanInfo: {"start":97,"length":9}
>return 30
>:=> (line 6, col 4) to (line 6, col 13)
--------------------------------
7 >})()];
~ => Pos: (108 to 108) SpanInfo: {"start":108,"length":1}
>}
>:=> (line 7, col 0) to (line 7, col 1)
7 >})()];
~~~ => Pos: (109 to 111) SpanInfo: {"start":78,"length":34}
>(function () {
> return 30;
>})()
>:=> (line 5, col 14) to (line 7, col 4)
7 >})()];
~~~ => Pos: (112 to 114) SpanInfo: {"start":64,"length":49}
>a = [foo(30), (function () {
> return 30;
>})()]
>:=> (line 5, col 0) to (line 7, col 5)
--------------------------------
8 >function bar() {
~~~~~~~~~~~~~~~~~ => Pos: (115 to 131) SpanInfo: {"start":136,"length":8}
>return a
>:=> (line 9, col 4) to (line 9, col 12)
--------------------------------
9 > return a;
~~~~~~~~~~~~~~ => Pos: (132 to 145) SpanInfo: {"start":136,"length":8}
>return a
>:=> (line 9, col 4) to (line 9, col 12)
--------------------------------
10 >}
~~ => Pos: (146 to 147) SpanInfo: {"start":146,"length":1}
>}
>:=> (line 10, col 0) to (line 10, col 1)
--------------------------------
11 >var x = bar()[0];
~~~~~~~ => Pos: (148 to 154) SpanInfo: {"start":148,"length":16}
>var x = bar()[0]
>:=> (line 11, col 0) to (line 11, col 16)
11 >var x = bar()[0];
~~~~~~ => Pos: (155 to 160) SpanInfo: {"start":156,"length":5}
>bar()
>:=> (line 11, col 8) to (line 11, col 13)
11 >var x = bar()[0];
~~~~~ => Pos: (161 to 165) SpanInfo: {"start":148,"length":16}
>var x = bar()[0]
>:=> (line 11, col 0) to (line 11, col 16)
--------------------------------
12 >x = (function () {
~~~ => Pos: (166 to 168) SpanInfo: {"start":166,"length":40}
>x = (function () {
> return a;
>})()[x]
>:=> (line 12, col 0) to (line 14, col 7)
12 >x = (function () {
~~ => Pos: (169 to 170) SpanInfo: {"start":170,"length":33}
>(function () {
> return a;
>})()
>:=> (line 12, col 4) to (line 14, col 4)
12 >x = (function () {
~~~~~~~~~~~~~~ => Pos: (171 to 184) SpanInfo: {"start":189,"length":8}
>return a
>:=> (line 13, col 4) to (line 13, col 12)
--------------------------------
13 > return a;
~~~~~~~~~~~~~~ => Pos: (185 to 198) SpanInfo: {"start":189,"length":8}
>return a
>:=> (line 13, col 4) to (line 13, col 12)
--------------------------------
14 >})()[x];
~ => Pos: (199 to 199) SpanInfo: {"start":199,"length":1}
>}
>:=> (line 14, col 0) to (line 14, col 1)
14 >})()[x];
~~~ => Pos: (200 to 202) SpanInfo: {"start":170,"length":33}
>(function () {
> return a;
>})()
>:=> (line 12, col 4) to (line 14, col 4)
14 >})()[x];
~~~~~ => Pos: (203 to 207) SpanInfo: {"start":166,"length":40}
>x = (function () {
> return a;
>})()[x]
>:=> (line 12, col 0) to (line 14, col 7)
--------------------------------
15 >a[(function () {
~~ => Pos: (208 to 209) SpanInfo: {"start":208,"length":36}
>a[(function () {
> return x;
>})()]
>:=> (line 15, col 0) to (line 17, col 5)
15 >a[(function () {
~ => Pos: (210 to 210) SpanInfo: {"start":210,"length":33}
>(function () {
> return x;
>})()
>:=> (line 15, col 2) to (line 17, col 4)
15 >a[(function () {
~~~~~~~~~~~~~~ => Pos: (211 to 224) SpanInfo: {"start":229,"length":8}
>return x
>:=> (line 16, col 4) to (line 16, col 12)
--------------------------------
16 > return x;
~~~~~~~~~~~~~~ => Pos: (225 to 238) SpanInfo: {"start":229,"length":8}
>return x
>:=> (line 16, col 4) to (line 16, col 12)
--------------------------------
17 >})()];
~ => Pos: (239 to 239) SpanInfo: {"start":239,"length":1}
>}
>:=> (line 17, col 0) to (line 17, col 1)
17 >})()];
~~~ => Pos: (240 to 242) SpanInfo: {"start":210,"length":33}
>(function () {
> return x;
>})()
>:=> (line 15, col 2) to (line 17, col 4)
17 >})()];
~~ => Pos: (243 to 244) SpanInfo: {"start":208,"length":36}
>a[(function () {
> return x;
>})()]
>:=> (line 15, col 0) to (line 17, col 5)
@@ -0,0 +1,119 @@
1 >var x = 10;
~~~~~~~~~~~~ => Pos: (0 to 11) SpanInfo: {"start":0,"length":10}
>var x = 10
>:=> (line 1, col 0) to (line 1, col 10)
--------------------------------
2 >var y = 20;
~~~~~~~~~~~~ => Pos: (12 to 23) SpanInfo: {"start":12,"length":10}
>var y = 20
>:=> (line 2, col 0) to (line 2, col 10)
--------------------------------
3 >x += 30;
~~~~~~~~~ => Pos: (24 to 32) SpanInfo: {"start":24,"length":7}
>x += 30
>:=> (line 3, col 0) to (line 3, col 7)
--------------------------------
4 >x *= 0;
~~~~~~~~ => Pos: (33 to 40) SpanInfo: {"start":33,"length":6}
>x *= 0
>:=> (line 4, col 0) to (line 4, col 6)
--------------------------------
5 >x = x + 1;
~~~~~~~~~~~ => Pos: (41 to 51) SpanInfo: {"start":41,"length":9}
>x = x + 1
>:=> (line 5, col 0) to (line 5, col 9)
--------------------------------
6 >x = (function foo() {
~~~ => Pos: (52 to 54) SpanInfo: {"start":52,"length":44}
>x = (function foo() {
> return y;
>})() + y
>:=> (line 6, col 0) to (line 8, col 8)
6 >x = (function foo() {
~~ => Pos: (55 to 56) SpanInfo: {"start":56,"length":36}
>(function foo() {
> return y;
>})()
>:=> (line 6, col 4) to (line 8, col 4)
6 >x = (function foo() {
~~~~~~~~~~~~~~~~~ => Pos: (57 to 73) SpanInfo: {"start":78,"length":8}
>return y
>:=> (line 7, col 4) to (line 7, col 12)
--------------------------------
7 > return y;
~~~~~~~~~~~~~~ => Pos: (74 to 87) SpanInfo: {"start":78,"length":8}
>return y
>:=> (line 7, col 4) to (line 7, col 12)
--------------------------------
8 >})() + y;
~ => Pos: (88 to 88) SpanInfo: {"start":88,"length":1}
>}
>:=> (line 8, col 0) to (line 8, col 1)
8 >})() + y;
~~~ => Pos: (89 to 91) SpanInfo: {"start":56,"length":36}
>(function foo() {
> return y;
>})()
>:=> (line 6, col 4) to (line 8, col 4)
8 >})() + y;
~~~~~~ => Pos: (92 to 97) SpanInfo: {"start":52,"length":44}
>x = (function foo() {
> return y;
>})() + y
>:=> (line 6, col 0) to (line 8, col 8)
--------------------------------
9 >x = y + 30 + (function foo() {
~~~~~~~~~~~~ => Pos: (98 to 109) SpanInfo: {"start":98,"length":54}
>x = y + 30 + (function foo() {
> return y;
>})() * 40
>:=> (line 9, col 0) to (line 11, col 9)
9 >x = y + 30 + (function foo() {
~~ => Pos: (110 to 111) SpanInfo: {"start":111,"length":36}
>(function foo() {
> return y;
>})()
>:=> (line 9, col 13) to (line 11, col 4)
9 >x = y + 30 + (function foo() {
~~~~~~~~~~~~~~~~~ => Pos: (112 to 128) SpanInfo: {"start":133,"length":8}
>return y
>:=> (line 10, col 4) to (line 10, col 12)
--------------------------------
10 > return y;
~~~~~~~~~~~~~~ => Pos: (129 to 142) SpanInfo: {"start":133,"length":8}
>return y
>:=> (line 10, col 4) to (line 10, col 12)
--------------------------------
11 >})() * 40;
~ => Pos: (143 to 143) SpanInfo: {"start":143,"length":1}
>}
>:=> (line 11, col 0) to (line 11, col 1)
11 >})() * 40;
~~~ => Pos: (144 to 146) SpanInfo: {"start":111,"length":36}
>(function foo() {
> return y;
>})()
>:=> (line 9, col 13) to (line 11, col 4)
11 >})() * 40;
~~~~~~ => Pos: (147 to 152) SpanInfo: {"start":98,"length":54}
>x = y + 30 + (function foo() {
> return y;
>})() * 40
>:=> (line 9, col 0) to (line 11, col 9)
@@ -0,0 +1,284 @@
1 >module Foo.Bar {
~~~~~~~~~~~~~~~~~ => Pos: (0 to 16) SpanInfo: {"start":21,"length":12}
>"use strict"
>:=> (line 2, col 4) to (line 2, col 16)
--------------------------------
2 > "use strict";
~~~~~~~~~~~~~~~~~~ => Pos: (17 to 34) SpanInfo: {"start":21,"length":12}
>"use strict"
>:=> (line 2, col 4) to (line 2, col 16)
--------------------------------
3 >
~ => Pos: (35 to 35) SpanInfo: undefined
--------------------------------
4 > class Greeter {
~~~~~~~~~~~~~~~~~~~~ => Pos: (36 to 55) SpanInfo: {"start":111,"length":1}
>}
>:=> (line 6, col 8) to (line 6, col 9)
--------------------------------
5 > constructor(public greeting: string) {
~~~~~~~~~~~~~~~~~~~~ => Pos: (56 to 75) SpanInfo: {"start":111,"length":1}
>}
>:=> (line 6, col 8) to (line 6, col 9)
5 > constructor(public greeting: string) {
~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (76 to 99) SpanInfo: {"start":76,"length":23}
>public greeting: string
>:=> (line 5, col 20) to (line 5, col 43)
5 > constructor(public greeting: string) {
~~~=> Pos: (100 to 102) SpanInfo: {"start":111,"length":1}
>}
>:=> (line 6, col 8) to (line 6, col 9)
--------------------------------
6 > }
~~~~~~~~~~ => Pos: (103 to 112) SpanInfo: {"start":111,"length":1}
>}
>:=> (line 6, col 8) to (line 6, col 9)
--------------------------------
7 >
~ => Pos: (113 to 113) SpanInfo: {"start":111,"length":1}
>}
>:=> (line 6, col 8) to (line 6, col 9)
--------------------------------
8 > greet() {
~~~~~~~~~~~~~~~~~~ => Pos: (114 to 131) SpanInfo: {"start":144,"length":39}
>return "<h1>" + this.greeting + "</h1>"
>:=> (line 9, col 12) to (line 9, col 51)
--------------------------------
9 > return "<h1>" + this.greeting + "</h1>";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (132 to 184) SpanInfo: {"start":144,"length":39}
>return "<h1>" + this.greeting + "</h1>"
>:=> (line 9, col 12) to (line 9, col 51)
--------------------------------
10 > }
~~~~~~~~~~ => Pos: (185 to 194) SpanInfo: {"start":193,"length":1}
>}
>:=> (line 10, col 8) to (line 10, col 9)
--------------------------------
11 > }
~~~~~~ => Pos: (195 to 200) SpanInfo: {"start":199,"length":1}
>}
>:=> (line 11, col 4) to (line 11, col 5)
--------------------------------
12 >
~ => Pos: (201 to 201) SpanInfo: {"start":199,"length":1}
>}
>:=> (line 11, col 4) to (line 11, col 5)
--------------------------------
13 >
~ => Pos: (202 to 202) SpanInfo: {"start":199,"length":1}
>}
>:=> (line 11, col 4) to (line 11, col 5)
--------------------------------
14 > function foo(greeting: string): Greeter {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (203 to 248) SpanInfo: {"start":257,"length":28}
>return new Greeter(greeting)
>:=> (line 15, col 8) to (line 15, col 36)
--------------------------------
15 > return new Greeter(greeting);
~~~~~~~~~~~~~~ => Pos: (249 to 262) SpanInfo: {"start":257,"length":28}
>return new Greeter(greeting)
>:=> (line 15, col 8) to (line 15, col 36)
15 > return new Greeter(greeting);
~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (263 to 286) SpanInfo: {"start":264,"length":21}
>new Greeter(greeting)
>:=> (line 15, col 15) to (line 15, col 36)
--------------------------------
16 > }
~~~~~~ => Pos: (287 to 292) SpanInfo: {"start":291,"length":1}
>}
>:=> (line 16, col 4) to (line 16, col 5)
--------------------------------
17 >
~ => Pos: (293 to 293) SpanInfo: {"start":291,"length":1}
>}
>:=> (line 16, col 4) to (line 16, col 5)
--------------------------------
18 > var greeter = new Greeter("Hello, world!");
~~~~~~~~~~~~~~~~~ => Pos: (294 to 310) SpanInfo: {"start":298,"length":42}
>var greeter = new Greeter("Hello, world!")
>:=> (line 18, col 4) to (line 18, col 46)
18 > var greeter = new Greeter("Hello, world!");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (311 to 341) SpanInfo: {"start":312,"length":28}
>new Greeter("Hello, world!")
>:=> (line 18, col 18) to (line 18, col 46)
--------------------------------
19 > var str = greeter.greet();
~~~~~~~~~~~~~ => Pos: (342 to 354) SpanInfo: {"start":346,"length":25}
>var str = greeter.greet()
>:=> (line 19, col 4) to (line 19, col 29)
19 > var str = greeter.greet();
~~~~~~~~~~~~~~~~~~ => Pos: (355 to 372) SpanInfo: {"start":356,"length":15}
>greeter.greet()
>:=> (line 19, col 14) to (line 19, col 29)
--------------------------------
20 >
~ => Pos: (373 to 373) SpanInfo: undefined
--------------------------------
21 > function foo2(greeting: string, ...restGreetings /* more greeting */: string[]) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (374 to 408) SpanInfo: {"start":468,"length":28}
>var greeters: Greeter[] = []
>:=> (line 22, col 8) to (line 22, col 36)
21 > function foo2(greeting: string, ...restGreetings /* more greeting */: string[]) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (409 to 456) SpanInfo: {"start":410,"length":46}
>...restGreetings /* more greeting */: string[]
>:=> (line 21, col 36) to (line 21, col 82)
21 > function foo2(greeting: string, ...restGreetings /* more greeting */: string[]) {
~~~=> Pos: (457 to 459) SpanInfo: {"start":468,"length":28}
>var greeters: Greeter[] = []
>:=> (line 22, col 8) to (line 22, col 36)
--------------------------------
22 > var greeters: Greeter[] = []; /* inline block comment */
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (460 to 524) SpanInfo: {"start":468,"length":28}
>var greeters: Greeter[] = []
>:=> (line 22, col 8) to (line 22, col 36)
--------------------------------
23 > greeters[0] = new Greeter(greeting);
~~~~~~~~~~~~~~~~~~~~~ => Pos: (525 to 545) SpanInfo: {"start":533,"length":35}
>greeters[0] = new Greeter(greeting)
>:=> (line 23, col 8) to (line 23, col 43)
23 > greeters[0] = new Greeter(greeting);
~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (546 to 569) SpanInfo: {"start":547,"length":21}
>new Greeter(greeting)
>:=> (line 23, col 22) to (line 23, col 43)
--------------------------------
24 > for (var i = 0; i < restGreetings.length; i++) {
~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (570 to 592) SpanInfo: {"start":583,"length":9}
>var i = 0
>:=> (line 24, col 13) to (line 24, col 22)
24 > for (var i = 0; i < restGreetings.length; i++) {
~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (593 to 618) SpanInfo: {"start":594,"length":24}
>i < restGreetings.length
>:=> (line 24, col 24) to (line 24, col 48)
24 > for (var i = 0; i < restGreetings.length; i++) {
~~~~~~~~=> Pos: (619 to 626) SpanInfo: {"start":620,"length":3}
>i++
>:=> (line 24, col 50) to (line 24, col 53)
--------------------------------
25 > greeters.push(new Greeter(restGreetings[i]));
~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (627 to 652) SpanInfo: {"start":639,"length":44}
>greeters.push(new Greeter(restGreetings[i]))
>:=> (line 25, col 12) to (line 25, col 56)
25 > greeters.push(new Greeter(restGreetings[i]));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (653 to 681) SpanInfo: {"start":653,"length":29}
>new Greeter(restGreetings[i])
>:=> (line 25, col 26) to (line 25, col 55)
25 > greeters.push(new Greeter(restGreetings[i]));
~~~=> Pos: (682 to 684) SpanInfo: {"start":639,"length":44}
>greeters.push(new Greeter(restGreetings[i]))
>:=> (line 25, col 12) to (line 25, col 56)
--------------------------------
26 > }
~~~~~~~~~~ => Pos: (685 to 694) SpanInfo: {"start":639,"length":44}
>greeters.push(new Greeter(restGreetings[i]))
>:=> (line 25, col 12) to (line 25, col 56)
--------------------------------
27 >
~ => Pos: (695 to 695) SpanInfo: {"start":639,"length":44}
>greeters.push(new Greeter(restGreetings[i]))
>:=> (line 25, col 12) to (line 25, col 56)
--------------------------------
28 > return greeters;
~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (696 to 720) SpanInfo: {"start":704,"length":15}
>return greeters
>:=> (line 28, col 8) to (line 28, col 23)
--------------------------------
29 > }
~~~~~~ => Pos: (721 to 726) SpanInfo: {"start":725,"length":1}
>}
>:=> (line 29, col 4) to (line 29, col 5)
--------------------------------
30 >
~ => Pos: (727 to 727) SpanInfo: {"start":725,"length":1}
>}
>:=> (line 29, col 4) to (line 29, col 5)
--------------------------------
31 > var b = foo2("Hello", "World", "!");
~~~~~~~~~~~ => Pos: (728 to 738) SpanInfo: {"start":732,"length":35}
>var b = foo2("Hello", "World", "!")
>:=> (line 31, col 4) to (line 31, col 39)
31 > var b = foo2("Hello", "World", "!");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (739 to 768) SpanInfo: {"start":740,"length":27}
>foo2("Hello", "World", "!")
>:=> (line 31, col 12) to (line 31, col 39)
--------------------------------
32 > // This is simple signle line comment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (769 to 810) SpanInfo: undefined
--------------------------------
33 > for (var j = 0; j < b.length; j++) {
~~~~~~~~~~~~~~~~~~~ => Pos: (811 to 829) SpanInfo: {"start":820,"length":9}
>var j = 0
>:=> (line 33, col 9) to (line 33, col 18)
33 > for (var j = 0; j < b.length; j++) {
~~~~~~~~~~~~~~ => Pos: (830 to 843) SpanInfo: {"start":831,"length":12}
>j < b.length
>:=> (line 33, col 20) to (line 33, col 32)
33 > for (var j = 0; j < b.length; j++) {
~~~~~~~~ => Pos: (844 to 851) SpanInfo: {"start":845,"length":3}
>j++
>:=> (line 33, col 34) to (line 33, col 37)
--------------------------------
34 > b[j].greet();
~~~~~~~~~~~~~~~~~~~~~~ => Pos: (852 to 873) SpanInfo: {"start":860,"length":12}
>b[j].greet()
>:=> (line 34, col 8) to (line 34, col 20)
--------------------------------
35 > }
~~~~~~ => Pos: (874 to 879) SpanInfo: {"start":860,"length":12}
>b[j].greet()
>:=> (line 34, col 8) to (line 34, col 20)
--------------------------------
36 >}
~ => Pos: (880 to 880) SpanInfo: {"start":880,"length":1}
>}
>:=> (line 36, col 0) to (line 36, col 1)
@@ -0,0 +1,129 @@
1 >var x = 10;
~~~~~~~~~~~~ => Pos: (0 to 11) SpanInfo: {"start":0,"length":10}
>var x = 10
>:=> (line 1, col 0) to (line 1, col 10)
--------------------------------
2 >var y = x ? x + 10 : 30;
~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (12 to 36) SpanInfo: {"start":12,"length":23}
>var y = x ? x + 10 : 30
>:=> (line 2, col 0) to (line 2, col 23)
--------------------------------
3 >var z = (function foo() {
~~~~~~~ => Pos: (37 to 43) SpanInfo: {"start":37,"length":90}
>var z = (function foo() {
> return x;
>})() ? y : function bar() {
> return x;
>} ()
>:=> (line 3, col 0) to (line 7, col 4)
3 >var z = (function foo() {
~~ => Pos: (44 to 45) SpanInfo: {"start":45,"length":36}
>(function foo() {
> return x;
>})()
>:=> (line 3, col 8) to (line 5, col 4)
3 >var z = (function foo() {
~~~~~~~~~~~~~~~~~ => Pos: (46 to 62) SpanInfo: {"start":67,"length":8}
>return x
>:=> (line 4, col 4) to (line 4, col 12)
--------------------------------
4 > return x;
~~~~~~~~~~~~~~ => Pos: (63 to 76) SpanInfo: {"start":67,"length":8}
>return x
>:=> (line 4, col 4) to (line 4, col 12)
--------------------------------
5 >})() ? y : function bar() {
~ => Pos: (77 to 77) SpanInfo: {"start":77,"length":1}
>}
>:=> (line 5, col 0) to (line 5, col 1)
5 >})() ? y : function bar() {
~~~ => Pos: (78 to 80) SpanInfo: {"start":45,"length":36}
>(function foo() {
> return x;
>})()
>:=> (line 3, col 8) to (line 5, col 4)
5 >})() ? y : function bar() {
~~~~~~ => Pos: (81 to 86) SpanInfo: {"start":37,"length":90}
>var z = (function foo() {
> return x;
>})() ? y : function bar() {
> return x;
>} ()
>:=> (line 3, col 0) to (line 7, col 4)
5 >})() ? y : function bar() {
~~~~~~~~~~~~~~~~~~ => Pos: (87 to 104) SpanInfo: {"start":113,"length":8}
>return x
>:=> (line 6, col 8) to (line 6, col 16)
--------------------------------
6 > return x;
~~~~~~~~~~~~~~~~~~ => Pos: (105 to 122) SpanInfo: {"start":113,"length":8}
>return x
>:=> (line 6, col 8) to (line 6, col 16)
--------------------------------
7 >} ();
~ => Pos: (123 to 123) SpanInfo: {"start":123,"length":1}
>}
>:=> (line 7, col 0) to (line 7, col 1)
7 >} ();
~~~~~ => Pos: (124 to 128) SpanInfo: {"start":88,"length":39}
>function bar() {
> return x;
>} ()
>:=> (line 5, col 11) to (line 7, col 4)
--------------------------------
8 >x = y ? (function () {
~~~~~~~ => Pos: (129 to 135) SpanInfo: {"start":129,"length":47}
>x = y ? (function () {
> return z;
>})() : 10
>:=> (line 8, col 0) to (line 10, col 10)
8 >x = y ? (function () {
~~ => Pos: (136 to 137) SpanInfo: {"start":137,"length":33}
>(function () {
> return z;
>})()
>:=> (line 8, col 8) to (line 10, col 4)
8 >x = y ? (function () {
~~~~~~~~~~~~~~ => Pos: (138 to 151) SpanInfo: {"start":156,"length":8}
>return z
>:=> (line 9, col 4) to (line 9, col 12)
--------------------------------
9 > return z;
~~~~~~~~~~~~~~ => Pos: (152 to 165) SpanInfo: {"start":156,"length":8}
>return z
>:=> (line 9, col 4) to (line 9, col 12)
--------------------------------
10 >})() : 10;
~ => Pos: (166 to 166) SpanInfo: {"start":166,"length":1}
>}
>:=> (line 10, col 0) to (line 10, col 1)
10 >})() : 10;
~~~ => Pos: (167 to 169) SpanInfo: {"start":137,"length":33}
>(function () {
> return z;
>})()
>:=> (line 8, col 8) to (line 10, col 4)
10 >})() : 10;
~~~~~~~ => Pos: (170 to 176) SpanInfo: {"start":129,"length":47}
>x = y ? (function () {
> return z;
>})() : 10
>:=> (line 8, col 0) to (line 10, col 10)
+63 -2
View File
@@ -76,6 +76,67 @@
>:=> (line 10, col 4) to (line 10, col 7)
--------------------------------
12 >while (i < 30);
~~~~~~~~~~~~~~~ => Pos: (92 to 106) SpanInfo: {"start":92,"length":14}
~~~~~~~~~~~~~~~~ => Pos: (92 to 107) SpanInfo: {"start":92,"length":14}
>while (i < 30)
>:=> (line 12, col 0) to (line 12, col 14)
>:=> (line 12, col 0) to (line 12, col 14)
--------------------------------
13 >do {
~~~~~ => Pos: (108 to 112) SpanInfo: {"start":117,"length":3}
>i--
>:=> (line 14, col 4) to (line 14, col 7)
--------------------------------
14 > i--;
~~~~~~~~~ => Pos: (113 to 121) SpanInfo: {"start":117,"length":3}
>i--
>:=> (line 14, col 4) to (line 14, col 7)
--------------------------------
15 >} while ((function () {
~ => Pos: (122 to 122) SpanInfo: {"start":117,"length":3}
>i--
>:=> (line 14, col 4) to (line 14, col 7)
15 >} while ((function () {
~~~~~~~~ => Pos: (123 to 130) SpanInfo: {"start":124,"length":60}
>while ((function () {
> return 30 * i;
> })() !== i)
>:=> (line 15, col 2) to (line 17, col 15)
15 >} while ((function () {
~ => Pos: (131 to 131) SpanInfo: {"start":131,"length":46}
>(function () {
> return 30 * i;
> })()
>:=> (line 15, col 9) to (line 17, col 8)
15 >} while ((function () {
~~~~~~~~~~~~~~ => Pos: (132 to 145) SpanInfo: {"start":154,"length":13}
>return 30 * i
>:=> (line 16, col 8) to (line 16, col 21)
--------------------------------
16 > return 30 * i;
~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (146 to 168) SpanInfo: {"start":154,"length":13}
>return 30 * i
>:=> (line 16, col 8) to (line 16, col 21)
--------------------------------
17 > })() !== i);
~~~~~ => Pos: (169 to 173) SpanInfo: {"start":173,"length":1}
>}
>:=> (line 17, col 4) to (line 17, col 5)
17 > })() !== i);
~~~ => Pos: (174 to 176) SpanInfo: {"start":131,"length":46}
>(function () {
> return 30 * i;
> })()
>:=> (line 15, col 9) to (line 17, col 8)
17 > })() !== i);
~~~~~~~~~ => Pos: (177 to 185) SpanInfo: {"start":124,"length":60}
>while ((function () {
> return 30 * i;
> })() !== i)
>:=> (line 15, col 2) to (line 17, col 15)
+19 -4
View File
@@ -220,14 +220,29 @@
--------------------------------
32 >for (i = 0, j = 20; j < 20, i < 20; j++) {
~~~~~~~~~~~~~~~~~~~ => Pos: (351 to 369) SpanInfo: {"start":356,"length":13}
~~~~~ => Pos: (351 to 355) SpanInfo: {"start":356,"length":13}
>i = 0, j = 20
>:=> (line 32, col 5) to (line 32, col 18)
32 >for (i = 0, j = 20; j < 20, i < 20; j++) {
~~~~~~~~~~~~~~~~ => Pos: (370 to 385) SpanInfo: {"start":371,"length":14}
>j < 20, i < 20
>:=> (line 32, col 20) to (line 32, col 34)
~~~~~~ => Pos: (356 to 361) SpanInfo: {"start":356,"length":5}
>i = 0
>:=> (line 32, col 5) to (line 32, col 10)
32 >for (i = 0, j = 20; j < 20, i < 20; j++) {
~~~~~~~~ => Pos: (362 to 369) SpanInfo: {"start":363,"length":6}
>j = 20
>:=> (line 32, col 12) to (line 32, col 18)
32 >for (i = 0, j = 20; j < 20, i < 20; j++) {
~~~~~~~~ => Pos: (370 to 377) SpanInfo: {"start":371,"length":6}
>j < 20
>:=> (line 32, col 20) to (line 32, col 26)
32 >for (i = 0, j = 20; j < 20, i < 20; j++) {
~~~~~~~~ => Pos: (378 to 385) SpanInfo: {"start":379,"length":6}
>i < 20
>:=> (line 32, col 28) to (line 32, col 34)
32 >for (i = 0, j = 20; j < 20, i < 20; j++) {
~~~~~~~~ => Pos: (386 to 393) SpanInfo: {"start":387,"length":3}
@@ -78,6 +78,66 @@
>:=> (line 13, col 4) to (line 13, col 19)
--------------------------------
14 >}
~ => Pos: (180 to 180) SpanInfo: {"start":163,"length":15}
~~ => Pos: (180 to 181) SpanInfo: {"start":163,"length":15}
>WScript.Echo(x)
>:=> (line 13, col 4) to (line 13, col 19)
>:=> (line 13, col 4) to (line 13, col 19)
--------------------------------
15 >var z = 10;
~~~~~~~~~~~~ => Pos: (182 to 193) SpanInfo: {"start":182,"length":10}
>var z = 10
>:=> (line 15, col 0) to (line 15, col 10)
--------------------------------
16 >for (x in function foo() {
~~~~~~~~~ => Pos: (194 to 202) SpanInfo: {"start":194,"length":54}
>for (x in function foo() {
> return new String();
>})
>:=> (line 16, col 0) to (line 18, col 2)
16 >for (x in function foo() {
~~~~~~~~~~~~~~~~~~ => Pos: (203 to 220) SpanInfo: {"start":225,"length":19}
>return new String()
>:=> (line 17, col 4) to (line 17, col 23)
--------------------------------
17 > return new String();
~~~~~~~~~~ => Pos: (221 to 230) SpanInfo: {"start":225,"length":19}
>return new String()
>:=> (line 17, col 4) to (line 17, col 23)
17 > return new String();
~~~~~~~~~~~~~~~ => Pos: (231 to 245) SpanInfo: {"start":232,"length":12}
>new String()
>:=> (line 17, col 11) to (line 17, col 23)
--------------------------------
18 >}) {
~ => Pos: (246 to 246) SpanInfo: {"start":246,"length":1}
>}
>:=> (line 18, col 0) to (line 18, col 1)
18 >}) {
~ => Pos: (247 to 247) SpanInfo: {"start":194,"length":54}
>for (x in function foo() {
> return new String();
>})
>:=> (line 16, col 0) to (line 18, col 2)
18 >}) {
~~~ => Pos: (248 to 250) SpanInfo: {"start":255,"length":3}
>z++
>:=> (line 19, col 4) to (line 19, col 7)
--------------------------------
19 > z++;
~~~~~~~~~ => Pos: (251 to 259) SpanInfo: {"start":255,"length":3}
>z++
>:=> (line 19, col 4) to (line 19, col 7)
--------------------------------
20 >}
~ => Pos: (260 to 260) SpanInfo: {"start":255,"length":3}
>z++
>:=> (line 19, col 4) to (line 19, col 7)
@@ -0,0 +1,189 @@
1 >var greetings = 0;
~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 18) SpanInfo: {"start":0,"length":17}
>var greetings = 0
>:=> (line 1, col 0) to (line 1, col 17)
--------------------------------
2 >var greet = (greeting: string): number => {
~~~~~~~~~~~ => Pos: (19 to 29) SpanInfo: {"start":19,"length":84}
>var greet = (greeting: string): number => {
> greetings++;
> return greetings;
>}
>:=> (line 2, col 0) to (line 5, col 1)
2 >var greet = (greeting: string): number => {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (30 to 62) SpanInfo: {"start":67,"length":11}
>greetings++
>:=> (line 3, col 4) to (line 3, col 15)
--------------------------------
3 > greetings++;
~~~~~~~~~~~~~~~~~ => Pos: (63 to 79) SpanInfo: {"start":67,"length":11}
>greetings++
>:=> (line 3, col 4) to (line 3, col 15)
--------------------------------
4 > return greetings;
~~~~~~~~~~~~~~~~~~~~~~ => Pos: (80 to 101) SpanInfo: {"start":84,"length":16}
>return greetings
>:=> (line 4, col 4) to (line 4, col 20)
--------------------------------
5 >}
~~ => Pos: (102 to 103) SpanInfo: {"start":102,"length":1}
>}
>:=> (line 5, col 0) to (line 5, col 1)
--------------------------------
6 >greet("Hello");
~~~~~~~~~~~~~~~~ => Pos: (104 to 119) SpanInfo: {"start":104,"length":14}
>greet("Hello")
>:=> (line 6, col 0) to (line 6, col 14)
--------------------------------
7 >var incrGreetings = () => greetings++;
~~~~~~~~~~~~~~~~~~~ => Pos: (120 to 138) SpanInfo: {"start":120,"length":37}
>var incrGreetings = () => greetings++
>:=> (line 7, col 0) to (line 7, col 37)
7 >var incrGreetings = () => greetings++;
~~~~~~~~~~~~~~~~~~~~ => Pos: (139 to 158) SpanInfo: {"start":146,"length":11}
>greetings++
>:=> (line 7, col 26) to (line 7, col 37)
--------------------------------
8 >var greetNewMsg = msg => greet(msg);
~~~~~~~~~~~~~~~~~ => Pos: (159 to 175) SpanInfo: {"start":159,"length":35}
>var greetNewMsg = msg => greet(msg)
>:=> (line 8, col 0) to (line 8, col 35)
8 >var greetNewMsg = msg => greet(msg);
~~~~~~~~~~~~~~~~~~~~ => Pos: (176 to 195) SpanInfo: {"start":184,"length":10}
>greet(msg)
>:=> (line 8, col 25) to (line 8, col 35)
--------------------------------
9 >greetNewMsg = function (msg: string) {
~~~~~~~~~~~~~ => Pos: (196 to 208) SpanInfo: {"start":196,"length":63}
>greetNewMsg = function (msg: string) {
> return greet(msg);
>}
>:=> (line 9, col 0) to (line 11, col 1)
9 >greetNewMsg = function (msg: string) {
~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (209 to 234) SpanInfo: {"start":239,"length":17}
>return greet(msg)
>:=> (line 10, col 4) to (line 10, col 21)
--------------------------------
10 > return greet(msg);
~~~~~~~~~~ => Pos: (235 to 244) SpanInfo: {"start":239,"length":17}
>return greet(msg)
>:=> (line 10, col 4) to (line 10, col 21)
10 > return greet(msg);
~~~~~~~~~~~~~ => Pos: (245 to 257) SpanInfo: {"start":246,"length":10}
>greet(msg)
>:=> (line 10, col 11) to (line 10, col 21)
--------------------------------
11 >};
~~~ => Pos: (258 to 260) SpanInfo: {"start":258,"length":1}
>}
>:=> (line 11, col 0) to (line 11, col 1)
--------------------------------
12 >function bar(a = function foo() {
~~~~~~~~~~~~~ => Pos: (261 to 273) SpanInfo: {"start":326,"length":9}
>if (!a())
>:=> (line 15, col 4) to (line 15, col 13)
12 >function bar(a = function foo() {
~~~ => Pos: (274 to 276) SpanInfo: {"start":274,"length":44}
>a = function foo() {
> return greetings;
>}
>:=> (line 12, col 13) to (line 14, col 1)
12 >function bar(a = function foo() {
~~~~~~~~~~~~~~~~~~ => Pos: (277 to 294) SpanInfo: {"start":299,"length":16}
>return greetings
>:=> (line 13, col 4) to (line 13, col 20)
--------------------------------
13 > return greetings;
~~~~~~~~~~~~~~~~~~~~~~ => Pos: (295 to 316) SpanInfo: {"start":299,"length":16}
>return greetings
>:=> (line 13, col 4) to (line 13, col 20)
--------------------------------
14 >}) {
~~ => Pos: (317 to 318) SpanInfo: {"start":317,"length":1}
>}
>:=> (line 14, col 0) to (line 14, col 1)
14 >}) {
~~~ => Pos: (319 to 321) SpanInfo: {"start":326,"length":9}
>if (!a())
>:=> (line 15, col 4) to (line 15, col 13)
--------------------------------
15 > if (!a()) {
~~~~~~~~~ => Pos: (322 to 330) SpanInfo: {"start":326,"length":9}
>if (!a())
>:=> (line 15, col 4) to (line 15, col 13)
15 > if (!a()) {
~~~ => Pos: (331 to 333) SpanInfo: {"start":331,"length":3}
>a()
>:=> (line 15, col 9) to (line 15, col 12)
15 > if (!a()) {
~~~~ => Pos: (334 to 337) SpanInfo: {"start":326,"length":9}
>if (!a())
>:=> (line 15, col 4) to (line 15, col 13)
--------------------------------
16 > return a;
~~~~~~~~~~~~~~~~~~ => Pos: (338 to 355) SpanInfo: {"start":346,"length":8}
>return a
>:=> (line 16, col 8) to (line 16, col 16)
--------------------------------
17 > }
~~~~~~ => Pos: (356 to 361) SpanInfo: {"start":346,"length":8}
>return a
>:=> (line 16, col 8) to (line 16, col 16)
--------------------------------
18 > return function bar() {
~~~~~~~~~~ => Pos: (362 to 371) SpanInfo: {"start":366,"length":56}
>return function bar() {
> return -greetings;
> }
>:=> (line 18, col 4) to (line 20, col 5)
18 > return function bar() {
~~~~~~~~~~~~~~~~~~ => Pos: (372 to 389) SpanInfo: {"start":398,"length":17}
>return -greetings
>:=> (line 19, col 8) to (line 19, col 25)
--------------------------------
19 > return -greetings;
~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (390 to 416) SpanInfo: {"start":398,"length":17}
>return -greetings
>:=> (line 19, col 8) to (line 19, col 25)
--------------------------------
20 > };
~~~~~~~ => Pos: (417 to 423) SpanInfo: {"start":421,"length":1}
>}
>:=> (line 20, col 4) to (line 20, col 5)
--------------------------------
21 >}
~ => Pos: (424 to 424) SpanInfo: {"start":424,"length":1}
>}
>:=> (line 21, col 0) to (line 21, col 1)
@@ -105,6 +105,62 @@
>:=> (line 16, col 4) to (line 16, col 7)
--------------------------------
17 >}
~ => Pos: (155 to 155) SpanInfo: {"start":150,"length":3}
~~ => Pos: (155 to 156) SpanInfo: {"start":150,"length":3}
>i--
>:=> (line 16, col 4) to (line 16, col 7)
>:=> (line 16, col 4) to (line 16, col 7)
--------------------------------
18 >if (function foo() {
~~~~ => Pos: (157 to 160) SpanInfo: {"start":157,"length":41}
>if (function foo() {
> return 30;
>} ())
>:=> (line 18, col 0) to (line 20, col 5)
18 >if (function foo() {
~~~~~~~~~~~~~~~~~ => Pos: (161 to 177) SpanInfo: {"start":182,"length":9}
>return 30
>:=> (line 19, col 4) to (line 19, col 13)
--------------------------------
19 > return 30;
~~~~~~~~~~~~~~~ => Pos: (178 to 192) SpanInfo: {"start":182,"length":9}
>return 30
>:=> (line 19, col 4) to (line 19, col 13)
--------------------------------
20 >} ()) {
~ => Pos: (193 to 193) SpanInfo: {"start":193,"length":1}
>}
>:=> (line 20, col 0) to (line 20, col 1)
20 >} ()) {
~~~ => Pos: (194 to 196) SpanInfo: {"start":161,"length":36}
>function foo() {
> return 30;
>} ()
>:=> (line 18, col 4) to (line 20, col 4)
20 >} ()) {
~ => Pos: (197 to 197) SpanInfo: {"start":157,"length":41}
>if (function foo() {
> return 30;
>} ())
>:=> (line 18, col 0) to (line 20, col 5)
20 >} ()) {
~~~ => Pos: (198 to 200) SpanInfo: {"start":205,"length":3}
>i++
>:=> (line 21, col 4) to (line 21, col 7)
--------------------------------
21 > i++;
~~~~~~~~~ => Pos: (201 to 209) SpanInfo: {"start":205,"length":3}
>i++
>:=> (line 21, col 4) to (line 21, col 7)
--------------------------------
22 >}
~ => Pos: (210 to 210) SpanInfo: {"start":205,"length":3}
>i++
>:=> (line 21, col 4) to (line 21, col 7)
@@ -37,11 +37,20 @@
--------------------------------
7 >var x = new a();
~~~~~~~~~~~~~~~~~ => Pos: (72 to 88) SpanInfo: {"start":72,"length":15}
~~~~~~~ => Pos: (72 to 78) SpanInfo: {"start":72,"length":15}
>var x = new a()
>:=> (line 7, col 0) to (line 7, col 15)
7 >var x = new a();
~~~~~~~~~~ => Pos: (79 to 88) SpanInfo: {"start":80,"length":7}
>new a()
>:=> (line 7, col 8) to (line 7, col 15)
--------------------------------
8 >var y = new b();
~~~~~~~~~~~~~~~~ => Pos: (89 to 104) SpanInfo: {"start":89,"length":15}
~~~~~~~ => Pos: (89 to 95) SpanInfo: {"start":89,"length":15}
>var y = new b()
>:=> (line 8, col 0) to (line 8, col 15)
>:=> (line 8, col 0) to (line 8, col 15)
8 >var y = new b();
~~~~~~~~~ => Pos: (96 to 104) SpanInfo: {"start":97,"length":7}
>new b()
>:=> (line 8, col 8) to (line 8, col 15)
@@ -0,0 +1,233 @@
1 >var x = {
~~~~~~~~~~ => Pos: (0 to 9) SpanInfo: {"start":0,"length":179}
>var x = {
> a: 10,
> b: () => 10,
> someMethod() {
> return "Hello";
> },
> get y() {
> return 30;
> },
> set z(x: number) {
> var bar = x;
> }
>}
>:=> (line 1, col 0) to (line 13, col 1)
--------------------------------
2 > a: 10,
~~~~~~~~~~~ => Pos: (10 to 20) SpanInfo: {"start":0,"length":179}
>var x = {
> a: 10,
> b: () => 10,
> someMethod() {
> return "Hello";
> },
> get y() {
> return 30;
> },
> set z(x: number) {
> var bar = x;
> }
>}
>:=> (line 1, col 0) to (line 13, col 1)
--------------------------------
3 > b: () => 10,
~~~~~~~~~~~~~~~~~ => Pos: (21 to 37) SpanInfo: {"start":34,"length":2}
>10
>:=> (line 3, col 13) to (line 3, col 15)
--------------------------------
4 > someMethod() {
~~~~~~~~~~~~~~~~~~~ => Pos: (38 to 56) SpanInfo: {"start":65,"length":14}
>return "Hello"
>:=> (line 5, col 8) to (line 5, col 22)
--------------------------------
5 > return "Hello";
~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (57 to 80) SpanInfo: {"start":65,"length":14}
>return "Hello"
>:=> (line 5, col 8) to (line 5, col 22)
--------------------------------
6 > },
~~~~~~~ => Pos: (81 to 87) SpanInfo: {"start":85,"length":1}
>}
>:=> (line 6, col 4) to (line 6, col 5)
--------------------------------
7 > get y() {
~~~~~~~~~~~~~~ => Pos: (88 to 101) SpanInfo: {"start":110,"length":9}
>return 30
>:=> (line 8, col 8) to (line 8, col 17)
--------------------------------
8 > return 30;
~~~~~~~~~~~~~~~~~~~ => Pos: (102 to 120) SpanInfo: {"start":110,"length":9}
>return 30
>:=> (line 8, col 8) to (line 8, col 17)
--------------------------------
9 > },
~~~~~~~ => Pos: (121 to 127) SpanInfo: {"start":125,"length":1}
>}
>:=> (line 9, col 4) to (line 9, col 5)
--------------------------------
10 > set z(x: number) {
~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (128 to 150) SpanInfo: {"start":159,"length":11}
>var bar = x
>:=> (line 11, col 8) to (line 11, col 19)
--------------------------------
11 > var bar = x;
~~~~~~~~~~~~~~~~~~~~~ => Pos: (151 to 171) SpanInfo: {"start":159,"length":11}
>var bar = x
>:=> (line 11, col 8) to (line 11, col 19)
--------------------------------
12 > }
~~~~~~ => Pos: (172 to 177) SpanInfo: {"start":176,"length":1}
>}
>:=> (line 12, col 4) to (line 12, col 5)
--------------------------------
13 >};
~~~ => Pos: (178 to 180) SpanInfo: {"start":0,"length":179}
>var x = {
> a: 10,
> b: () => 10,
> someMethod() {
> return "Hello";
> },
> get y() {
> return 30;
> },
> set z(x: number) {
> var bar = x;
> }
>}
>:=> (line 1, col 0) to (line 13, col 1)
--------------------------------
14 >var a = ({
~~~~~~~~~~~ => Pos: (181 to 191) SpanInfo: {"start":181,"length":192}
>var a = ({
> a: 10,
> b: () => 10,
> someMethod() {
> return "Hello";
> },
> get y() {
> return 30;
> },
> set z(x: number) {
> var bar = x;
> }
>}).someMethod
>:=> (line 14, col 0) to (line 26, col 13)
--------------------------------
15 > a: 10,
~~~~~~~~~~~ => Pos: (192 to 202) SpanInfo: {"start":181,"length":192}
>var a = ({
> a: 10,
> b: () => 10,
> someMethod() {
> return "Hello";
> },
> get y() {
> return 30;
> },
> set z(x: number) {
> var bar = x;
> }
>}).someMethod
>:=> (line 14, col 0) to (line 26, col 13)
--------------------------------
16 > b: () => 10,
~~~~~~~~~~~~~~~~~ => Pos: (203 to 219) SpanInfo: {"start":216,"length":2}
>10
>:=> (line 16, col 13) to (line 16, col 15)
--------------------------------
17 > someMethod() {
~~~~~~~~~~~~~~~~~~~ => Pos: (220 to 238) SpanInfo: {"start":247,"length":14}
>return "Hello"
>:=> (line 18, col 8) to (line 18, col 22)
--------------------------------
18 > return "Hello";
~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (239 to 262) SpanInfo: {"start":247,"length":14}
>return "Hello"
>:=> (line 18, col 8) to (line 18, col 22)
--------------------------------
19 > },
~~~~~~~ => Pos: (263 to 269) SpanInfo: {"start":267,"length":1}
>}
>:=> (line 19, col 4) to (line 19, col 5)
--------------------------------
20 > get y() {
~~~~~~~~~~~~~~ => Pos: (270 to 283) SpanInfo: {"start":292,"length":9}
>return 30
>:=> (line 21, col 8) to (line 21, col 17)
--------------------------------
21 > return 30;
~~~~~~~~~~~~~~~~~~~ => Pos: (284 to 302) SpanInfo: {"start":292,"length":9}
>return 30
>:=> (line 21, col 8) to (line 21, col 17)
--------------------------------
22 > },
~~~~~~~ => Pos: (303 to 309) SpanInfo: {"start":307,"length":1}
>}
>:=> (line 22, col 4) to (line 22, col 5)
--------------------------------
23 > set z(x: number) {
~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (310 to 332) SpanInfo: {"start":341,"length":11}
>var bar = x
>:=> (line 24, col 8) to (line 24, col 19)
--------------------------------
24 > var bar = x;
~~~~~~~~~~~~~~~~~~~~~ => Pos: (333 to 353) SpanInfo: {"start":341,"length":11}
>var bar = x
>:=> (line 24, col 8) to (line 24, col 19)
--------------------------------
25 > }
~~~~~~ => Pos: (354 to 359) SpanInfo: {"start":358,"length":1}
>}
>:=> (line 25, col 4) to (line 25, col 5)
--------------------------------
26 >}).someMethod;
~~~~~~~~~~~~~~~ => Pos: (360 to 374) SpanInfo: {"start":181,"length":192}
>var a = ({
> a: 10,
> b: () => 10,
> someMethod() {
> return "Hello";
> },
> get y() {
> return 30;
> },
> set z(x: number) {
> var bar = x;
> }
>}).someMethod
>:=> (line 14, col 0) to (line 26, col 13)
--------------------------------
27 >a();
~~~~ => Pos: (375 to 378) SpanInfo: {"start":375,"length":3}
>a()
>:=> (line 27, col 0) to (line 27, col 3)
@@ -0,0 +1,361 @@
1 >function foo(a: number) {
~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 25) SpanInfo: {"start":30,"length":8}
>return a
>:=> (line 2, col 4) to (line 2, col 12)
--------------------------------
2 > return a;
~~~~~~~~~~~~~~ => Pos: (26 to 39) SpanInfo: {"start":30,"length":8}
>return a
>:=> (line 2, col 4) to (line 2, col 12)
--------------------------------
3 >}
~~ => Pos: (40 to 41) SpanInfo: {"start":40,"length":1}
>}
>:=> (line 3, col 0) to (line 3, col 1)
--------------------------------
4 >foo((function bar() {
~~~~ => Pos: (42 to 45) SpanInfo: {"start":42,"length":47}
>foo((function bar() {
> return foo(40);
>})())
>:=> (line 4, col 0) to (line 6, col 5)
4 >foo((function bar() {
~ => Pos: (46 to 46) SpanInfo: {"start":46,"length":42}
>(function bar() {
> return foo(40);
>})()
>:=> (line 4, col 4) to (line 6, col 4)
4 >foo((function bar() {
~~~~~~~~~~~~~~~~~ => Pos: (47 to 63) SpanInfo: {"start":68,"length":14}
>return foo(40)
>:=> (line 5, col 4) to (line 5, col 18)
--------------------------------
5 > return foo(40);
~~~~~~~~~~ => Pos: (64 to 73) SpanInfo: {"start":68,"length":14}
>return foo(40)
>:=> (line 5, col 4) to (line 5, col 18)
5 > return foo(40);
~~~~~~~~~~ => Pos: (74 to 83) SpanInfo: {"start":75,"length":7}
>foo(40)
>:=> (line 5, col 11) to (line 5, col 18)
--------------------------------
6 >})());
~ => Pos: (84 to 84) SpanInfo: {"start":84,"length":1}
>}
>:=> (line 6, col 0) to (line 6, col 1)
6 >})());
~~~ => Pos: (85 to 87) SpanInfo: {"start":46,"length":42}
>(function bar() {
> return foo(40);
>})()
>:=> (line 4, col 4) to (line 6, col 4)
6 >})());
~~~ => Pos: (88 to 90) SpanInfo: {"start":42,"length":47}
>foo((function bar() {
> return foo(40);
>})())
>:=> (line 4, col 0) to (line 6, col 5)
--------------------------------
7 >var y = foo((function () {
~~~~~~~ => Pos: (91 to 97) SpanInfo: {"start":91,"length":52}
>var y = foo((function () {
> return foo(40);
>})())
>:=> (line 7, col 0) to (line 9, col 5)
7 >var y = foo((function () {
~~~~~ => Pos: (98 to 102) SpanInfo: {"start":99,"length":44}
>foo((function () {
> return foo(40);
>})())
>:=> (line 7, col 8) to (line 9, col 5)
7 >var y = foo((function () {
~ => Pos: (103 to 103) SpanInfo: {"start":103,"length":39}
>(function () {
> return foo(40);
>})()
>:=> (line 7, col 12) to (line 9, col 4)
7 >var y = foo((function () {
~~~~~~~~~~~~~~ => Pos: (104 to 117) SpanInfo: {"start":122,"length":14}
>return foo(40)
>:=> (line 8, col 4) to (line 8, col 18)
--------------------------------
8 > return foo(40);
~~~~~~~~~~ => Pos: (118 to 127) SpanInfo: {"start":122,"length":14}
>return foo(40)
>:=> (line 8, col 4) to (line 8, col 18)
8 > return foo(40);
~~~~~~~~~~ => Pos: (128 to 137) SpanInfo: {"start":129,"length":7}
>foo(40)
>:=> (line 8, col 11) to (line 8, col 18)
--------------------------------
9 >})());;
~ => Pos: (138 to 138) SpanInfo: {"start":138,"length":1}
>}
>:=> (line 9, col 0) to (line 9, col 1)
9 >})());;
~~~ => Pos: (139 to 141) SpanInfo: {"start":103,"length":39}
>(function () {
> return foo(40);
>})()
>:=> (line 7, col 12) to (line 9, col 4)
9 >})());;
~~~~ => Pos: (142 to 145) SpanInfo: {"start":99,"length":44}
>foo((function () {
> return foo(40);
>})())
>:=> (line 7, col 8) to (line 9, col 5)
--------------------------------
10 >class greeter {
~~~~~~~~~~~~~~~~ => Pos: (146 to 161) SpanInfo: {"start":195,"length":1}
>}
>:=> (line 12, col 4) to (line 12, col 5)
--------------------------------
11 > constructor(a: number) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (162 to 190) SpanInfo: {"start":195,"length":1}
>}
>:=> (line 12, col 4) to (line 12, col 5)
--------------------------------
12 > }
~~~~~~ => Pos: (191 to 196) SpanInfo: {"start":195,"length":1}
>}
>:=> (line 12, col 4) to (line 12, col 5)
--------------------------------
13 >}
~~ => Pos: (197 to 198) SpanInfo: {"start":197,"length":1}
>}
>:=> (line 13, col 0) to (line 13, col 1)
--------------------------------
14 >foo(30);
~~~~~~~~~ => Pos: (199 to 207) SpanInfo: {"start":199,"length":7}
>foo(30)
>:=> (line 14, col 0) to (line 14, col 7)
--------------------------------
15 >foo(40 + y);
~~~~~~~~~~~~~ => Pos: (208 to 220) SpanInfo: {"start":208,"length":11}
>foo(40 + y)
>:=> (line 15, col 0) to (line 15, col 11)
--------------------------------
16 >y = foo(30);
~~~ => Pos: (221 to 223) SpanInfo: {"start":221,"length":11}
>y = foo(30)
>:=> (line 16, col 0) to (line 16, col 11)
16 >y = foo(30);
~~~~~~~~~~ => Pos: (224 to 233) SpanInfo: {"start":225,"length":7}
>foo(30)
>:=> (line 16, col 4) to (line 16, col 11)
--------------------------------
17 >y = foo(500 + y);
~~~ => Pos: (234 to 236) SpanInfo: {"start":234,"length":16}
>y = foo(500 + y)
>:=> (line 17, col 0) to (line 17, col 16)
17 >y = foo(500 + y);
~~~~~~~~~~~~~~~ => Pos: (237 to 251) SpanInfo: {"start":238,"length":12}
>foo(500 + y)
>:=> (line 17, col 4) to (line 17, col 16)
--------------------------------
18 >new greeter((function bar() {
~~~~~~~~~~~~ => Pos: (252 to 263) SpanInfo: {"start":252,"length":55}
>new greeter((function bar() {
> return foo(40);
>})())
>:=> (line 18, col 0) to (line 20, col 5)
18 >new greeter((function bar() {
~ => Pos: (264 to 264) SpanInfo: {"start":264,"length":42}
>(function bar() {
> return foo(40);
>})()
>:=> (line 18, col 12) to (line 20, col 4)
18 >new greeter((function bar() {
~~~~~~~~~~~~~~~~~ => Pos: (265 to 281) SpanInfo: {"start":286,"length":14}
>return foo(40)
>:=> (line 19, col 4) to (line 19, col 18)
--------------------------------
19 > return foo(40);
~~~~~~~~~~ => Pos: (282 to 291) SpanInfo: {"start":286,"length":14}
>return foo(40)
>:=> (line 19, col 4) to (line 19, col 18)
19 > return foo(40);
~~~~~~~~~~ => Pos: (292 to 301) SpanInfo: {"start":293,"length":7}
>foo(40)
>:=> (line 19, col 11) to (line 19, col 18)
--------------------------------
20 >})());
~ => Pos: (302 to 302) SpanInfo: {"start":302,"length":1}
>}
>:=> (line 20, col 0) to (line 20, col 1)
20 >})());
~~~ => Pos: (303 to 305) SpanInfo: {"start":264,"length":42}
>(function bar() {
> return foo(40);
>})()
>:=> (line 18, col 12) to (line 20, col 4)
20 >})());
~~~ => Pos: (306 to 308) SpanInfo: {"start":252,"length":55}
>new greeter((function bar() {
> return foo(40);
>})())
>:=> (line 18, col 0) to (line 20, col 5)
--------------------------------
21 >var anotherGreeter = new greeter((function bar() {
~~~~~~~~~~~~~~~~~~~~ => Pos: (309 to 328) SpanInfo: {"start":309,"length":76}
>var anotherGreeter = new greeter((function bar() {
> return foo(40);
>})())
>:=> (line 21, col 0) to (line 23, col 5)
21 >var anotherGreeter = new greeter((function bar() {
~~~~~~~~~~~~~ => Pos: (329 to 341) SpanInfo: {"start":330,"length":55}
>new greeter((function bar() {
> return foo(40);
>})())
>:=> (line 21, col 21) to (line 23, col 5)
21 >var anotherGreeter = new greeter((function bar() {
~ => Pos: (342 to 342) SpanInfo: {"start":342,"length":42}
>(function bar() {
> return foo(40);
>})()
>:=> (line 21, col 33) to (line 23, col 4)
21 >var anotherGreeter = new greeter((function bar() {
~~~~~~~~~~~~~~~~~=> Pos: (343 to 359) SpanInfo: {"start":364,"length":14}
>return foo(40)
>:=> (line 22, col 4) to (line 22, col 18)
--------------------------------
22 > return foo(40);
~~~~~~~~~~ => Pos: (360 to 369) SpanInfo: {"start":364,"length":14}
>return foo(40)
>:=> (line 22, col 4) to (line 22, col 18)
22 > return foo(40);
~~~~~~~~~~ => Pos: (370 to 379) SpanInfo: {"start":371,"length":7}
>foo(40)
>:=> (line 22, col 11) to (line 22, col 18)
--------------------------------
23 >})());
~ => Pos: (380 to 380) SpanInfo: {"start":380,"length":1}
>}
>:=> (line 23, col 0) to (line 23, col 1)
23 >})());
~~~ => Pos: (381 to 383) SpanInfo: {"start":342,"length":42}
>(function bar() {
> return foo(40);
>})()
>:=> (line 21, col 33) to (line 23, col 4)
23 >})());
~~~ => Pos: (384 to 386) SpanInfo: {"start":330,"length":55}
>new greeter((function bar() {
> return foo(40);
>})())
>:=> (line 21, col 21) to (line 23, col 5)
--------------------------------
24 >anotherGreeter = new greeter(30);
~~~~~~~~~~~~~~~~ => Pos: (387 to 402) SpanInfo: {"start":387,"length":32}
>anotherGreeter = new greeter(30)
>:=> (line 24, col 0) to (line 24, col 32)
24 >anotherGreeter = new greeter(30);
~~~~~~~~~~~~~~~~~~ => Pos: (403 to 420) SpanInfo: {"start":404,"length":15}
>new greeter(30)
>:=> (line 24, col 17) to (line 24, col 32)
--------------------------------
25 >anotherGreeter = new greeter(40 + y);
~~~~~~~~~~~~~~~~ => Pos: (421 to 436) SpanInfo: {"start":421,"length":36}
>anotherGreeter = new greeter(40 + y)
>:=> (line 25, col 0) to (line 25, col 36)
25 >anotherGreeter = new greeter(40 + y);
~~~~~~~~~~~~~~~~~~~~~~ => Pos: (437 to 458) SpanInfo: {"start":438,"length":19}
>new greeter(40 + y)
>:=> (line 25, col 17) to (line 25, col 36)
--------------------------------
26 >new greeter(30);
~~~~~~~~~~~~~~~~~ => Pos: (459 to 475) SpanInfo: {"start":459,"length":15}
>new greeter(30)
>:=> (line 26, col 0) to (line 26, col 15)
--------------------------------
27 >new greeter(40 + y);
~~~~~~~~~~~~~~~~~~~~~ => Pos: (476 to 496) SpanInfo: {"start":476,"length":19}
>new greeter(40 + y)
>:=> (line 27, col 0) to (line 27, col 19)
--------------------------------
28 >function foo2(x: number, y: string) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (497 to 534) SpanInfo: {"start":535,"length":1}
>}
>:=> (line 29, col 0) to (line 29, col 1)
--------------------------------
29 >}
~~ => Pos: (535 to 536) SpanInfo: {"start":535,"length":1}
>}
>:=> (line 29, col 0) to (line 29, col 1)
--------------------------------
30 >foo2(foo(30), foo(40).toString());
~~~~~ => Pos: (537 to 541) SpanInfo: {"start":537,"length":33}
>foo2(foo(30), foo(40).toString())
>:=> (line 30, col 0) to (line 30, col 33)
30 >foo2(foo(30), foo(40).toString());
~~~~~~~~ => Pos: (542 to 549) SpanInfo: {"start":542,"length":7}
>foo(30)
>:=> (line 30, col 5) to (line 30, col 12)
30 >foo2(foo(30), foo(40).toString());
~~~~~~~~ => Pos: (550 to 557) SpanInfo: {"start":551,"length":7}
>foo(40)
>:=> (line 30, col 14) to (line 30, col 21)
30 >foo2(foo(30), foo(40).toString());
~~~~~~~~~~~ => Pos: (558 to 568) SpanInfo: {"start":551,"length":18}
>foo(40).toString()
>:=> (line 30, col 14) to (line 30, col 32)
30 >foo2(foo(30), foo(40).toString());
~~ => Pos: (569 to 570) SpanInfo: {"start":537,"length":33}
>foo2(foo(30), foo(40).toString())
>:=> (line 30, col 0) to (line 30, col 33)
@@ -0,0 +1,572 @@
1 >function f() {
~~~~~~~~~~~~~~~ => Pos: (0 to 14) SpanInfo: undefined
--------------------------------
2 > var y;
~~~~~~~~~~~ => Pos: (15 to 25) SpanInfo: undefined
--------------------------------
3 > var x = 0;
~~~~~~~~~~~~~~~ => Pos: (26 to 40) SpanInfo: {"start":30,"length":9}
>var x = 0
>:=> (line 3, col 4) to (line 3, col 13)
--------------------------------
4 > for (var i = 0; i < 10; i++) {
~~~~~~~~~~~~~~~~~~~ => Pos: (41 to 59) SpanInfo: {"start":50,"length":9}
>var i = 0
>:=> (line 4, col 9) to (line 4, col 18)
4 > for (var i = 0; i < 10; i++) {
~~~~~~~~ => Pos: (60 to 67) SpanInfo: {"start":61,"length":6}
>i < 10
>:=> (line 4, col 20) to (line 4, col 26)
4 > for (var i = 0; i < 10; i++) {
~~~~~~~~ => Pos: (68 to 75) SpanInfo: {"start":69,"length":3}
>i++
>:=> (line 4, col 28) to (line 4, col 31)
--------------------------------
5 > x += i;
~~~~~~~~~~~~~~~~ => Pos: (76 to 91) SpanInfo: {"start":84,"length":6}
>x += i
>:=> (line 5, col 8) to (line 5, col 14)
--------------------------------
6 > x *= 0;
~~~~~~~~~~~~~~~~ => Pos: (92 to 107) SpanInfo: {"start":100,"length":6}
>x *= 0
>:=> (line 6, col 8) to (line 6, col 14)
--------------------------------
7 > }
~~~~~~ => Pos: (108 to 113) SpanInfo: {"start":100,"length":6}
>x *= 0
>:=> (line 6, col 8) to (line 6, col 14)
--------------------------------
8 > if (x > 17) {
~~~~~~~~~~~~~~~~~~ => Pos: (114 to 131) SpanInfo: {"start":118,"length":11}
>if (x > 17)
>:=> (line 8, col 4) to (line 8, col 15)
--------------------------------
9 > x /= 9;
~~~~~~~~~~~~~~~~ => Pos: (132 to 147) SpanInfo: {"start":140,"length":6}
>x /= 9
>:=> (line 9, col 8) to (line 9, col 14)
--------------------------------
10 > } else {
~~~~~ => Pos: (148 to 152) SpanInfo: {"start":140,"length":6}
>x /= 9
>:=> (line 9, col 8) to (line 9, col 14)
10 > } else {
~~~~~~~~ => Pos: (153 to 160) SpanInfo: {"start":169,"length":7}
>x += 10
>:=> (line 11, col 8) to (line 11, col 15)
--------------------------------
11 > x += 10;
~~~~~~~~~~~~~~~~~ => Pos: (161 to 177) SpanInfo: {"start":169,"length":7}
>x += 10
>:=> (line 11, col 8) to (line 11, col 15)
--------------------------------
12 > x++;
~~~~~~~~~~~~~ => Pos: (178 to 190) SpanInfo: {"start":186,"length":3}
>x++
>:=> (line 12, col 8) to (line 12, col 11)
--------------------------------
13 > }
~~~~~~ => Pos: (191 to 196) SpanInfo: {"start":186,"length":3}
>x++
>:=> (line 12, col 8) to (line 12, col 11)
--------------------------------
14 > var a = [
~~~~~~~~~~~~~~ => Pos: (197 to 210) SpanInfo: {"start":201,"length":47}
>var a = [
> 1,
> 2,
> 3
> ]
>:=> (line 14, col 4) to (line 18, col 5)
--------------------------------
15 > 1,
~~~~~~~~~~~ => Pos: (211 to 221) SpanInfo: {"start":201,"length":47}
>var a = [
> 1,
> 2,
> 3
> ]
>:=> (line 14, col 4) to (line 18, col 5)
--------------------------------
16 > 2,
~~~~~~~~~~~ => Pos: (222 to 232) SpanInfo: {"start":201,"length":47}
>var a = [
> 1,
> 2,
> 3
> ]
>:=> (line 14, col 4) to (line 18, col 5)
--------------------------------
17 > 3
~~~~~~~~~~ => Pos: (233 to 242) SpanInfo: {"start":201,"length":47}
>var a = [
> 1,
> 2,
> 3
> ]
>:=> (line 14, col 4) to (line 18, col 5)
--------------------------------
18 > ];
~~~~~~~ => Pos: (243 to 249) SpanInfo: {"start":201,"length":47}
>var a = [
> 1,
> 2,
> 3
> ]
>:=> (line 14, col 4) to (line 18, col 5)
--------------------------------
19 > var obj = {
~~~~~~~~~~~~~~~~ => Pos: (250 to 265) SpanInfo: {"start":254,"length":50}
>var obj = {
> z: 1,
> q: "hello"
> }
>:=> (line 19, col 4) to (line 22, col 5)
--------------------------------
20 > z: 1,
~~~~~~~~~~~~~~ => Pos: (266 to 279) SpanInfo: {"start":254,"length":50}
>var obj = {
> z: 1,
> q: "hello"
> }
>:=> (line 19, col 4) to (line 22, col 5)
--------------------------------
21 > q: "hello"
~~~~~~~~~~~~~~~~~~~ => Pos: (280 to 298) SpanInfo: {"start":254,"length":50}
>var obj = {
> z: 1,
> q: "hello"
> }
>:=> (line 19, col 4) to (line 22, col 5)
--------------------------------
22 > };
~~~~~~~ => Pos: (299 to 305) SpanInfo: {"start":254,"length":50}
>var obj = {
> z: 1,
> q: "hello"
> }
>:=> (line 19, col 4) to (line 22, col 5)
--------------------------------
23 > for (var j in a) {
~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (306 to 328) SpanInfo: {"start":310,"length":16}
>for (var j in a)
>:=> (line 23, col 4) to (line 23, col 20)
--------------------------------
24 > obj.z = a[j];
~~~~~~~~~~~~~~~~~~~~~~ => Pos: (329 to 350) SpanInfo: {"start":337,"length":12}
>obj.z = a[j]
>:=> (line 24, col 8) to (line 24, col 20)
--------------------------------
25 > var v = 10;
~~~~~~~~~~~~~~~~~~~~ => Pos: (351 to 370) SpanInfo: {"start":359,"length":10}
>var v = 10
>:=> (line 25, col 8) to (line 25, col 18)
--------------------------------
26 > }
~~~~~~ => Pos: (371 to 376) SpanInfo: {"start":359,"length":10}
>var v = 10
>:=> (line 25, col 8) to (line 25, col 18)
--------------------------------
27 > try {
~~~~~~~~~~ => Pos: (377 to 386) SpanInfo: {"start":395,"length":14}
>obj.q = "ohhh"
>:=> (line 28, col 8) to (line 28, col 22)
--------------------------------
28 > obj.q = "ohhh";
~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (387 to 410) SpanInfo: {"start":395,"length":14}
>obj.q = "ohhh"
>:=> (line 28, col 8) to (line 28, col 22)
--------------------------------
29 > } catch (e) {
~~~~~ => Pos: (411 to 415) SpanInfo: {"start":395,"length":14}
>obj.q = "ohhh"
>:=> (line 28, col 8) to (line 28, col 22)
29 > } catch (e) {
~~~~~~~~~~~~~ => Pos: (416 to 428) SpanInfo: {"start":437,"length":15}
>if (obj.z < 10)
>:=> (line 30, col 8) to (line 30, col 23)
--------------------------------
30 > if (obj.z < 10) {
~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (429 to 454) SpanInfo: {"start":437,"length":15}
>if (obj.z < 10)
>:=> (line 30, col 8) to (line 30, col 23)
--------------------------------
31 > obj.z = 12;
~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (455 to 478) SpanInfo: {"start":467,"length":10}
>obj.z = 12
>:=> (line 31, col 12) to (line 31, col 22)
--------------------------------
32 > } else {
~~~~~~~~~ => Pos: (479 to 487) SpanInfo: {"start":467,"length":10}
>obj.z = 12
>:=> (line 31, col 12) to (line 31, col 22)
32 > } else {
~~~~~~~~ => Pos: (488 to 495) SpanInfo: {"start":508,"length":13}
>obj.q = "hmm"
>:=> (line 33, col 12) to (line 33, col 25)
--------------------------------
33 > obj.q = "hmm";
~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (496 to 522) SpanInfo: {"start":508,"length":13}
>obj.q = "hmm"
>:=> (line 33, col 12) to (line 33, col 25)
--------------------------------
34 > }
~~~~~~~~~~ => Pos: (523 to 532) SpanInfo: {"start":508,"length":13}
>obj.q = "hmm"
>:=> (line 33, col 12) to (line 33, col 25)
--------------------------------
35 > }
~~~~~~ => Pos: (533 to 538) SpanInfo: {"start":437,"length":15}
>if (obj.z < 10)
>:=> (line 30, col 8) to (line 30, col 23)
--------------------------------
36 > try {
~~~~~~~~~~ => Pos: (539 to 548) SpanInfo: {"start":557,"length":17}
>throw new Error()
>:=> (line 37, col 8) to (line 37, col 25)
--------------------------------
37 > throw new Error();
~~~~~~~~~~~~~ => Pos: (549 to 561) SpanInfo: {"start":557,"length":17}
>throw new Error()
>:=> (line 37, col 8) to (line 37, col 25)
37 > throw new Error();
~~~~~~~~~~~~~~ => Pos: (562 to 575) SpanInfo: {"start":563,"length":11}
>new Error()
>:=> (line 37, col 14) to (line 37, col 25)
--------------------------------
38 > } catch (e1) {
~~~~~ => Pos: (576 to 580) SpanInfo: {"start":557,"length":17}
>throw new Error()
>:=> (line 37, col 8) to (line 37, col 25)
38 > } catch (e1) {
~~~~~~~~~~~~~~ => Pos: (581 to 594) SpanInfo: {"start":603,"length":10}
>var b = e1
>:=> (line 39, col 8) to (line 39, col 18)
--------------------------------
39 > var b = e1;
~~~~~~~~~~~~~~~~~~~~ => Pos: (595 to 614) SpanInfo: {"start":603,"length":10}
>var b = e1
>:=> (line 39, col 8) to (line 39, col 18)
--------------------------------
40 > } finally {
~~~~~ => Pos: (615 to 619) SpanInfo: {"start":603,"length":10}
>var b = e1
>:=> (line 39, col 8) to (line 39, col 18)
40 > } finally {
~~~~~~~~~~~ => Pos: (620 to 630) SpanInfo: {"start":639,"length":6}
>y = 70
>:=> (line 41, col 8) to (line 41, col 14)
--------------------------------
41 > y = 70;
~~~~~~~~~~~~~~~~ => Pos: (631 to 646) SpanInfo: {"start":639,"length":6}
>y = 70
>:=> (line 41, col 8) to (line 41, col 14)
--------------------------------
42 > }
~~~~~~ => Pos: (647 to 652) SpanInfo: {"start":639,"length":6}
>y = 70
>:=> (line 41, col 8) to (line 41, col 14)
--------------------------------
43 > with (obj) {
~~~~~~~~~~~~~~~~~ => Pos: (653 to 669) SpanInfo: {"start":678,"length":5}
>i = 2
>:=> (line 44, col 8) to (line 44, col 13)
--------------------------------
44 > i = 2;
~~~~~~~~~~~~~~~ => Pos: (670 to 684) SpanInfo: {"start":678,"length":5}
>i = 2
>:=> (line 44, col 8) to (line 44, col 13)
--------------------------------
45 > z = 10;
~~~~~~~~~~~~~~~~ => Pos: (685 to 700) SpanInfo: {"start":693,"length":6}
>z = 10
>:=> (line 45, col 8) to (line 45, col 14)
--------------------------------
46 > }
~~~~~~ => Pos: (701 to 706) SpanInfo: {"start":693,"length":6}
>z = 10
>:=> (line 45, col 8) to (line 45, col 14)
--------------------------------
47 > switch (obj.z) {
~~~~~~~~~~~~~~~~~~~~~ => Pos: (707 to 727) SpanInfo: {"start":711,"length":14}
>switch (obj.z)
>:=> (line 47, col 4) to (line 47, col 18)
--------------------------------
48 > case 0: {
~~~~~~~~~~~~~~~~~~ => Pos: (728 to 745) SpanInfo: {"start":758,"length":3}
>x++
>:=> (line 49, col 12) to (line 49, col 15)
--------------------------------
49 > x++;
~~~~~~~~~~~~~~~~~ => Pos: (746 to 762) SpanInfo: {"start":758,"length":3}
>x++
>:=> (line 49, col 12) to (line 49, col 15)
--------------------------------
50 > break;
~~~~~~~~~~~~~~~~~~~ => Pos: (763 to 781) SpanInfo: {"start":775,"length":5}
>break
>:=> (line 50, col 12) to (line 50, col 17)
--------------------------------
51 >
~ => Pos: (782 to 782) SpanInfo: undefined
--------------------------------
52 > }
~~~~~~~~~~ => Pos: (783 to 792) SpanInfo: {"start":775,"length":5}
>break
>:=> (line 50, col 12) to (line 50, col 17)
--------------------------------
53 > case 1: {
~~~~~~~~~~~~~~~~~~ => Pos: (793 to 810) SpanInfo: {"start":823,"length":3}
>x--
>:=> (line 54, col 12) to (line 54, col 15)
--------------------------------
54 > x--;
~~~~~~~~~~~~~~~~~ => Pos: (811 to 827) SpanInfo: {"start":823,"length":3}
>x--
>:=> (line 54, col 12) to (line 54, col 15)
--------------------------------
55 > break;
~~~~~~~~~~~~~~~~~~~ => Pos: (828 to 846) SpanInfo: {"start":840,"length":5}
>break
>:=> (line 55, col 12) to (line 55, col 17)
--------------------------------
56 >
~ => Pos: (847 to 847) SpanInfo: undefined
--------------------------------
57 > }
~~~~~~~~~~ => Pos: (848 to 857) SpanInfo: {"start":840,"length":5}
>break
>:=> (line 55, col 12) to (line 55, col 17)
--------------------------------
58 > default: {
~~~~~~~~~~~~~~~~~~~ => Pos: (858 to 876) SpanInfo: {"start":889,"length":6}
>x *= 2
>:=> (line 59, col 12) to (line 59, col 18)
--------------------------------
59 > x *= 2;
~~~~~~~~~~~~~~~~~~~~ => Pos: (877 to 896) SpanInfo: {"start":889,"length":6}
>x *= 2
>:=> (line 59, col 12) to (line 59, col 18)
--------------------------------
60 > x = 50;
~~~~~~~~~~~~~~~~~~~~ => Pos: (897 to 916) SpanInfo: {"start":909,"length":6}
>x = 50
>:=> (line 60, col 12) to (line 60, col 18)
--------------------------------
61 > break;
~~~~~~~~~~~~~~~~~~~ => Pos: (917 to 935) SpanInfo: {"start":929,"length":5}
>break
>:=> (line 61, col 12) to (line 61, col 17)
--------------------------------
62 >
~ => Pos: (936 to 936) SpanInfo: undefined
--------------------------------
63 > }
~~~~~~~~~~ => Pos: (937 to 946) SpanInfo: {"start":929,"length":5}
>break
>:=> (line 61, col 12) to (line 61, col 17)
--------------------------------
64 > }
~~~~~~ => Pos: (947 to 952) SpanInfo: {"start":889,"length":6}
>x *= 2
>:=> (line 59, col 12) to (line 59, col 18)
--------------------------------
65 > while (x < 10) {
~~~~~~~~~~~~~~~~~~~~~ => Pos: (953 to 973) SpanInfo: {"start":957,"length":14}
>while (x < 10)
>:=> (line 65, col 4) to (line 65, col 18)
--------------------------------
66 > x++;
~~~~~~~~~~~~~ => Pos: (974 to 986) SpanInfo: {"start":982,"length":3}
>x++
>:=> (line 66, col 8) to (line 66, col 11)
--------------------------------
67 > }
~~~~~~ => Pos: (987 to 992) SpanInfo: {"start":982,"length":3}
>x++
>:=> (line 66, col 8) to (line 66, col 11)
--------------------------------
68 > do {
~~~~~~~~~ => Pos: (993 to 1001) SpanInfo: {"start":1010,"length":3}
>x--
>:=> (line 69, col 8) to (line 69, col 11)
--------------------------------
69 > x--;
~~~~~~~~~~~~~ => Pos: (1002 to 1014) SpanInfo: {"start":1010,"length":3}
>x--
>:=> (line 69, col 8) to (line 69, col 11)
--------------------------------
70 > } while (x > 4)
~~~~~ => Pos: (1015 to 1019) SpanInfo: {"start":1010,"length":3}
>x--
>:=> (line 69, col 8) to (line 69, col 11)
70 > } while (x > 4)
~~~~~~~~~~~~~~~ => Pos: (1020 to 1034) SpanInfo: {"start":1021,"length":13}
>while (x > 4)
>:=> (line 70, col 6) to (line 70, col 19)
--------------------------------
71 > x = y;
~~~~~~~~~~~ => Pos: (1035 to 1045) SpanInfo: {"start":1039,"length":5}
>x = y
>:=> (line 71, col 4) to (line 71, col 9)
--------------------------------
72 > var z = (x == 1) ? x + 1 : x - 1;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1046 to 1083) SpanInfo: {"start":1050,"length":32}
>var z = (x == 1) ? x + 1 : x - 1
>:=> (line 72, col 4) to (line 72, col 36)
--------------------------------
73 > (x == 1) ? x + 1 : x - 1;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1084 to 1113) SpanInfo: {"start":1088,"length":24}
>(x == 1) ? x + 1 : x - 1
>:=> (line 73, col 4) to (line 73, col 28)
--------------------------------
74 > x === 1;
~~~~~~~~~~~~~ => Pos: (1114 to 1126) SpanInfo: {"start":1118,"length":7}
>x === 1
>:=> (line 74, col 4) to (line 74, col 11)
--------------------------------
75 > x = z = 40;
~~~~~~~~~~~~~~~~ => Pos: (1127 to 1142) SpanInfo: {"start":1131,"length":10}
>x = z = 40
>:=> (line 75, col 4) to (line 75, col 14)
--------------------------------
76 > eval("y");
~~~~~~~~~~~~~~~ => Pos: (1143 to 1157) SpanInfo: {"start":1147,"length":9}
>eval("y")
>:=> (line 76, col 4) to (line 76, col 13)
--------------------------------
77 > return;
~~~~~~~~~~~~ => Pos: (1158 to 1169) SpanInfo: {"start":1162,"length":6}
>return
>:=> (line 77, col 4) to (line 77, col 10)
--------------------------------
78 >}
~~ => Pos: (1170 to 1171) SpanInfo: {"start":1170,"length":1}
>}
>:=> (line 78, col 0) to (line 78, col 1)
--------------------------------
79 >var b = function () {
~~~~~~~ => Pos: (1172 to 1178) SpanInfo: {"start":1172,"length":54}
>var b = function () {
> var x = 10;
> x = x + 1;
>}
>:=> (line 79, col 0) to (line 82, col 1)
79 >var b = function () {
~~~~~~~~~~~~~~~ => Pos: (1179 to 1193) SpanInfo: {"start":1198,"length":10}
>var x = 10
>:=> (line 80, col 4) to (line 80, col 14)
--------------------------------
80 > var x = 10;
~~~~~~~~~~~~~~~~ => Pos: (1194 to 1209) SpanInfo: {"start":1198,"length":10}
>var x = 10
>:=> (line 80, col 4) to (line 80, col 14)
--------------------------------
81 > x = x + 1;
~~~~~~~~~~~~~~~ => Pos: (1210 to 1224) SpanInfo: {"start":1214,"length":9}
>x = x + 1
>:=> (line 81, col 4) to (line 81, col 13)
--------------------------------
82 >};
~~~ => Pos: (1225 to 1227) SpanInfo: {"start":1225,"length":1}
>}
>:=> (line 82, col 0) to (line 82, col 1)
--------------------------------
83 >f();
~~~~ => Pos: (1228 to 1231) SpanInfo: {"start":1228,"length":3}
>f()
>:=> (line 83, col 0) to (line 83, col 3)
@@ -162,6 +162,111 @@
>:=> (line 26, col 12) to (line 26, col 22)
--------------------------------
28 >}
~ => Pos: (347 to 347) SpanInfo: {"start":325,"length":10}
~~ => Pos: (347 to 348) SpanInfo: {"start":325,"length":10}
>x = x * 10
>:=> (line 26, col 12) to (line 26, col 22)
>:=> (line 26, col 12) to (line 26, col 22)
--------------------------------
29 >switch ((function foo() {
~~~~~~~~ => Pos: (349 to 356) SpanInfo: {"start":349,"length":50}
>switch ((function foo() {
> return x * 30;
>})())
>:=> (line 29, col 0) to (line 31, col 5)
29 >switch ((function foo() {
~ => Pos: (357 to 357) SpanInfo: {"start":357,"length":41}
>(function foo() {
> return x * 30;
>})()
>:=> (line 29, col 8) to (line 31, col 4)
29 >switch ((function foo() {
~~~~~~~~~~~~~~~~~ => Pos: (358 to 374) SpanInfo: {"start":379,"length":13}
>return x * 30
>:=> (line 30, col 4) to (line 30, col 17)
--------------------------------
30 > return x * 30;
~~~~~~~~~~~~~~~~~~~ => Pos: (375 to 393) SpanInfo: {"start":379,"length":13}
>return x * 30
>:=> (line 30, col 4) to (line 30, col 17)
--------------------------------
31 >})()) {
~ => Pos: (394 to 394) SpanInfo: {"start":394,"length":1}
>}
>:=> (line 31, col 0) to (line 31, col 1)
31 >})()) {
~~~ => Pos: (395 to 397) SpanInfo: {"start":357,"length":41}
>(function foo() {
> return x * 30;
>})()
>:=> (line 29, col 8) to (line 31, col 4)
31 >})()) {
~ => Pos: (398 to 398) SpanInfo: {"start":349,"length":50}
>switch ((function foo() {
> return x * 30;
>})())
>:=> (line 29, col 0) to (line 31, col 5)
31 >})()) {
~~~ => Pos: (399 to 401) SpanInfo: {"start":466,"length":3}
>x++
>:=> (line 35, col 8) to (line 35, col 11)
--------------------------------
32 > case (function bar() {
~~~~~~~~ => Pos: (402 to 409) SpanInfo: {"start":466,"length":3}
>x++
>:=> (line 35, col 8) to (line 35, col 11)
32 > case (function bar() {
~~ => Pos: (410 to 411) SpanInfo: {"start":411,"length":45}
>(function bar() {
> return 30;
> })()
>:=> (line 32, col 9) to (line 34, col 8)
32 > case (function bar() {
~~~~~~~~~~~~~~~~~ => Pos: (412 to 428) SpanInfo: {"start":437,"length":9}
>return 30
>:=> (line 33, col 8) to (line 33, col 17)
--------------------------------
33 > return 30;
~~~~~~~~~~~~~~~~~~~ => Pos: (429 to 447) SpanInfo: {"start":437,"length":9}
>return 30
>:=> (line 33, col 8) to (line 33, col 17)
--------------------------------
34 > })():
~~~~~ => Pos: (448 to 452) SpanInfo: {"start":452,"length":1}
>}
>:=> (line 34, col 4) to (line 34, col 5)
34 > })():
~~~ => Pos: (453 to 455) SpanInfo: {"start":411,"length":45}
>(function bar() {
> return 30;
> })()
>:=> (line 32, col 9) to (line 34, col 8)
34 > })():
~~ => Pos: (456 to 457) SpanInfo: {"start":466,"length":3}
>x++
>:=> (line 35, col 8) to (line 35, col 11)
--------------------------------
35 > x++;
~~~~~~~~~~~~~ => Pos: (458 to 470) SpanInfo: {"start":466,"length":3}
>x++
>:=> (line 35, col 8) to (line 35, col 11)
--------------------------------
36 >}
~ => Pos: (471 to 471) SpanInfo: {"start":466,"length":3}
>x++
>:=> (line 35, col 8) to (line 35, col 11)
@@ -77,9 +77,14 @@
--------------------------------
12 > throw new Error();
~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (113 to 135) SpanInfo: {"start":117,"length":17}
~~~~~~~~~ => Pos: (113 to 121) SpanInfo: {"start":117,"length":17}
>throw new Error()
>:=> (line 12, col 4) to (line 12, col 21)
12 > throw new Error();
~~~~~~~~~~~~~~ => Pos: (122 to 135) SpanInfo: {"start":123,"length":11}
>new Error()
>:=> (line 12, col 10) to (line 12, col 21)
--------------------------------
13 >}
@@ -130,6 +135,89 @@
>:=> (line 20, col 4) to (line 20, col 14)
--------------------------------
21 >}
~ => Pos: (193 to 193) SpanInfo: {"start":181,"length":10}
~~ => Pos: (193 to 194) SpanInfo: {"start":181,"length":10}
>x = x * 10
>:=> (line 20, col 4) to (line 20, col 14)
>:=> (line 20, col 4) to (line 20, col 14)
--------------------------------
22 >try {
~~~~~~ => Pos: (195 to 200) SpanInfo: {"start":205,"length":65}
>throw (function foo() {
> new Error(x.toString());
> })()
>:=> (line 23, col 4) to (line 25, col 8)
--------------------------------
23 > throw (function foo() {
~~~~~~~~~ => Pos: (201 to 209) SpanInfo: {"start":205,"length":65}
>throw (function foo() {
> new Error(x.toString());
> })()
>:=> (line 23, col 4) to (line 25, col 8)
23 > throw (function foo() {
~~ => Pos: (210 to 211) SpanInfo: {"start":211,"length":59}
>(function foo() {
> new Error(x.toString());
> })()
>:=> (line 23, col 10) to (line 25, col 8)
23 > throw (function foo() {
~~~~~~~~~~~~~~~~~ => Pos: (212 to 228) SpanInfo: {"start":237,"length":23}
>new Error(x.toString())
>:=> (line 24, col 8) to (line 24, col 31)
--------------------------------
24 > new Error(x.toString());
~~~~~~~~~~~~~~~~~~ => Pos: (229 to 246) SpanInfo: {"start":237,"length":23}
>new Error(x.toString())
>:=> (line 24, col 8) to (line 24, col 31)
24 > new Error(x.toString());
~~~~~~~~~~~~ => Pos: (247 to 258) SpanInfo: {"start":247,"length":12}
>x.toString()
>:=> (line 24, col 18) to (line 24, col 30)
24 > new Error(x.toString());
~~~ => Pos: (259 to 261) SpanInfo: {"start":237,"length":23}
>new Error(x.toString())
>:=> (line 24, col 8) to (line 24, col 31)
--------------------------------
25 > })();
~~~~~ => Pos: (262 to 266) SpanInfo: {"start":266,"length":1}
>}
>:=> (line 25, col 4) to (line 25, col 5)
25 > })();
~~~~~ => Pos: (267 to 271) SpanInfo: {"start":211,"length":59}
>(function foo() {
> new Error(x.toString());
> })()
>:=> (line 23, col 10) to (line 25, col 8)
--------------------------------
26 >}
~~ => Pos: (272 to 273) SpanInfo: {"start":205,"length":65}
>throw (function foo() {
> new Error(x.toString());
> })()
>:=> (line 23, col 4) to (line 25, col 8)
--------------------------------
27 >finally {
~~~~~~~~~~ => Pos: (274 to 283) SpanInfo: {"start":288,"length":3}
>x++
>:=> (line 28, col 4) to (line 28, col 7)
--------------------------------
28 > x++;
~~~~~~~~~ => Pos: (284 to 292) SpanInfo: {"start":288,"length":3}
>x++
>:=> (line 28, col 4) to (line 28, col 7)
--------------------------------
29 >}
~ => Pos: (293 to 293) SpanInfo: {"start":288,"length":3}
>x++
>:=> (line 28, col 4) to (line 28, col 7)
@@ -0,0 +1,81 @@
1 >class Greeter {
~~~~~~~~~~~~~~~~ => Pos: (0 to 15) SpanInfo: {"start":16,"length":1}
>}
>:=> (line 2, col 0) to (line 2, col 1)
--------------------------------
2 >}
~~ => Pos: (16 to 17) SpanInfo: {"start":16,"length":1}
>}
>:=> (line 2, col 0) to (line 2, col 1)
--------------------------------
3 >var a = <Greeter>new Greeter();
~~~~~~~ => Pos: (18 to 24) SpanInfo: {"start":18,"length":30}
>var a = <Greeter>new Greeter()
>:=> (line 3, col 0) to (line 3, col 30)
3 >var a = <Greeter>new Greeter();
~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (25 to 49) SpanInfo: {"start":35,"length":13}
>new Greeter()
>:=> (line 3, col 17) to (line 3, col 30)
--------------------------------
4 >a = (<Greeter> new Greeter());
~~~~~ => Pos: (50 to 54) SpanInfo: {"start":50,"length":29}
>a = (<Greeter> new Greeter())
>:=> (line 4, col 0) to (line 4, col 29)
4 >a = (<Greeter> new Greeter());
~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (55 to 77) SpanInfo: {"start":65,"length":13}
>new Greeter()
>:=> (line 4, col 15) to (line 4, col 28)
4 >a = (<Greeter> new Greeter());
~~~ => Pos: (78 to 80) SpanInfo: {"start":50,"length":29}
>a = (<Greeter> new Greeter())
>:=> (line 4, col 0) to (line 4, col 29)
--------------------------------
5 >a = <Greeter>(function foo() {
~~~ => Pos: (81 to 83) SpanInfo: {"start":81,"length":61}
>a = <Greeter>(function foo() {
> return new Greeter();
>})()
>:=> (line 5, col 0) to (line 7, col 4)
5 >a = <Greeter>(function foo() {
~~~~~~~~~~~ => Pos: (84 to 94) SpanInfo: {"start":94,"length":48}
>(function foo() {
> return new Greeter();
>})()
>:=> (line 5, col 13) to (line 7, col 4)
5 >a = <Greeter>(function foo() {
~~~~~~~~~~~~~~~~~ => Pos: (95 to 111) SpanInfo: {"start":116,"length":20}
>return new Greeter()
>:=> (line 6, col 4) to (line 6, col 24)
--------------------------------
6 > return new Greeter();
~~~~~~~~~~ => Pos: (112 to 121) SpanInfo: {"start":116,"length":20}
>return new Greeter()
>:=> (line 6, col 4) to (line 6, col 24)
6 > return new Greeter();
~~~~~~~~~~~~~~~~ => Pos: (122 to 137) SpanInfo: {"start":123,"length":13}
>new Greeter()
>:=> (line 6, col 11) to (line 6, col 24)
--------------------------------
7 >})();
~ => Pos: (138 to 138) SpanInfo: {"start":138,"length":1}
>}
>:=> (line 7, col 0) to (line 7, col 1)
7 >})();
~~~~ => Pos: (139 to 142) SpanInfo: {"start":94,"length":48}
>(function foo() {
> return new Greeter();
>})()
>:=> (line 5, col 13) to (line 7, col 4)
@@ -0,0 +1,74 @@
1 >var x = 10;
~~~~~~~~~~~~ => Pos: (0 to 11) SpanInfo: {"start":0,"length":10}
>var x = 10
>:=> (line 1, col 0) to (line 1, col 10)
--------------------------------
2 >var y = 20;
~~~~~~~~~~~~ => Pos: (12 to 23) SpanInfo: {"start":12,"length":10}
>var y = 20
>:=> (line 2, col 0) to (line 2, col 10)
--------------------------------
3 >x++;
~~~~~ => Pos: (24 to 28) SpanInfo: {"start":24,"length":3}
>x++
>:=> (line 3, col 0) to (line 3, col 3)
--------------------------------
4 >y--;
~~~~~ => Pos: (29 to 33) SpanInfo: {"start":29,"length":3}
>y--
>:=> (line 4, col 0) to (line 4, col 3)
--------------------------------
5 >typeof (function foo() {
~~~~~~ => Pos: (34 to 39) SpanInfo: {"start":34,"length":43}
>typeof (function foo() {
> return y;
>})()
>:=> (line 5, col 0) to (line 7, col 4)
5 >typeof (function foo() {
~~ => Pos: (40 to 41) SpanInfo: {"start":41,"length":36}
>(function foo() {
> return y;
>})()
>:=> (line 5, col 7) to (line 7, col 4)
5 >typeof (function foo() {
~~~~~~~~~~~~~~~~~ => Pos: (42 to 58) SpanInfo: {"start":63,"length":8}
>return y
>:=> (line 6, col 4) to (line 6, col 12)
--------------------------------
6 > return y;
~~~~~~~~~~~~~~ => Pos: (59 to 72) SpanInfo: {"start":63,"length":8}
>return y
>:=> (line 6, col 4) to (line 6, col 12)
--------------------------------
7 >})();
~ => Pos: (73 to 73) SpanInfo: {"start":73,"length":1}
>}
>:=> (line 7, col 0) to (line 7, col 1)
7 >})();
~~~~~ => Pos: (74 to 78) SpanInfo: {"start":41,"length":36}
>(function foo() {
> return y;
>})()
>:=> (line 5, col 7) to (line 7, col 4)
--------------------------------
8 >++x;
~~~~~ => Pos: (79 to 83) SpanInfo: {"start":79,"length":3}
>++x
>:=> (line 8, col 0) to (line 8, col 3)
--------------------------------
9 >++y;
~~~~ => Pos: (84 to 87) SpanInfo: {"start":84,"length":3}
>++y
>:=> (line 9, col 0) to (line 9, col 3)
@@ -65,6 +65,69 @@
>:=> (line 10, col 0) to (line 10, col 15)
--------------------------------
11 > a++;
~~~~~~~~ => Pos: (110 to 117) SpanInfo: {"start":114,"length":3}
~~~~~~~~~ => Pos: (110 to 118) SpanInfo: {"start":114,"length":3}
>a++
>:=> (line 11, col 4) to (line 11, col 7)
>:=> (line 11, col 4) to (line 11, col 7)
--------------------------------
12 >while ((function () {
~~~~~~~ => Pos: (119 to 125) SpanInfo: {"start":119,"length":52}
>while ((function () {
> return 30 * a;
>})() !== a)
>:=> (line 12, col 0) to (line 14, col 11)
12 >while ((function () {
~ => Pos: (126 to 126) SpanInfo: {"start":126,"length":38}
>(function () {
> return 30 * a;
>})()
>:=> (line 12, col 7) to (line 14, col 4)
12 >while ((function () {
~~~~~~~~~~~~~~ => Pos: (127 to 140) SpanInfo: {"start":145,"length":13}
>return 30 * a
>:=> (line 13, col 4) to (line 13, col 17)
--------------------------------
13 > return 30 * a;
~~~~~~~~~~~~~~~~~~~ => Pos: (141 to 159) SpanInfo: {"start":145,"length":13}
>return 30 * a
>:=> (line 13, col 4) to (line 13, col 17)
--------------------------------
14 >})() !== a) {
~ => Pos: (160 to 160) SpanInfo: {"start":160,"length":1}
>}
>:=> (line 14, col 0) to (line 14, col 1)
14 >})() !== a) {
~~~ => Pos: (161 to 163) SpanInfo: {"start":126,"length":38}
>(function () {
> return 30 * a;
>})()
>:=> (line 12, col 7) to (line 14, col 4)
14 >})() !== a) {
~~~~~~~ => Pos: (164 to 170) SpanInfo: {"start":119,"length":52}
>while ((function () {
> return 30 * a;
>})() !== a)
>:=> (line 12, col 0) to (line 14, col 11)
14 >})() !== a) {
~~~ => Pos: (171 to 173) SpanInfo: {"start":178,"length":3}
>a--
>:=> (line 15, col 4) to (line 15, col 7)
--------------------------------
15 > a--;
~~~~~~~~~ => Pos: (174 to 182) SpanInfo: {"start":178,"length":3}
>a--
>:=> (line 15, col 4) to (line 15, col 7)
--------------------------------
16 >}
~ => Pos: (183 to 183) SpanInfo: {"start":178,"length":3}
>a--
>:=> (line 15, col 4) to (line 15, col 7)
@@ -0,0 +1,21 @@
1 >var obj: string;
~~~~~~~~~~~~~~~~~ => Pos: (0 to 16) SpanInfo: undefined
--------------------------------
2 >with (obj) {
~~~~~~~~~~~~~ => Pos: (17 to 29) SpanInfo: {"start":34,"length":6}
>x = 10
>:=> (line 3, col 4) to (line 3, col 10)
--------------------------------
3 > x = 10;
~~~~~~~~~~~~ => Pos: (30 to 41) SpanInfo: {"start":34,"length":6}
>x = 10
>:=> (line 3, col 4) to (line 3, col 10)
--------------------------------
4 >}
~ => Pos: (42 to 42) SpanInfo: {"start":34,"length":6}
>x = 10
>:=> (line 3, col 4) to (line 3, col 10)
@@ -0,0 +1,23 @@
/// <reference path='fourslash.ts' />
// @BaselineFile: bpSpan_arrayLiteralExpressions.baseline
// @Filename: bpSpan_arrayLiteralExpressions.ts
////var a = [10, 20, 30];
////function foo(a: number) {
//// return a;
////}
////a = [foo(30), (function () {
//// return 30;
////})()];
////function bar() {
//// return a;
////}
////var x = bar()[0];
////x = (function () {
//// return a;
////})()[x];
////a[(function () {
//// return x;
////})()];
verify.baselineCurrentFileBreakpointLocations();
@@ -0,0 +1,17 @@
/// <reference path='fourslash.ts' />
// @BaselineFile: bpSpan_binaryExpressions.baseline
// @Filename: bpSpan_binaryExpressions.ts
////var x = 10;
////var y = 20;
////x += 30;
////x *= 0;
////x = x + 1;
////x = (function foo() {
//// return y;
////})() + y;
////x = y + 30 + (function foo() {
//// return y;
////})() * 40;
verify.baselineCurrentFileBreakpointLocations();
@@ -0,0 +1,16 @@
/// <reference path='fourslash.ts' />
// @BaselineFile: bpSpan_conditionalExpressions.baseline
// @Filename: bpSpan_conditionalExpressions.ts
////var x = 10;
////var y = x ? x + 10 : 30;
////var z = (function foo() {
//// return x;
////})() ? y : function bar() {
//// return x;
////} ();
////x = y ? (function () {
//// return z;
////})() : 10;
verify.baselineCurrentFileBreakpointLocations();
@@ -14,4 +14,9 @@
//// i++;
////}
////while (i < 30);
////do {
//// i--;
////} while ((function () {
//// return 30 * i;
//// })() !== i);
verify.baselineCurrentFileBreakpointLocations();
@@ -16,5 +16,11 @@
////{
//// WScript.Echo(x);
////}
////var z = 10;
////for (x in function foo() {
//// return new String();
////}) {
//// z++;
////}
verify.baselineCurrentFileBreakpointLocations();
@@ -10,5 +10,17 @@
////greet("Hello");
////var incrGreetings = () => greetings++;
////var greetNewMsg = msg => greet(msg);
debugger;
////greetNewMsg = function (msg: string) {
//// return greet(msg);
////};
////function bar(a = function foo() {
//// return greetings;
////}) {
//// if (!a()) {
//// return a;
//// }
//// return function bar() {
//// return -greetings;
//// };
////}
verify.baselineCurrentFileBreakpointLocations();
@@ -19,4 +19,9 @@
////} else {
//// i--;
////}
////if (function foo() {
//// return 30;
////} ()) {
//// i++;
////}
verify.baselineCurrentFileBreakpointLocations();
@@ -0,0 +1,33 @@
/// <reference path='fourslash.ts' />
// @BaselineFile: bpSpan_objectLiteralExpressions.baseline
// @Filename: bpSpan_objectLiteralExpressions.ts
////var x = {
//// a: 10,
//// b: () => 10,
//// someMethod() {
//// return "Hello";
//// },
//// get y() {
//// return 30;
//// },
//// set z(x: number) {
//// var bar = x;
//// }
////};
////var a = ({
//// a: 10,
//// b: () => 10,
//// someMethod() {
//// return "Hello";
//// },
//// get y() {
//// return 30;
//// },
//// set z(x: number) {
//// var bar = x;
//// }
////}).someMethod;
////a();
verify.baselineCurrentFileBreakpointLocations();
@@ -0,0 +1,35 @@
/// <reference path='fourslash.ts' />
// @BaselineFile: bpSpan_parenCallOrNewExpressions.baseline
// @Filename: bpSpan_parenCallOrNewExpressions.ts
////function foo(a: number) {
//// return a;
////}
////foo((function bar() {
//// return foo(40);
////})());
////var y = foo((function () {
//// return foo(40);
////})());;
////class greeter {
//// constructor(a: number) {
//// }
////}
////foo(30);
////foo(40 + y);
////y = foo(30);
////y = foo(500 + y);
////new greeter((function bar() {
//// return foo(40);
////})());
////var anotherGreeter = new greeter((function bar() {
//// return foo(40);
////})());
////anotherGreeter = new greeter(30);
////anotherGreeter = new greeter(40 + y);
////new greeter(30);
////new greeter(40 + y);
////function foo2(x: number, y: string) {
////}
////foo2(foo(30), foo(40).toString());
verify.baselineCurrentFileBreakpointLocations();
@@ -31,4 +31,12 @@
//// x = x * 10;
//// }
////}
////switch ((function foo() {
//// return x * 30;
////})()) {
//// case (function bar() {
//// return 30;
//// })():
//// x++;
////}
verify.baselineCurrentFileBreakpointLocations();
@@ -24,5 +24,13 @@
////{
//// x = x * 10;
////}
////try {
//// throw (function foo() {
//// new Error(x.toString());
//// })();
////}
////finally {
//// x++;
////}
verify.baselineCurrentFileBreakpointLocations();
@@ -0,0 +1,13 @@
/// <reference path='fourslash.ts' />
// @BaselineFile: bpSpan_typeAssertionExpressions.baseline
// @Filename: bpSpan_typeAssertionExpressions.ts
////class Greeter {
////}
////var a = <Greeter>new Greeter();
////a = (<Greeter> new Greeter());
////a = <Greeter>(function foo() {
//// return new Greeter();
////})();
verify.baselineCurrentFileBreakpointLocations();
@@ -0,0 +1,15 @@
/// <reference path='fourslash.ts' />
// @BaselineFile: bpSpan_unaryExpressions.baseline
// @Filename: bpSpan_unaryExpressions.ts
////var x = 10;
////var y = 20;
////x++;
////y--;
////typeof (function foo() {
//// return y;
////})();
////++x;
////++y;
verify.baselineCurrentFileBreakpointLocations();
@@ -13,4 +13,10 @@
////while (a == 10) a++;
////while (a == 10)
//// a++;
////while ((function () {
//// return 30 * a;
////})() !== a) {
//// a--;
////}
verify.baselineCurrentFileBreakpointLocations();
@@ -0,0 +1,10 @@
/// <reference path='fourslash.ts' />
// @BaselineFile: bpSpan_with.baseline
// @Filename: bpSpan_with.ts
////var obj: string;
////with (obj) {
//// x = 10;
////}
verify.baselineCurrentFileBreakpointLocations();