TypeScript/tests/baselines/reference/parserRealSource14.errors.txt
2014-07-12 17:30:19 -07:00

896 lines
48 KiB
Plaintext

==== tests/cases/conformance/parser/ecmascript5/parserRealSource14.ts (160 errors) ====
// Copyright (c) Microsoft. All rights reserved. Licensed under the Apache License, Version 2.0.
// See LICENSE.txt in the project root for complete license information.
///<reference path='typescript.ts' />
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! File 'typescript.ts' not found.
module TypeScript {
export function lastOf(items: any[]): any {
return (items === null || items.length === 0) ? null : items[items.length - 1];
}
export function max(a: number, b: number): number {
return a >= b ? a : b;
}
export function min(a: number, b: number): number {
return a <= b ? a : b;
}
//
// Helper class representing a path from a root ast node to a (grand)child ast node.
// This is helpful as our tree don't have parents.
//
export class AstPath {
public asts: TypeScript.AST[] = [];
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
public top: number = -1;
static reverseIndexOf(items: any[], index: number): any {
return (items === null || items.length <= index) ? null : items[items.length - index - 1];
}
public clone(): AstPath {
var clone = new AstPath();
clone.asts = this.asts.map((value) => { return value; });
clone.top = this.top;
return clone;
}
public pop(): TypeScript.AST {
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
var head = this.ast();
this.up();
while (this.asts.length > this.count()) {
this.asts.pop();
}
return head;
}
public push(ast: TypeScript.AST) {
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
while (this.asts.length > this.count()) {
this.asts.pop();
}
this.top = this.asts.length;
this.asts.push(ast);
}
public up() {
if (this.top <= -1)
throw new Error("Invalid call to 'up'");
this.top--;
}
public down() {
if (this.top == this.ast.length - 1)
throw new Error("Invalid call to 'down'");
this.top++;
}
public nodeType(): TypeScript.NodeType {
~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'NodeType'.
if (this.ast() == null)
return TypeScript.NodeType.None;
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
return this.ast().nodeType;
}
public ast() {
return <TypeScript.AST>AstPath.reverseIndexOf(this.asts, this.asts.length - (this.top + 1));
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
}
public parent() {
return <TypeScript.AST>AstPath.reverseIndexOf(this.asts, this.asts.length - this.top);
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
}
public count() {
return this.top + 1;
}
public get(index: number): TypeScript.AST {
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
return this.asts[index];
}
public isNameOfClass(): boolean {
if (this.ast() === null || this.parent() === null)
return false;
return (this.ast().nodeType === TypeScript.NodeType.Name) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(this.parent().nodeType === TypeScript.NodeType.ClassDeclaration) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
((<TypeScript.InterfaceDeclaration>this.parent()).name === this.ast());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'InterfaceDeclaration'.
}
public isNameOfInterface(): boolean {
if (this.ast() === null || this.parent() === null)
return false;
return (this.ast().nodeType === TypeScript.NodeType.Name) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(this.parent().nodeType === TypeScript.NodeType.InterfaceDeclaration) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
((<TypeScript.InterfaceDeclaration>this.parent()).name === this.ast());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'InterfaceDeclaration'.
}
public isNameOfArgument(): boolean {
if (this.ast() === null || this.parent() === null)
return false;
return (this.ast().nodeType === TypeScript.NodeType.Name) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(this.parent().nodeType === TypeScript.NodeType.ArgDecl) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
((<TypeScript.ArgDecl>this.parent()).id === this.ast());
~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ArgDecl'.
}
public isNameOfVariable(): boolean {
if (this.ast() === null || this.parent() === null)
return false;
return (this.ast().nodeType === TypeScript.NodeType.Name) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(this.parent().nodeType === TypeScript.NodeType.VarDecl) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
((<TypeScript.VarDecl>this.parent()).id === this.ast());
~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'VarDecl'.
}
public isNameOfModule(): boolean {
if (this.ast() === null || this.parent() === null)
return false;
return (this.ast().nodeType === TypeScript.NodeType.Name) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(this.parent().nodeType === TypeScript.NodeType.ModuleDeclaration) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
((<TypeScript.ModuleDeclaration>this.parent()).name === this.ast());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ModuleDeclaration'.
}
public isNameOfFunction(): boolean {
if (this.ast() === null || this.parent() === null)
return false;
return (this.ast().nodeType === TypeScript.NodeType.Name) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(this.parent().nodeType === TypeScript.NodeType.FuncDecl) &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
((<TypeScript.FuncDecl>this.parent()).name === this.ast());
~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'FuncDecl'.
}
public isChildOfScript(): boolean {
var ast = lastOf(this.asts);
return this.count() >= 3 &&
this.asts[this.top] === ast &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 2].nodeType === TypeScript.NodeType.Script;
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
}
public isChildOfModule(): boolean {
var ast = lastOf(this.asts);
return this.count() >= 3 &&
this.asts[this.top] === ast &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 2].nodeType === TypeScript.NodeType.ModuleDeclaration;
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
}
public isChildOfClass(): boolean {
var ast = lastOf(this.asts);
return this.count() >= 3 &&
this.asts[this.top] === ast &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 2].nodeType === TypeScript.NodeType.ClassDeclaration;
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
}
public isArgumentOfClassConstructor(): boolean {
var ast = lastOf(this.asts);
return this.count() >= 5 &&
this.asts[this.top] === ast &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 2].nodeType === TypeScript.NodeType.FuncDecl &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 3].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 4].nodeType === TypeScript.NodeType.ClassDeclaration &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
((<TypeScript.FuncDecl>this.asts[this.top - 2]).isConstructor) &&
~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'FuncDecl'.
((<TypeScript.FuncDecl>this.asts[this.top - 2]).arguments === this.asts[this.top - 1]) &&
~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'FuncDecl'.
((<TypeScript.ClassDeclaration>this.asts[this.top - 4]).constructorDecl === this.asts[this.top - 2]);
~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ClassDeclaration'.
}
public isChildOfInterface(): boolean {
var ast = lastOf(this.asts);
return this.count() >= 3 &&
this.asts[this.top] === ast &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 2].nodeType === TypeScript.NodeType.InterfaceDeclaration;
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
}
public isTopLevelImplicitModule() {
return this.count() >= 1 &&
this.asts[this.top].nodeType === TypeScript.NodeType.ModuleDeclaration &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
TypeScript.hasFlag((<TypeScript.ModuleDeclaration>this.asts[this.top]).modFlags, TypeScript.ModuleFlags.IsWholeFile);
~~~~~~~
!!! Property 'hasFlag' does not exist on type 'typeof TypeScript'.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ModuleDeclaration'.
~~~~~~~~~~~
!!! Property 'ModuleFlags' does not exist on type 'typeof TypeScript'.
}
public isBodyOfTopLevelImplicitModule() {
return this.count() >= 2 &&
this.asts[this.top - 0].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 1].nodeType === TypeScript.NodeType.ModuleDeclaration &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.ModuleDeclaration>this.asts[this.top - 1]).members == this.asts[this.top - 0] &&
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ModuleDeclaration'.
TypeScript.hasFlag((<TypeScript.ModuleDeclaration>this.asts[this.top - 1]).modFlags, TypeScript.ModuleFlags.IsWholeFile);
~~~~~~~
!!! Property 'hasFlag' does not exist on type 'typeof TypeScript'.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ModuleDeclaration'.
~~~~~~~~~~~
!!! Property 'ModuleFlags' does not exist on type 'typeof TypeScript'.
}
public isBodyOfScript(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Script &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.Script>this.asts[this.top - 1]).bod == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'Script'.
}
public isBodyOfSwitch(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Switch &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.SwitchStatement>this.asts[this.top - 1]).caseList == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'SwitchStatement'.
}
public isBodyOfModule(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.ModuleDeclaration &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.ModuleDeclaration>this.asts[this.top - 1]).members == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ModuleDeclaration'.
}
public isBodyOfClass(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.ClassDeclaration &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.ClassDeclaration>this.asts[this.top - 1]).members == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ClassDeclaration'.
}
public isBodyOfFunction(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.FuncDecl &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.FuncDecl>this.asts[this.top - 1]).bod == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'FuncDecl'.
}
public isBodyOfInterface(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.InterfaceDeclaration &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.InterfaceDeclaration>this.asts[this.top - 1]).members == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'InterfaceDeclaration'.
}
public isBodyOfBlock(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Block &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.Block>this.asts[this.top - 1]).statements == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'Block'.
}
public isBodyOfFor(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.For &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.ForStatement>this.asts[this.top - 1]).body == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ForStatement'.
}
public isBodyOfCase(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Case &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.CaseStatement>this.asts[this.top - 1]).body == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'CaseStatement'.
}
public isBodyOfTry(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Try &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.Try>this.asts[this.top - 1]).body == this.asts[this.top - 0];
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'Try'.
}
public isBodyOfCatch(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Catch &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.Catch>this.asts[this.top - 1]).body == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'Catch'.
}
public isBodyOfDoWhile(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.DoWhile &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.DoWhileStatement>this.asts[this.top - 1]).body == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'DoWhileStatement'.
}
public isBodyOfWhile(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.While &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.WhileStatement>this.asts[this.top - 1]).body == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'WhileStatement'.
}
public isBodyOfForIn(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.ForIn &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.ForInStatement>this.asts[this.top - 1]).body == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ForInStatement'.
}
public isBodyOfWith(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.With &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.WithStatement>this.asts[this.top - 1]).body == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'WithStatement'.
}
public isBodyOfFinally(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Finally &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.Finally>this.asts[this.top - 1]).body == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'Finally'.
}
public isCaseOfSwitch(): boolean {
return this.count() >= 3 &&
this.asts[this.top - 2].nodeType === TypeScript.NodeType.Switch &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 1].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.SwitchStatement>this.asts[this.top - 2]).caseList == this.asts[this.top - 1];
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'SwitchStatement'.
}
public isDefaultCaseOfSwitch(): boolean {
return this.count() >= 3 &&
this.asts[this.top - 2].nodeType === TypeScript.NodeType.Switch &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 1].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.SwitchStatement>this.asts[this.top - 2]).caseList == this.asts[this.top - 1] &&
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'SwitchStatement'.
(<TypeScript.SwitchStatement>this.asts[this.top - 2]).defaultCase == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'SwitchStatement'.
}
public isListOfObjectLit(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.ObjectLit &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 0].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.UnaryExpression>this.asts[this.top - 1]).operand == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'UnaryExpression'.
}
public isBodyOfObjectLit(): boolean {
return this.isListOfObjectLit();
}
public isEmptyListOfObjectLit(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.ObjectLit &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 0].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.UnaryExpression>this.asts[this.top - 1]).operand == this.asts[this.top - 0] &&
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'UnaryExpression'.
(<TypeScript.ASTList>this.asts[this.top - 0]).members.length == 0;
~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ASTList'.
}
public isMemberOfObjectLit(): boolean {
return this.count() >= 3 &&
this.asts[this.top - 2].nodeType === TypeScript.NodeType.ObjectLit &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 1].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 0].nodeType === TypeScript.NodeType.Member &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.UnaryExpression>this.asts[this.top - 2]).operand == this.asts[this.top - 1];
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'UnaryExpression'.
}
public isNameOfMemberOfObjectLit(): boolean {
return this.count() >= 4 &&
this.asts[this.top - 3].nodeType === TypeScript.NodeType.ObjectLit &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 2].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Member &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 0].nodeType === TypeScript.NodeType.Name &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.UnaryExpression>this.asts[this.top - 3]).operand == this.asts[this.top - 2];
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'UnaryExpression'.
}
public isListOfArrayLit(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.ArrayLit &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 0].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.UnaryExpression>this.asts[this.top - 1]).operand == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'UnaryExpression'.
}
public isTargetOfMember(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Member &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.BinaryExpression>this.asts[this.top - 1]).operand1 === this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'BinaryExpression'.
}
public isMemberOfMember(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Member &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.BinaryExpression>this.asts[this.top - 1]).operand2 === this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'BinaryExpression'.
}
public isItemOfList(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.List;
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
//(<Tools.ASTList>this.asts[this.top - 1]).operand2 === this.asts[this.top - 0];
}
public isThenOfIf(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.If &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.IfStatement>this.asts[this.top - 1]).thenBod == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'IfStatement'.
}
public isElseOfIf(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.If &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.IfStatement>this.asts[this.top - 1]).elseBod == this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'IfStatement'.
}
public isBodyOfDefaultCase(): boolean {
return this.isBodyOfCase();
}
public isSingleStatementList(): boolean {
return this.count() >= 1 &&
this.asts[this.top].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.ASTList>this.asts[this.top]).members.length === 1;
~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ASTList'.
}
public isArgumentListOfFunction(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 0].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 1].nodeType === TypeScript.NodeType.FuncDecl &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.FuncDecl>this.asts[this.top - 1]).arguments === this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'FuncDecl'.
}
public isArgumentOfFunction(): boolean {
return this.count() >= 3 &&
this.asts[this.top - 1].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 2].nodeType === TypeScript.NodeType.FuncDecl &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.FuncDecl>this.asts[this.top - 2]).arguments === this.asts[this.top - 1];
~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'FuncDecl'.
}
public isArgumentListOfCall(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 0].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 1].nodeType === TypeScript.NodeType.Call &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.CallExpression>this.asts[this.top - 1]).arguments === this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'CallExpression'.
}
public isArgumentListOfNew(): boolean {
return this.count() >= 2 &&
this.asts[this.top - 0].nodeType === TypeScript.NodeType.List &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
this.asts[this.top - 1].nodeType === TypeScript.NodeType.New &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.CallExpression>this.asts[this.top - 1]).arguments === this.asts[this.top - 0];
~~~~~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'CallExpression'.
}
public isSynthesizedBlock(): boolean {
return this.count() >= 1 &&
this.asts[this.top - 0].nodeType === TypeScript.NodeType.Block &&
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
(<TypeScript.Block>this.asts[this.top - 0]).isStatementBlock === false;
~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'Block'.
}
}
export function isValidAstNode(ast: TypeScript.ASTSpan): boolean {
~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'ASTSpan'.
if (ast === null)
return false;
if (ast.minChar === -1 || ast.limChar === -1)
return false;
return true;
}
export class AstPathContext {
public path = new TypeScript.AstPath();
}
export enum GetAstPathOptions {
Default = 0,
EdgeInclusive = 1,
//We need this options dealing with an AST coming from an incomplete AST. For example:
// class foo { // r
// If we ask for the AST at the position after the "r" character, we won't see we are
// inside a comment, because the "class" AST node has a limChar corresponding to the position of
// the "{" character, meaning we don't traverse the tree down to the stmt list of the class, meaning
// we don't find the "precomment" attached to the errorneous empty stmt.
//TODO: It would be nice to be able to get rid of this.
DontPruneSearchBasedOnPosition = 1 << 1,
}
///
/// Return the stack of AST nodes containing "position"
///
export function getAstPathToPosition(script: TypeScript.AST, pos: number, options = GetAstPathOptions.Default): TypeScript.AstPath {
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
var lookInComments = (comments: TypeScript.Comment[]) => {
~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'Comment'.
if (comments && comments.length > 0) {
for (var i = 0; i < comments.length; i++) {
var minChar = comments[i].minChar;
var limChar = comments[i].limChar;
if (!comments[i].isBlockComment) {
limChar++; // For single line comments, include 1 more character (for the newline)
}
if (pos >= minChar && pos < limChar) {
ctx.path.push(comments[i]);
}
}
}
}
var pre = function (cur: TypeScript.AST, parent: TypeScript.AST, walker: IAstWalker) {
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
~~~~~~~~~~
!!! Cannot find name 'IAstWalker'.
if (isValidAstNode(cur)) {
// Add "cur" to the stack if it contains our position
// For "identifier" nodes, we need a special case: A position equal to "limChar" is
// valid, since the position corresponds to a caret position (in between characters)
// For example:
// bar
// 0123
// If "position == 3", the caret is at the "right" of the "r" character, which should be considered valid
var inclusive =
hasFlag(options, GetAstPathOptions.EdgeInclusive) ||
~~~~~~~
!!! Cannot find name 'hasFlag'.
cur.nodeType === TypeScript.NodeType.Name ||
~~~~~~~~
!!! Property 'NodeType' does not exist on type 'typeof TypeScript'.
pos === script.limChar; // Special "EOF" case
var minChar = cur.minChar;
var limChar = cur.limChar + (inclusive ? 1 : 0)
if (pos >= minChar && pos < limChar) {
// TODO: Since AST is sometimes not correct wrt to position, only add "cur" if it's better
// than top of the stack.
var previous = ctx.path.ast();
if (previous == null || (cur.minChar >= previous.minChar && cur.limChar <= previous.limChar)) {
ctx.path.push(cur);
}
else {
//logger.log("TODO: Ignoring node because minChar, limChar not better than previous node in stack");
}
}
// The AST walker skips comments, but we might be in one, so check the pre/post comments for this node manually
if (pos < limChar) {
lookInComments(cur.preComments);
}
if (pos >= minChar) {
lookInComments(cur.postComments);
}
if (!hasFlag(options, GetAstPathOptions.DontPruneSearchBasedOnPosition)) {
~~~~~~~
!!! Cannot find name 'hasFlag'.
// Don't go further down the tree if pos is outside of [minChar, limChar]
walker.options.goChildren = (minChar <= pos && pos <= limChar);
}
}
return cur;
}
var ctx = new AstPathContext();
TypeScript.getAstWalkerFactory().walk(script, pre, null, null, ctx);
~~~~~~~~~~~~~~~~~~~
!!! Property 'getAstWalkerFactory' does not exist on type 'typeof TypeScript'.
return ctx.path;
}
//
// Find a source text offset that is safe for lexing tokens at the given position.
// This is used when "position" might be inside a comment or string, etc.
//
export function getTokenizationOffset(script: TypeScript.Script, position: number): number {
~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'Script'.
var bestOffset = 0;
var pre = (cur: TypeScript.AST, parent: TypeScript.AST, walker: TypeScript.IAstWalker): TypeScript.AST => {
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'IAstWalker'.
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
if (TypeScript.isValidAstNode(cur)) {
// Did we find a closer offset?
if (cur.minChar <= position) {
bestOffset = max(bestOffset, cur.minChar);
}
// Stop the walk if this node is not related to "minChar"
if (cur.minChar > position || cur.limChar < bestOffset) {
walker.options.goChildren = false;
}
}
return cur;
}
TypeScript.getAstWalkerFactory().walk(script, pre);
~~~~~~~~~~~~~~~~~~~
!!! Property 'getAstWalkerFactory' does not exist on type 'typeof TypeScript'.
return bestOffset;
}
///
/// Simple function to Walk an AST using a simple callback function.
///
export function walkAST(ast: TypeScript.AST, callback: (path: AstPath, walker: TypeScript.IAstWalker) => void ): void {
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'IAstWalker'.
var pre = function (cur: TypeScript.AST, parent: TypeScript.AST, walker: TypeScript.IAstWalker) {
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'IAstWalker'.
var path: TypeScript.AstPath = walker.state;
path.push(cur);
callback(path, walker);
return cur;
}
var post = function (cur: TypeScript.AST, parent: TypeScript.AST, walker: TypeScript.IAstWalker) {
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'AST'.
~~~~~~~~~~~~~~~~~~~~~
!!! Module 'TypeScript' has no exported member 'IAstWalker'.
var path: TypeScript.AstPath = walker.state;
path.pop();
return cur;
}
var path = new AstPath();
TypeScript.getAstWalkerFactory().walk(ast, pre, post, null, path);
~~~~~~~~~~~~~~~~~~~
!!! Property 'getAstWalkerFactory' does not exist on type 'typeof TypeScript'.
}
}