diff --git a/src/compiler/tsc.ts b/src/compiler/tsc.ts
index 3ce18f929e8..2a148407631 100644
--- a/src/compiler/tsc.ts
+++ b/src/compiler/tsc.ts
@@ -409,7 +409,7 @@ module ts {
// Build up the list of examples.
var padding = makePadding(marginLength);
output += getDiagnosticText(Diagnostics.Examples_Colon_0, makePadding(marginLength - examplesLength) + "tsc hello.ts") + sys.newLine;
- output += padding + "tsc --out foo.js foo.ts" + sys.newLine;
+ output += padding + "tsc --out file.js file.ts" + sys.newLine;
output += padding + "tsc @args.txt" + sys.newLine;
output += sys.newLine;
diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts
index 0dfcb4ac513..cd553345d7c 100644
--- a/src/harness/fourslash.ts
+++ b/src/harness/fourslash.ts
@@ -1633,7 +1633,7 @@ module FourSlash {
public verifyTodoComments(descriptors: string[], spans: TextSpan[]) {
var actual = this.languageService.getTodoComments(this.activeFile.fileName,
- descriptors.map(d => new ts.TodoCommentDescriptor(d, 0)));
+ descriptors.map(d => { return { text: d, priority: 0 }; }));
if (actual.length !== spans.length) {
throw new Error('verifyTodoComments failed - expected total spans to be ' + spans.length + ', but was ' + actual.length);
diff --git a/src/services/breakpoints.ts b/src/services/breakpoints.ts
index 749eef5e8c6..923458c144d 100644
--- a/src/services/breakpoints.ts
+++ b/src/services/breakpoints.ts
@@ -1,8 +1,6 @@
// 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.
-///
-
module TypeScript.Services.Breakpoints {
function createBreakpointSpanInfo(parentElement: TypeScript.ISyntaxElement, ...childElements: TypeScript.ISyntaxElement[]): TextSpan {
if (!parentElement) {
diff --git a/src/services/formatting/formattingManager.ts b/src/services/formatting/formattingManager.ts
index 359f19c84ed..727c97cce30 100644
--- a/src/services/formatting/formattingManager.ts
+++ b/src/services/formatting/formattingManager.ts
@@ -112,9 +112,11 @@ module TypeScript.Services.Formatting {
//
// TODO: Change the ILanguageService interface to return TextEditInfo (with start, and length) instead of TextEdit (with minChar and limChar)
- formattingEdits.forEach((item) => {
- var edit = new ts.TextChange(new TextSpan(item.position, item.length), item.replaceWith);
- result.push(edit);
+ formattingEdits.forEach(item => {
+ result.push({
+ span: new TextSpan(item.position, item.length),
+ newText: item.replaceWith
+ });
});
return result;
diff --git a/src/services/getScriptLexicalStructureWalker.ts b/src/services/getScriptLexicalStructureWalker.ts
index bfce8e0067c..1de84435cbf 100644
--- a/src/services/getScriptLexicalStructureWalker.ts
+++ b/src/services/getScriptLexicalStructureWalker.ts
@@ -1,4 +1,3 @@
-///
module TypeScript.Services {
export class NavigationBarItemGetter {
@@ -152,6 +151,19 @@ module TypeScript.Services {
}
}
+ private getNavigationBarItem(text: string, kind: string, kindModifiers: string, spans: TypeScript.TextSpan[], childItems?: ts.NavigationBarItem[], indent: number = 0): ts.NavigationBarItem {
+ return {
+ text: text,
+ kind: kind,
+ kindModifiers: kindModifiers,
+ spans: spans,
+ childItems: childItems,
+ indent: indent,
+ bolded: false,
+ grayed: false
+ };
+ }
+
private createChildItem(node: ISyntaxNode): ts.NavigationBarItem {
switch (node.kind()) {
case SyntaxKind.Parameter:
@@ -159,62 +171,62 @@ module TypeScript.Services {
if (parameter.modifiers.length === 0) {
return null;
}
- return new ts.NavigationBarItem(parameter.identifier.text(), ts.ScriptElementKind.memberVariableElement, this.getKindModifiers(parameter.modifiers), [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem(parameter.identifier.text(), ts.ScriptElementKind.memberVariableElement, this.getKindModifiers(parameter.modifiers), [TextSpan.fromBounds(start(node), end(node))]);
case SyntaxKind.MemberFunctionDeclaration:
var memberFunction = node;
- return new ts.NavigationBarItem(memberFunction.propertyName.text(), ts.ScriptElementKind.memberFunctionElement, this.getKindModifiers(memberFunction.modifiers), [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem(memberFunction.propertyName.text(), ts.ScriptElementKind.memberFunctionElement, this.getKindModifiers(memberFunction.modifiers), [TextSpan.fromBounds(start(node), end(node))]);
case SyntaxKind.GetAccessor:
var getAccessor = node;
- return new ts.NavigationBarItem(getAccessor.propertyName.text(), ts.ScriptElementKind.memberGetAccessorElement, this.getKindModifiers(getAccessor.modifiers), [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem(getAccessor.propertyName.text(), ts.ScriptElementKind.memberGetAccessorElement, this.getKindModifiers(getAccessor.modifiers), [TextSpan.fromBounds(start(node), end(node))]);
case SyntaxKind.SetAccessor:
var setAccessor = node;
- return new ts.NavigationBarItem(setAccessor.propertyName.text(), ts.ScriptElementKind.memberSetAccessorElement, this.getKindModifiers(setAccessor.modifiers), [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem(setAccessor.propertyName.text(), ts.ScriptElementKind.memberSetAccessorElement, this.getKindModifiers(setAccessor.modifiers), [TextSpan.fromBounds(start(node), end(node))]);
case SyntaxKind.IndexSignature:
var indexSignature = node;
- return new ts.NavigationBarItem("[]", ts.ScriptElementKind.indexSignatureElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem("[]", ts.ScriptElementKind.indexSignatureElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
case SyntaxKind.EnumElement:
var enumElement = node;
- return new ts.NavigationBarItem(enumElement.propertyName.text(), ts.ScriptElementKind.memberVariableElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem(enumElement.propertyName.text(), ts.ScriptElementKind.memberVariableElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
case SyntaxKind.CallSignature:
var callSignature = node;
- return new ts.NavigationBarItem("()", ts.ScriptElementKind.callSignatureElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem("()", ts.ScriptElementKind.callSignatureElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
case SyntaxKind.ConstructSignature:
var constructSignature = node;
- return new ts.NavigationBarItem("new()", ts.ScriptElementKind.constructSignatureElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem("new()", ts.ScriptElementKind.constructSignatureElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
case SyntaxKind.MethodSignature:
var methodSignature = node;
- return new ts.NavigationBarItem(methodSignature.propertyName.text(), ts.ScriptElementKind.memberFunctionElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem(methodSignature.propertyName.text(), ts.ScriptElementKind.memberFunctionElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
case SyntaxKind.PropertySignature:
var propertySignature = node;
- return new ts.NavigationBarItem(propertySignature.propertyName.text(), ts.ScriptElementKind.memberVariableElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem(propertySignature.propertyName.text(), ts.ScriptElementKind.memberVariableElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
case SyntaxKind.FunctionDeclaration:
var functionDeclaration = node;
if (!this.isTopLevelFunctionDeclaration(functionDeclaration)) {
- return new ts.NavigationBarItem(functionDeclaration.identifier.text(), ts.ScriptElementKind.functionElement, this.getKindModifiers(functionDeclaration.modifiers), [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem(functionDeclaration.identifier.text(), ts.ScriptElementKind.functionElement, this.getKindModifiers(functionDeclaration.modifiers), [TextSpan.fromBounds(start(node), end(node))]);
}
break;
case SyntaxKind.MemberVariableDeclaration:
var memberVariableDeclaration = node;
- return new ts.NavigationBarItem(memberVariableDeclaration.variableDeclarator.propertyName.text(), ts.ScriptElementKind.memberVariableElement, this.getKindModifiers(memberVariableDeclaration.modifiers), [TextSpan.fromBounds(start(memberVariableDeclaration.variableDeclarator), end(memberVariableDeclaration.variableDeclarator))]);
+ return this.getNavigationBarItem(memberVariableDeclaration.variableDeclarator.propertyName.text(), ts.ScriptElementKind.memberVariableElement, this.getKindModifiers(memberVariableDeclaration.modifiers), [TextSpan.fromBounds(start(memberVariableDeclaration.variableDeclarator), end(memberVariableDeclaration.variableDeclarator))]);
case SyntaxKind.VariableDeclarator:
var variableDeclarator = node;
- return new ts.NavigationBarItem(variableDeclarator.propertyName.text(), ts.ScriptElementKind.variableElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(variableDeclarator), end(variableDeclarator))]);
+ return this.getNavigationBarItem(variableDeclarator.propertyName.text(), ts.ScriptElementKind.variableElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(variableDeclarator), end(variableDeclarator))]);
case SyntaxKind.ConstructorDeclaration:
var constructorDeclaration = node;
- return new ts.NavigationBarItem("constructor", ts.ScriptElementKind.constructorImplementationElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
+ return this.getNavigationBarItem("constructor", ts.ScriptElementKind.constructorImplementationElement, ts.ScriptElementKindModifier.none, [TextSpan.fromBounds(start(node), end(node))]);
}
return null;
@@ -273,7 +285,7 @@ module TypeScript.Services {
var childItems = this.getItemsWorker(() => this.getChildNodes(node.moduleElements), n => this.createChildItem(n));
- return new ts.NavigationBarItem(moduleNames.join("."),
+ return this.getNavigationBarItem(moduleNames.join("."),
ts.ScriptElementKind.moduleElement,
this.getKindModifiers(node.modifiers),
[TextSpan.fromBounds(start(node), end(node))],
@@ -284,7 +296,7 @@ module TypeScript.Services {
private createFunctionItem(node: FunctionDeclarationSyntax) {
var childItems = this.getItemsWorker(() => node.block.statements, n => this.createChildItem(n));
- return new ts.NavigationBarItem(node.identifier.text(),
+ return this.getNavigationBarItem(node.identifier.text(),
ts.ScriptElementKind.functionElement,
this.getKindModifiers(node.modifiers),
[TextSpan.fromBounds(start(node), end(node))],
@@ -300,7 +312,7 @@ module TypeScript.Services {
}
this.hasGlobalNode = true;
- return new ts.NavigationBarItem("",
+ return this.getNavigationBarItem("",
ts.ScriptElementKind.moduleElement,
ts.ScriptElementKindModifier.none,
[TextSpan.fromBounds(start(node), end(node))],
@@ -317,7 +329,7 @@ module TypeScript.Services {
: node.classElements;
var childItems = this.getItemsWorker(() => nodes, n => this.createChildItem(n));
- return new ts.NavigationBarItem(
+ return this.getNavigationBarItem(
node.identifier.text(),
ts.ScriptElementKind.classElement,
this.getKindModifiers(node.modifiers),
@@ -328,7 +340,7 @@ module TypeScript.Services {
private createEnumItem(node: TypeScript.EnumDeclarationSyntax): ts.NavigationBarItem {
var childItems = this.getItemsWorker(() => node.enumElements, n => this.createChildItem(n));
- return new ts.NavigationBarItem(
+ return this.getNavigationBarItem(
node.identifier.text(),
ts.ScriptElementKind.enumElement,
this.getKindModifiers(node.modifiers),
@@ -339,7 +351,7 @@ module TypeScript.Services {
private createIterfaceItem(node: TypeScript.InterfaceDeclarationSyntax): ts.NavigationBarItem {
var childItems = this.getItemsWorker(() => node.body.typeMembers, n => this.createChildItem(n));
- return new ts.NavigationBarItem(
+ return this.getNavigationBarItem(
node.identifier.text(),
ts.ScriptElementKind.interfaceElement,
this.getKindModifiers(node.modifiers),
diff --git a/src/services/indentation.ts b/src/services/indentation.ts
index b067e817d99..6616cdd3448 100644
--- a/src/services/indentation.ts
+++ b/src/services/indentation.ts
@@ -1,4 +1,3 @@
-///
module TypeScript.Indentation {
export function columnForEndOfTokenAtPosition(syntaxTree: SyntaxTree, position: number, options: FormattingOptions): number {
diff --git a/src/services/outliningElementsCollector.ts b/src/services/outliningElementsCollector.ts
index 92440bfe760..2a303108c15 100644
--- a/src/services/outliningElementsCollector.ts
+++ b/src/services/outliningElementsCollector.ts
@@ -13,8 +13,6 @@
// limitations under the License.
//
-///
-
module ts {
export interface OutliningSpan {
diff --git a/src/services/references.ts b/src/services/references.ts
deleted file mode 100644
index f1f4245c122..00000000000
--- a/src/services/references.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/////
-/////
-
-//// document.ts depends on incrementalParser.ts being run first.
-/////
-/////
-
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
-/////
\ No newline at end of file
diff --git a/src/services/services.ts b/src/services/services.ts
index a2595473252..f83202df864 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -306,7 +306,7 @@ module ts {
}
private processMultiLineDocumentationCommentRange(
- sourceFile: SourceFile, commentRange: CommentRange,
+ sourceFile: SourceFile, commentRange: CommentRange,
startLineAndChar: { line: number; character: number },
endLineAndChar: { line: number; character: number },
lines: string[]) {
@@ -686,94 +686,53 @@ module ts {
dispose(): void;
}
- export class ClassificationTypeNames {
- public static comment = "comment";
- public static identifier = "identifier";
- public static keyword = "keyword";
- public static numericLiteral = "number";
- public static operator = "operator";
- public static stringLiteral = "string";
- public static whiteSpace = "whitespace";
- public static text = "text";
-
- public static punctuation = "punctuation";
-
- public static className = "class name";
- public static enumName = "enum name";
- public static interfaceName = "interface name";
- public static moduleName = "module name";
- public static typeParameterName = "type parameter name";
+ export interface ClassifiedSpan {
+ textSpan: TypeScript.TextSpan;
+ classificationType: string; // ClassificationTypeNames
}
- export class ClassifiedSpan {
- constructor(public textSpan: TypeScript.TextSpan,
- public classificationType: string) {
-
- }
+ export interface NavigationBarItem {
+ text: string;
+ kind: string;
+ kindModifiers: string;
+ spans: TypeScript.TextSpan[];
+ childItems: NavigationBarItem[];
+ indent: number;
+ bolded: boolean;
+ grayed: boolean;
}
- export class NavigationBarItem {
- constructor(public text: string,
- public kind: string,
- public kindModifiers: string,
- public spans: TypeScript.TextSpan[],
- public childItems: NavigationBarItem[] = null,
- public indent = 0,
- public bolded = false,
- public grayed = false) {
- }
+ export interface TodoCommentDescriptor {
+ text: string;
+ priority: number;
}
- export class TodoCommentDescriptor {
- constructor(public text: string,
- public priority: number) {
- }
- }
-
- export class TodoComment {
- constructor(public descriptor: TodoCommentDescriptor,
- public message: string,
- public position: number) {
- }
+ export interface TodoComment {
+ descriptor: TodoCommentDescriptor;
+ message: string;
+ position: number;
}
export class TextChange {
- constructor(public span: TypeScript.TextSpan, public newText: string) {
- }
-
- static createInsert(pos: number, newText: string): TextChange {
- return new TextChange(new TypeScript.TextSpan(pos, 0), newText);
- }
- static createDelete(start: number, end: number): TextChange {
- return new TextChange(TypeScript.TextSpan.fromBounds(start, end), "");
- }
- static createReplace(start: number, end: number, newText: string): TextChange {
- return new TextChange(TypeScript.TextSpan.fromBounds(start, end), newText);
- }
+ span: TypeScript.TextSpan;
+ newText: string;
}
- export class ReferenceEntry {
- public fileName: string = "";
- public textSpan: TypeScript.TextSpan;
- public isWriteAccess: boolean = false;
-
- constructor(fileName: string, textSpan: TypeScript.TextSpan, isWriteAccess: boolean) {
- this.fileName = fileName;
- this.textSpan = textSpan;
- this.isWriteAccess = isWriteAccess;
- }
+ export interface ReferenceEntry {
+ textSpan: TypeScript.TextSpan;
+ fileName: string;
+ isWriteAccess: boolean;
}
- export class NavigateToItem {
- constructor(public name: string,
- public kind: string,
- public kindModifiers: string,
- public matchKind: string,
- public fileName: string,
- public textSpan: TypeScript.TextSpan,
- public containerName: string,
- public containerKind: string) {
- }
+ export interface NavigateToItem {
+ name: string;
+ kind: string;
+ kindModifiers: string;
+ matchKind: string;
+ fileName: string;
+ textSpan: TypeScript.TextSpan;
+ containerName: string;
+ containerKind: string;
}
export interface EditorOptions {
@@ -794,14 +753,13 @@ module ts {
PlaceOpenBraceOnNewLineForControlBlocks: boolean;
}
- export class DefinitionInfo {
- constructor(public fileName: string,
- public textSpan: TypeScript.TextSpan,
- public kind: string,
- public name: string,
- public containerKind: string,
- public containerName: string) {
- }
+ export interface DefinitionInfo {
+ fileName: string;
+ textSpan: TypeScript.TextSpan;
+ kind: string;
+ name: string;
+ containerKind: string;
+ containerName: string;
}
export interface MemberName {
@@ -810,56 +768,37 @@ module ts {
text: string;
}
- export class QuickInfo {
- constructor(public kind: string,
- public kindModifiers: string,
- public textSpan: TypeScript.TextSpan,
- public displayParts: SymbolDisplayPart[],
- public documentation: SymbolDisplayPart[]) {
- }
+ export interface QuickInfo {
+ kind: string;
+ kindModifiers: string;
+ textSpan: TypeScript.TextSpan;
+ displayParts: SymbolDisplayPart[];
+ documentation: SymbolDisplayPart[];
}
- export class TypeInfo {
- constructor(
- public memberName: TypeScript.MemberName,
- public docComment: string,
- public fullSymbolName: string,
- public kind: string,
- public textSpan: TypeScript.TextSpan) {
- }
+ export interface TypeInfo {
+ memberName: TypeScript.MemberName;
+ docComment: string;
+ fullSymbolName: string;
+ kind: string;
+ textSpan: TypeScript.TextSpan;
}
- export class RenameInfo {
- constructor(public canRename: boolean,
- public localizedErrorMessage: string,
- public displayName: string,
- public fullDisplayName: string,
- public kind: string,
- public kindModifiers: string,
- public triggerSpan: TypeScript.TextSpan) {
- }
-
- public static CreateError(localizedErrorMessage: string) {
- return new RenameInfo(/*canRename:*/ false, localizedErrorMessage,
- /*displayName:*/ null, /*fullDisplayName:*/ null,
- /*kind:*/ null, /*kindModifiers:*/ null, /*triggerSpan:*/ null);
- }
-
- public static Create(displayName: string,
- fullDisplayName: string,
- kind: string,
- kindModifiers: string,
- triggerSpan: TypeScript.TextSpan) {
- return new RenameInfo(/*canRename:*/ true, /*localizedErrorMessage:*/ null, displayName, fullDisplayName, kind, kindModifiers, triggerSpan);
- }
+ export interface RenameInfo {
+ canRename: boolean;
+ localizedErrorMessage: string;
+ displayName: string;
+ fullDisplayName: string;
+ kind: string;
+ kindModifiers: string;
+ triggerSpan: TypeScript.TextSpan;
}
- export class SignatureHelpParameter {
- constructor(public name: string,
- public documentation: string,
- public display: string,
- public isOptional: boolean) {
- }
+ export interface SignatureHelpParameter {
+ name: string;
+ documentation: string;
+ display: string;
+ isOptional: boolean;
}
/**
@@ -869,30 +808,27 @@ module ts {
* an edit has happened, while signature help is still active, the host can ask important
* questions like 'what parameter is the user currently contained within?'.
*/
- export class SignatureHelpItem {
- constructor(public isVariadic: boolean,
- public prefix: string,
- public suffix: string,
- public separator: string,
- public parameters: SignatureHelpParameter[],
- public documentation: string) {
- }
+ export interface SignatureHelpItem {
+ isVariadic: boolean;
+ prefix: string;
+ suffix: string;
+ separator: string;
+ parameters: SignatureHelpParameter[];
+ documentation: string;
}
/**
* Represents a set of signature help items, and the preferred item that should be selected.
*/
- export class SignatureHelpItems {
- constructor(public items: SignatureHelpItem[],
- public applicableSpan: TypeScript.TextSpan,
- public selectedItemIndex: number) {
- }
+ export interface SignatureHelpItems {
+ items: SignatureHelpItem[];
+ applicableSpan: TypeScript.TextSpan;
+ selectedItemIndex: number;
}
- export class SignatureHelpState {
- constructor(public argumentIndex: number,
- public argumentCount: number) {
- }
+ export interface SignatureHelpState {
+ argumentIndex: number;
+ argumentCount: number;
}
export interface CompletionInfo {
@@ -1064,6 +1000,25 @@ module ts {
static staticModifier = "static";
}
+ export class ClassificationTypeNames {
+ public static comment = "comment";
+ public static identifier = "identifier";
+ public static keyword = "keyword";
+ public static numericLiteral = "number";
+ public static operator = "operator";
+ public static stringLiteral = "string";
+ public static whiteSpace = "whitespace";
+ public static text = "text";
+
+ public static punctuation = "punctuation";
+
+ public static className = "class name";
+ public static enumName = "enum name";
+ public static interfaceName = "interface name";
+ public static moduleName = "module name";
+ public static typeParameterName = "type parameter name";
+ }
+
enum MatchKind {
none = 0,
exact = 1,
@@ -1575,7 +1530,7 @@ module ts {
isAnyFunction(node.parent) && (node.parent).name === node;
}
- /// Returns true if node is a name of an object literal property, e.g. "a" in x = { "a": 1 }
+ /** Returns true if node is a name of an object literal property, e.g. "a" in x = { "a": 1 } */
function isNameOfPropertyAssignment(node: Node): boolean {
return (node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.StringLiteral || node.kind === SyntaxKind.NumericLiteral) &&
node.parent.kind === SyntaxKind.PropertyAssignment && (node.parent).name === node;
@@ -1794,9 +1749,11 @@ module ts {
fullTypeCheckChecker_doNotAccessDirectly = undefined;
}
- /// Clean up any semantic caches that are not needed.
- /// The host can call this method if it wants to jettison unused memory.
- /// We will just dump the typeChecker and recreate a new one. this should have the effect of destroying all the semantic caches.
+ /**
+ * Clean up any semantic caches that are not needed.
+ * The host can call this method if it wants to jettison unused memory.
+ * We will just dump the typeChecker and recreate a new one. this should have the effect of destroying all the semantic caches.
+ */
function cleanupSemanticCache(): void {
if (program) {
typeInfoResolver = program.getTypeChecker(/*fullTypeCheckMode*/ false);
@@ -1820,8 +1777,10 @@ module ts {
return program.getDiagnostics(getSourceFile(filename).getSourceFile());
}
- // getSemanticDiagnostiscs return array of Diagnostics. If '-d' is not enabled, only report semantic errors
- // If '-d' enabled, report both semantic and emitter errors
+ /**
+ * getSemanticDiagnostiscs return array of Diagnostics. If '-d' is not enabled, only report semantic errors
+ * If '-d' enabled, report both semantic and emitter errors
+ */
function getSemanticDiagnostics(filename: string) {
synchronizeHostData();
@@ -2461,12 +2420,13 @@ module ts {
}
}
- return new QuickInfo(
- getSymbolKind(symbol),
- getSymbolModifiers(symbol),
- new TypeScript.TextSpan(node.getStart(), node.getWidth()),
- totalParts,
- documentationParts);
+ return {
+ kind: getSymbolKind(symbol),
+ kindModifiers: getSymbolModifiers(symbol),
+ textSpan: new TypeScript.TextSpan(node.getStart(), node.getWidth()),
+ displayParts: totalParts,
+ documentation: documentationParts
+ };
}
function getTypeAtPosition(fileName: string, position: number): TypeInfo {
@@ -2482,10 +2442,13 @@ module ts {
var symbol = typeInfoResolver.getSymbolInfo(node);
var type = symbol && typeInfoResolver.getTypeOfSymbol(symbol);
if (type) {
- return new TypeInfo(
- new TypeScript.MemberNameString(typeInfoResolver.typeToString(type)),
- "", typeInfoResolver.symbolToString(symbol, getContainerNode(node)),
- getSymbolKind(symbol), TypeScript.TextSpan.fromBounds(node.pos, node.end));
+ return {
+ memberName: new TypeScript.MemberNameString(typeInfoResolver.typeToString(type)),
+ docComment: "",
+ fullSymbolName: typeInfoResolver.symbolToString(symbol, getContainerNode(node)),
+ kind: getSymbolKind(symbol),
+ textSpan: TypeScript.TextSpan.fromBounds(node.pos, node.end)
+ };
}
return undefined;
@@ -2494,13 +2457,14 @@ module ts {
/// Goto definition
function getDefinitionAtPosition(filename: string, position: number): DefinitionInfo[]{
function getDefinitionInfo(node: Node, symbolKind: string, symbolName: string, containerName: string): DefinitionInfo {
- return new DefinitionInfo(
- node.getSourceFile().filename,
- TypeScript.TextSpan.fromBounds(node.getStart(), node.getEnd()),
- symbolKind,
- symbolName,
- undefined,
- containerName);
+ return {
+ fileName: node.getSourceFile().filename,
+ textSpan: TypeScript.TextSpan.fromBounds(node.getStart(), node.getEnd()),
+ kind: symbolKind,
+ name: symbolName,
+ containerKind: undefined,
+ containerName: containerName
+ };
}
function tryAddSignature(signatureDeclarations: Declaration[], selectConstructors: boolean, symbolKind: string, symbolName: string, containerName: string, result: DefinitionInfo[]) {
@@ -2570,10 +2534,14 @@ module ts {
if (comment) {
var targetFilename = normalizePath(combinePaths(getDirectoryPath(filename), comment.filename));
if (program.getSourceFile(targetFilename)) {
- return [new DefinitionInfo(
- targetFilename, TypeScript.TextSpan.fromBounds(0, 0),
- ScriptElementKind.scriptElement,
- comment.filename, undefined, undefined)];
+ return [{
+ fileName: targetFilename,
+ textSpan: TypeScript.TextSpan.fromBounds(0, 0),
+ kind: ScriptElementKind.scriptElement,
+ name: comment.filename,
+ containerName: undefined,
+ containerKind: undefined
+ }];
}
return undefined;
}
@@ -2606,7 +2574,7 @@ module ts {
return result;
}
- /// References and Occurances
+ /// References and Occurrences
function getOccurrencesAtPosition(filename: string, position: number): ReferenceEntry[] {
synchronizeHostData();
@@ -2726,7 +2694,11 @@ module ts {
}
if (shouldHighlightNextKeyword) {
- result.push(new ReferenceEntry(filename, TypeScript.TextSpan.fromBounds(elseKeyword.getStart(), ifKeyword.end), /* isWriteAccess */ false));
+ result.push({
+ fileName: filename,
+ textSpan: TypeScript.TextSpan.fromBounds(elseKeyword.getStart(), ifKeyword.end),
+ isWriteAccess: false
+ });
i++; // skip the next keyword
continue;
}
@@ -3562,7 +3534,12 @@ module ts {
start += 1;
end -= 1;
}
- return new ReferenceEntry(node.getSourceFile().filename, TypeScript.TextSpan.fromBounds(start, end), isWriteAccess(node));
+
+ return {
+ fileName: node.getSourceFile().filename,
+ textSpan: TypeScript.TextSpan.fromBounds(start, end),
+ isWriteAccess: isWriteAccess(node)
+ };
}
/** A node is considered a writeAccess iff it is a name of a declaration or a target of an assignment */
@@ -3731,9 +3708,9 @@ module ts {
// Reset writer back to undefined to make sure that we produce an error message if CompilerHost.writeFile method is called when we are not in getEmitOutput
writer = undefined;
- return emitOutput;
- }
-
+ return emitOutput;
+ }
+
// Signature help
/**
* This is a semantic operation.
@@ -3878,9 +3855,10 @@ module ts {
if (symbol) {
var type = classifySymbol(symbol);
if (type) {
- result.push(new ClassifiedSpan(
- new TypeScript.TextSpan(node.getStart(), node.getWidth()),
- type));
+ result.push({
+ textSpan: new TypeScript.TextSpan(node.getStart(), node.getWidth()),
+ classificationType: type
+ });
}
}
}
@@ -3902,9 +3880,10 @@ module ts {
function classifyTrivia(trivia: TypeScript.ISyntaxTrivia) {
if (trivia.isComment() && span.intersectsWith(trivia.fullStart(), trivia.fullWidth())) {
- result.push(new ClassifiedSpan(
- new TypeScript.TextSpan(trivia.fullStart(), trivia.fullWidth()),
- ClassificationTypeNames.comment));
+ result.push({
+ textSpan: new TypeScript.TextSpan(trivia.fullStart(), trivia.fullWidth()),
+ classificationType: ClassificationTypeNames.comment
+ });
}
}
@@ -3922,9 +3901,10 @@ module ts {
if (TypeScript.width(token) > 0) {
var type = classifyTokenType(token);
if (type) {
- result.push(new ClassifiedSpan(
- new TypeScript.TextSpan(TypeScript.start(token), TypeScript.width(token)),
- type));
+ result.push({
+ textSpan: new TypeScript.TextSpan(TypeScript.start(token), TypeScript.width(token)),
+ classificationType: type
+ });
}
}
@@ -4227,7 +4207,11 @@ module ts {
}
var message = matchArray[2];
- result.push(new TodoComment(descriptor, message, matchPosition));
+ result.push({
+ descriptor: descriptor,
+ message: message,
+ position: matchPosition
+ });
}
}
@@ -4314,7 +4298,7 @@ module ts {
(char >= TypeScript.CharacterCodes._0 && char <= TypeScript.CharacterCodes._9);
}
}
-
+
function getRenameInfo(fileName: string, position: number): RenameInfo {
synchronizeHostData();
@@ -4332,14 +4316,38 @@ module ts {
if (symbol && symbol.getDeclarations() && symbol.getDeclarations().length > 0) {
var kind = getSymbolKind(symbol);
if (kind) {
- return RenameInfo.Create(symbol.name, typeInfoResolver.getFullyQualifiedName(symbol), kind,
+ return getRenameInfo(symbol.name, typeInfoResolver.getFullyQualifiedName(symbol), kind,
getSymbolModifiers(symbol),
new TypeScript.TextSpan(node.getStart(), node.getWidth()));
}
}
}
- return RenameInfo.CreateError(getLocaleSpecificMessage(Diagnostics.You_cannot_rename_this_element.key));
+ return getRenameInfoError(getLocaleSpecificMessage(Diagnostics.You_cannot_rename_this_element.key));
+
+ function getRenameInfoError(localizedErrorMessage: string): RenameInfo {
+ return {
+ canRename: false,
+ localizedErrorMessage: getLocaleSpecificMessage(Diagnostics.You_cannot_rename_this_element.key),
+ displayName: undefined,
+ fullDisplayName: undefined,
+ kind: undefined,
+ kindModifiers: undefined,
+ triggerSpan: undefined
+ };
+ }
+
+ function getRenameInfo(displayName: string, fullDisplayName: string, kind: string, kindModifiers: string, triggerSpan: TypeScript.TextSpan): RenameInfo {
+ return {
+ canRename: true,
+ localizedErrorMessage: undefined,
+ displayName: displayName,
+ fullDisplayName: fullDisplayName,
+ kind: kind,
+ kindModifiers: kindModifiers,
+ triggerSpan: triggerSpan
+ };
+ }
}
return {
diff --git a/src/services/shims.ts b/src/services/shims.ts
index 0418a6da6cc..d4f8c4e5b30 100644
--- a/src/services/shims.ts
+++ b/src/services/shims.ts
@@ -22,31 +22,29 @@ var debugObjectHost = (this);
module ts {
export interface ScriptSnapshotShim {
- // Get's a portion of the script snapshot specified by [start, end).
+ /** Gets a portion of the script snapshot specified by [start, end). */
getText(start: number, end: number): string;
- // Get's the length of this script snapshot.
+ /** Gets the length of this script snapshot. */
getLength(): number;
- // This call returns the JSON encoded array of the type:
- // number[]
+ /** This call returns the JSON-encoded array of the type: number[] */
getLineStartPositions(): string;
- // Returns a JSON encoded value of the type:
- // { span: { start: number; length: number }; newLength: number }
- //
- // Or null value if there was no change.
+ /**
+ * Returns a JSON-encoded value of the type:
+ * { span: { start: number; length: number }; newLength: number }
+ *
+ * Or undefined value if there was no change.
+ */
getChangeRange(oldSnapshot: ScriptSnapshotShim): string;
}
- //
- // Public interface of the host of a language service shim instance.
- //
+ /** Public interface of the host of a language service shim instance.*/
export interface LanguageServiceShimHost extends Logger {
getCompilationSettings(): string;
- // Returns a JSON encoded value of the type:
- // string[]
+ /** Returns a JSON-encoded value of the type: string[] */
getScriptFileNames(): string;
getScriptVersion(fileName: string): string;
getScriptIsOpen(fileName: string): boolean;
@@ -57,9 +55,7 @@ module ts {
getDefaultLibFilename(): string;
}
- //
- // Public interface of of a language service instance shim.
- //
+ /** Public interface of a language service instance shim. */
export interface ShimFactory {
registerShim(shim: Shim): void;
unregisterShim(shim: Shim): void;
@@ -96,38 +92,54 @@ module ts {
getSignatureHelpItems(fileName: string, position: number): string;
getSignatureHelpCurrentArgumentState(fileName: string, position: number, applicableSpanStart: number): string;
- // Returns a JSON encoded value of the type:
- // { canRename: boolean, localizedErrorMessage: string, displayName: string, fullDisplayName: string, kind: string, kindModifiers: string, triggerSpan: { start; length } }
+ /**
+ * Returns a JSON-encoded value of the type:
+ * { canRename: boolean, localizedErrorMessage: string, displayName: string, fullDisplayName: string, kind: string, kindModifiers: string, triggerSpan: { start; length } }
+ */
getRenameInfo(fileName: string, position: number): string;
- // Returns a JSON encoded value of the type:
- // { fileName: string; textSpan: { start: number; length: number}; kind: string; name: string; containerKind: string; containerName: string }
- //
- // Or null value if no definition can be found.
+ /**
+ * Returns a JSON-encoded value of the type:
+ * { fileName: string; textSpan: { start: number; length: number}; kind: string; name: string; containerKind: string; containerName: string }
+ *
+ * Or undefined value if no definition can be found.
+ */
getDefinitionAtPosition(fileName: string, position: number): string;
- // Returns a JSON encoded value of the type:
- // { fileName: string; textSpan: { start: number; length: number}; isWriteAccess: boolean }[]
+ /**
+ * Returns a JSON-encoded value of the type:
+ * { fileName: string; textSpan: { start: number; length: number}; isWriteAccess: boolean }[]
+ */
getReferencesAtPosition(fileName: string, position: number): string;
- // Returns a JSON encoded value of the type:
- // { fileName: string; textSpan: { start: number; length: number}; isWriteAccess: boolean }[]
+ /**
+ * Returns a JSON-encoded value of the type:
+ * { fileName: string; textSpan: { start: number; length: number}; isWriteAccess: boolean }[]
+ */
getOccurrencesAtPosition(fileName: string, position: number): string;
- // Returns a JSON encoded value of the type:
- // { fileName: string; textSpan: { start: number; length: number}; isWriteAccess: boolean }[]
+ /**
+ * Returns a JSON-encoded value of the type:
+ * { fileName: string; textSpan: { start: number; length: number}; isWriteAccess: boolean }[]
+ */
getImplementorsAtPosition(fileName: string, position: number): string;
-
- // Returns a JSON encoded value of the type:
- // { name: string; kind: string; kindModifiers: string; containerName: string; containerKind: string; matchKind: string; fileName: string; textSpan: { start: number; length: number}; } [] = [];
+
+ /**
+ * Returns a JSON-encoded value of the type:
+ * { name: string; kind: string; kindModifiers: string; containerName: string; containerKind: string; matchKind: string; fileName: string; textSpan: { start: number; length: number}; } [] = [];
+ */
getNavigateToItems(searchValue: string): string;
- // Returns a JSON encoded value of the type:
- // { text: string; kind: string; kindModifiers: string; bolded: boolean; grayed: boolean; indent: number; spans: { start: number; length: number; }[]; childItems: [] } [] = [];
+ /**
+ * Returns a JSON-encoded value of the type:
+ * { text: string; kind: string; kindModifiers: string; bolded: boolean; grayed: boolean; indent: number; spans: { start: number; length: number; }[]; childItems: [] } [] = [];
+ */
getNavigationBarItems(fileName: string): string;
- // Returns a JSON encoded value of the type:
- // { textSpan: { start: number, length: number }; hintSpan: { start: number, length: number }; bannerText: string; autoCollapse: boolean } [] = [];
+ /**
+ * Returns a JSON-encoded value of the type:
+ * { textSpan: { start: number, length: number }; hintSpan: { start: number, length: number }; bannerText: string; autoCollapse: boolean } [] = [];
+ */
getOutliningSpans(fileName: string): string;
getTodoComments(fileName: string, todoCommentDescriptors: string): string;
@@ -435,9 +447,12 @@ module ts {
return forwardJSONCall(this.logger, actionDescription, action);
}
- // DISPOSE
- // Ensure (almost) deterministic release of internal Javascript resources when
- // some external native objects holds onto us (e.g. Com/Interop).
+ /// DISPOSE
+
+ /**
+ * Ensure (almost) deterministic release of internal Javascript resources when
+ * some external native objects holds onto us (e.g. Com/Interop).
+ */
public dispose(dummy: any): void {
this.logger.log("dispose()");
this.languageService.dispose();
@@ -454,8 +469,11 @@ module ts {
super.dispose(dummy);
}
- // REFRESH
- // Update the list of scripts known to the compiler
+ /// REFRESH
+
+ /**
+ * Update the list of scripts known to the compiler
+ */
public refresh(throwOnError: boolean): void {
this.forwardJSONCall(
"refresh(" + throwOnError + ")",
@@ -540,8 +558,11 @@ module ts {
}
/// QUICKINFO
- /// Computes a string representation of the type at the requested position
- /// in the active file.
+
+ /**
+ * Computes a string representation of the type at the requested position
+ * in the active file.
+ */
public getQuickInfoAtPosition(fileName: string, position: number): string {
return this.forwardJSONCall(
"getQuickInfoAtPosition('" + fileName + "', " + position + ")",
@@ -562,8 +583,11 @@ module ts {
}
/// NAMEORDOTTEDNAMESPAN
- /// Computes span information of the name or dotted name at the requested position
- // in the active file.
+
+ /**
+ * Computes span information of the name or dotted name at the requested position
+ * in the active file.
+ */
public getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): string {
return this.forwardJSONCall(
"getNameOrDottedNameSpan('" + fileName + "', " + startPos + ", " + endPos + ")",
@@ -573,8 +597,10 @@ module ts {
});
}
- /// STATEMENTSPAN
- /// Computes span information of statement at the requested position in the active file.
+ /**
+ * STATEMENTSPAN
+ * Computes span information of statement at the requested position in the active file.
+ */
public getBreakpointStatementAtPosition(fileName: string, position: number): string {
return this.forwardJSONCall(
"getBreakpointStatementAtPosition('" + fileName + "', " + position + ")",
@@ -606,8 +632,11 @@ module ts {
/// GOTO DEFINITION
- /// Computes the definition location and file for the symbol
- /// at the requested position.
+
+ /**
+ * Computes the definition location and file for the symbol
+ * at the requested position.
+ */
public getDefinitionAtPosition(fileName: string, position: number): string {
return this.forwardJSONCall(
"getDefinitionAtPosition('" + fileName + "', " + position + ")",
@@ -645,9 +674,12 @@ module ts {
}
/// GET REFERENCES
- /// Return references to a symbol at the requested position.
- /// References are separated by "\n".
- /// Each reference is a "fileindex min lim" sub-string.
+
+ /**
+ * Return references to a symbol at the requested position.
+ * References are separated by "\n".
+ * Each reference is a "fileindex min lim" sub-string.
+ */
public getReferencesAtPosition(fileName: string, position: number): string {
return this.forwardJSONCall(
"getReferencesAtPosition('" + fileName + "', " + position + ")",
@@ -675,9 +707,12 @@ module ts {
/// COMPLETION LISTS
- /// Get a string based representation of the completions
- /// to provide at the given source position and providing a member completion
- /// list if requested.
+
+ /**
+ * Get a string based representation of the completions
+ * to provide at the given source position and providing a member completion
+ * list if requested.
+ */
public getCompletionsAtPosition(fileName: string, position: number, isMemberCompletion: boolean) {
return this.forwardJSONCall(
"getCompletionsAtPosition('" + fileName + "', " + position + ", " + isMemberCompletion + ")",
@@ -687,7 +722,7 @@ module ts {
});
}
- /// Get a string based representation of a completion list entry details
+ /** Get a string based representation of a completion list entry details */
public getCompletionEntryDetails(fileName: string, position: number, entryName: string) {
return this.forwardJSONCall(
"getCompletionEntryDetails('" + fileName + "', " + position + ", " + entryName + ")",
@@ -728,7 +763,8 @@ module ts {
}
/// NAVIGATE TO
- /// Return a list of symbols that are interesting to navigate to
+
+ /** Return a list of symbols that are interesting to navigate to */
public getNavigateToItems(searchValue: string): string {
return this.forwardJSONCall(
"getNavigateToItems('" + searchValue + "')",
@@ -807,9 +843,6 @@ module ts {
return forwardJSONCall(this.logger, actionDescription, action);
}
- ///
- /// getPreProcessedFileInfo
- ///
public getPreProcessedFileInfo(fileName: string, sourceText: TypeScript.IScriptSnapshot): string {
return this.forwardJSONCall(
"getPreProcessedFileInfo('" + fileName + "')",
@@ -819,9 +852,6 @@ module ts {
});
}
- ///
- /// getDefaultCompilationSettings
- ///
public getDefaultCompilationSettings(): string {
return this.forwardJSONCall(
"getDefaultCompilationSettings()",
diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts
index f129cabc00a..b4ed515cf97 100644
--- a/src/services/signatureHelp.ts
+++ b/src/services/signatureHelp.ts
@@ -261,7 +261,7 @@ module ts.SignatureHelp {
display += "?";
}
display += ": " + typeInfoResolver.typeToString(typeInfoResolver.getTypeOfSymbol(p), argumentListOrTypeArgumentList);
- return new SignatureHelpParameter(p.name, "", display, isOptional);
+ return { name: p.name, documentation: "", display: display, isOptiona: isOptional };
});
var callTargetNode = (argumentListOrTypeArgumentList.parent).func;
var callTargetSymbol = typeInfoResolver.getSymbolInfo(callTargetNode);
@@ -273,7 +273,14 @@ module ts.SignatureHelp {
}
prefix += "(";
var suffix = "): " + typeInfoResolver.typeToString(candidateSignature.getReturnType(), argumentListOrTypeArgumentList);
- return new SignatureHelpItem(candidateSignature.hasRestParameter, prefix, suffix, ", ", parameterHelpItems, "");
+ return {
+ isVariadic: candidateSignature.hasRestParameter,
+ prefix: prefix,
+ suffix: suffix,
+ separator: ", ",
+ parameters: parameterHelpItems,
+ documentation: ""
+ };
});
var selectedItemIndex = candidates.indexOf(bestSignature);
if (selectedItemIndex < 0) {
@@ -291,7 +298,11 @@ module ts.SignatureHelp {
var applicableSpanStart = argumentListOrTypeArgumentList.getFullStart();
var applicableSpanEnd = skipTrivia(sourceFile.text, argumentListOrTypeArgumentList.end, /*stopAfterLineBreak*/ false);
var applicableSpan = new TypeScript.TextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart);
- return new SignatureHelpItems(items, applicableSpan, selectedItemIndex);
+ return {
+ items: items,
+ applicableSpan: applicableSpan,
+ selectedItemIndex: selectedItemIndex
+ };
}
}
@@ -327,7 +338,7 @@ module ts.SignatureHelp {
var numberOfCommas = countWhere(argumentListOrTypeArgumentList.getChildren(), arg => arg.kind === SyntaxKind.CommaToken);
var argumentCount = numberOfCommas + 1;
if (argumentCount <= 1) {
- return new SignatureHelpState(/*argumentIndex*/ 0, argumentCount);
+ return { argumentIndex: 0, argumentCount: argumentCount };
}
var indexOfNodeContainingPosition = findListItemIndexContainingPosition(argumentListOrTypeArgumentList, position);
@@ -338,12 +349,12 @@ module ts.SignatureHelp {
// Alternatively, we could be in range of one of the arguments, in which case we need to divide
// by 2 to exclude commas. Use bit shifting in order to take the floor of the division.
var argumentIndex = indexOfNodeContainingPosition < 0 ? argumentCount - 1 : indexOfNodeContainingPosition >> 1;
- return new SignatureHelpState(argumentIndex, argumentCount);
- }
-
- function getChildListThatStartsWithOpenerToken(parent: Node, openerToken: Node, sourceFile: SourceFile): Node {
+ return { argumentIndex: argumentIndex, argumentCount: argumentCount };
+ }
+
+ function getChildListThatStartsWithOpenerToken(parent: Node, openerToken: Node, sourceFile: SourceFile): Node {
var children = parent.getChildren(sourceFile);
var indexOfOpenerToken = children.indexOf(openerToken);
- return children[indexOfOpenerToken + 1];
+ return children[indexOfOpenerToken + 1];
}
}
\ No newline at end of file
diff --git a/src/services/text/scriptSnapshot.ts b/src/services/text/scriptSnapshot.ts
index 1c7091d6cae..574657f6c40 100644
--- a/src/services/text/scriptSnapshot.ts
+++ b/src/services/text/scriptSnapshot.ts
@@ -1,26 +1,32 @@
///
module TypeScript {
- // Represents an immutable snapshot of a script at a specified time. Once acquired, the
- // snapshot is observably immutable. i.e. the same calls with the same parameters will return
- // the same values.
+ /**
+ * Represents an immutable snapshot of a script at a specified time.Once acquired, the
+ * snapshot is observably immutable. i.e. the same calls with the same parameters will return
+ * the same values.
+ */
export interface IScriptSnapshot {
- // Get's a portion of the script snapshot specified by [start, end).
+ /** Gets a portion of the script snapshot specified by [start, end). */
getText(start: number, end: number): string;
- // Get's the length of this script snapshot.
+ /** Gets the length of this script snapshot. */
getLength(): number;
- // This call returns the array containing the start position of every line.
- // i.e."[0, 10, 55]". TODO: consider making this optional. The language service could
- // always determine this (albeit in a more expensive manner).
+ /**
+ * This call returns the array containing the start position of every line.
+ * i.e."[0, 10, 55]". TODO: consider making this optional. The language service could
+ * always determine this (albeit in a more expensive manner).
+ */
getLineStartPositions(): number[];
- // Gets the TextChangeRange that describe how the text changed between this text and
- // an older version. This informatoin is used by the incremental parser to determine
- // what sections of the script need to be reparsed. 'null' can be returned if the
- // change range cannot be determined. However, in that case, incremental parsing will
- // not happen and the entire document will be reparsed.
+ /**
+ * Gets the TextChangeRange that describe how the text changed between this text and
+ * an older version. This information is used by the incremental parser to determine
+ * what sections of the script need to be re-parsed. 'undefined' can be returned if the
+ * change range cannot be determined. However, in that case, incremental parsing will
+ * not happen and the entire document will be re - parsed.
+ */
getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange;
}