diff --git a/src/services/compiler/settings.ts b/src/services/compiler/settings.ts
deleted file mode 100644
index 11b58fb0e41..00000000000
--- a/src/services/compiler/settings.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-///
-
-module TypeScript {
- export function settingsChangeAffectsSyntax(before: ts.CompilerOptions, after: ts.CompilerOptions): boolean {
- // If the automatic semicolon insertion option has changed, then we have to dump all
- // syntax trees in order to reparse them with the new option.
- //
- // If the language version changed, then that affects what types of things we parse. So
- // we have to dump all syntax trees.
- //
- // If propagateEnumConstants changes, then that affects the constant value data we've
- // stored in the ISyntaxElement.
- return before.module !== after.module || before.target !== after.target;
- }
-}
\ No newline at end of file
diff --git a/src/services/compilerState.ts b/src/services/compilerState.ts
deleted file mode 100644
index a4d31494af7..00000000000
--- a/src/services/compilerState.ts
+++ /dev/null
@@ -1,472 +0,0 @@
-//
-// Copyright (c) Microsoft Corporation. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-///
-
-module TypeScript.Services {
- // Information about a specific host file.
- class HostFileInformation {
- private _sourceText: TypeScript.IScriptSnapshot;
-
- constructor(
- public fileName: string,
- private host: ILanguageServiceHost,
- public version: number,
- public isOpen: boolean,
- public byteOrderMark: TypeScript.ByteOrderMark) {
- this._sourceText = null;
- }
-
- public getScriptSnapshot(): TypeScript.IScriptSnapshot {
- if (this._sourceText === null) {
- this._sourceText = this.host.getScriptSnapshot(this.fileName);
- }
-
- return this._sourceText;
- }
- }
-
- // Cache host information about scripts. Should be refreshed
- // at each language service public entry point, since we don't know when
- // set of scripts handled by the host changes.
- class HostCache {
- private _fileNameToEntry: TypeScript.StringHashTable;
- private _compilationSettings: TypeScript.ImmutableCompilationSettings;
-
- constructor(host: ILanguageServiceHost) {
- // script id => script index
- this._fileNameToEntry = new TypeScript.StringHashTable();
-
- var fileNames = host.getScriptFileNames();
- for (var i = 0, n = fileNames.length; i < n; i++) {
- var fileName = fileNames[i];
- this._fileNameToEntry.add(TypeScript.switchToForwardSlashes(fileName), new HostFileInformation(
- fileName, host, host.getScriptVersion(fileName), host.getScriptIsOpen(fileName), host.getScriptByteOrderMark(fileName)));
- }
-
- var settings = host.getCompilationSettings();
- if (!settings) {
- // Set "ES5" target by default for language service
- settings = new TypeScript.CompilationSettings();
- settings.codeGenTarget = TypeScript.LanguageVersion.EcmaScript5;
- }
-
- this._compilationSettings = TypeScript.ImmutableCompilationSettings.fromCompilationSettings(settings);
- }
-
- public compilationSettings() {
- return this._compilationSettings;
- }
-
- public contains(fileName: string): boolean {
- return this._fileNameToEntry.lookup(TypeScript.switchToForwardSlashes(fileName)) !== null;
- }
-
- public getHostFileName(fileName: string) {
- var hostCacheEntry = this._fileNameToEntry.lookup(TypeScript.switchToForwardSlashes(fileName));
- if (hostCacheEntry) {
- return hostCacheEntry.fileName;
- }
- return fileName;
- }
-
- public getFileNames(): string[]{
- return this._fileNameToEntry.getAllKeys();
- }
-
- public getVersion(fileName: string): number {
- return this._fileNameToEntry.lookup(TypeScript.switchToForwardSlashes(fileName)).version;
- }
-
- public isOpen(fileName: string): boolean {
- return this._fileNameToEntry.lookup(TypeScript.switchToForwardSlashes(fileName)).isOpen;
- }
-
- public getByteOrderMark(fileName: string): TypeScript.ByteOrderMark {
- return this._fileNameToEntry.lookup(TypeScript.switchToForwardSlashes(fileName)).byteOrderMark;
- }
-
- public getScriptSnapshot(fileName: string): TypeScript.IScriptSnapshot {
- return this._fileNameToEntry.lookup(TypeScript.switchToForwardSlashes(fileName)).getScriptSnapshot();
- }
-
- public getScriptTextChangeRangeSinceVersion(fileName: string, lastKnownVersion: number): TypeScript.TextChangeRange {
- var currentVersion = this.getVersion(fileName);
- if (lastKnownVersion === currentVersion) {
- return TypeScript.TextChangeRange.unchanged; // "No changes"
- }
-
- var scriptSnapshot = this.getScriptSnapshot(fileName);
- return scriptSnapshot.getTextChangeRangeSinceVersion(lastKnownVersion);
- }
- }
-
- export class SyntaxTreeCache {
- private _hostCache: HostCache;
-
- // For our syntactic only features, we also keep a cache of the syntax tree for the
- // currently edited file.
- private _currentFileName: string = "";
- private _currentFileVersion: number = -1;
- private _currentFileSyntaxTree: TypeScript.SyntaxTree = null;
- private _currentFileScriptSnapshot: TypeScript.IScriptSnapshot = null;
-
- constructor(private _host: ILanguageServiceHost) {
- this._hostCache = new HostCache(_host);
- }
-
- public getCurrentFileSyntaxTree(fileName: string): TypeScript.SyntaxTree {
- this._hostCache = new HostCache(this._host);
-
- var version = this._hostCache.getVersion(fileName);
- var syntaxTree: TypeScript.SyntaxTree = null;
-
- if (this._currentFileSyntaxTree === null || this._currentFileName !== fileName) {
- var scriptSnapshot = this._hostCache.getScriptSnapshot(fileName);
- syntaxTree = this.createSyntaxTree(fileName, scriptSnapshot);
- }
- else if (this._currentFileVersion !== version) {
- var scriptSnapshot = this._hostCache.getScriptSnapshot(fileName);
- syntaxTree = this.updateSyntaxTree(fileName, scriptSnapshot, this._currentFileSyntaxTree, this._currentFileVersion);
- }
-
- if (syntaxTree !== null) {
- // All done, ensure state is up to date
- this._currentFileScriptSnapshot = scriptSnapshot;
- this._currentFileVersion = version;
- this._currentFileName = fileName;
- this._currentFileSyntaxTree = syntaxTree;
- }
-
- return this._currentFileSyntaxTree;
- }
-
- private createSyntaxTree(fileName: string, scriptSnapshot: TypeScript.IScriptSnapshot): TypeScript.SyntaxTree {
- var text = TypeScript.SimpleText.fromScriptSnapshot(scriptSnapshot);
-
- // For the purposes of features that use this syntax tree, we can just use the default
- // compilation settings. The features only use the syntax (and not the diagnostics),
- // and the syntax isn't affected by the compilation settings.
- var syntaxTree = TypeScript.Parser.parse(fileName, text,
- TypeScript.ImmutableCompilationSettings.defaultSettings().codeGenTarget(), TypeScript.isDTSFile(fileName));
-
- return syntaxTree;
- }
-
- private updateSyntaxTree(fileName: string, scriptSnapshot: TypeScript.IScriptSnapshot, previousSyntaxTree: TypeScript.SyntaxTree, previousFileVersion: number): TypeScript.SyntaxTree {
- var editRange = this._hostCache.getScriptTextChangeRangeSinceVersion(fileName, previousFileVersion);
-
- // Debug.assert(newLength >= 0);
-
- // The host considers the entire buffer changed. So parse a completely new tree.
- if (editRange === null) {
- return this.createSyntaxTree(fileName, scriptSnapshot);
- }
-
- var nextSyntaxTree = IncrementalParser.parse(
- previousSyntaxTree, editRange, SimpleText.fromScriptSnapshot(scriptSnapshot));
-
- this.ensureInvariants(fileName, editRange, nextSyntaxTree, this._currentFileScriptSnapshot, scriptSnapshot);
-
- return nextSyntaxTree;
- }
-
- private ensureInvariants(fileName: string, editRange: TypeScript.TextChangeRange, incrementalTree: TypeScript.SyntaxTree, oldScriptSnapshot: TypeScript.IScriptSnapshot, newScriptSnapshot: TypeScript.IScriptSnapshot) {
- // First, verify that the edit range and the script snapshots make sense.
-
- // If this fires, then the edit range is completely bogus. Somehow the lengths of the
- // old snapshot, the change range and the new snapshot aren't in sync. This is very
- // bad.
- var expectedNewLength = oldScriptSnapshot.getLength() - editRange.span().length() + editRange.newLength();
- var actualNewLength = newScriptSnapshot.getLength();
-
- function provideMoreDebugInfo() {
-
- var debugInformation = ["expected length:", expectedNewLength, "and actual length:", actualNewLength, "are not equal\r\n"];
-
- var oldSpan = editRange.span();
-
- function prettyPrintString(s: string): string {
- return '"' + s.replace(/\r/g, '\\r').replace(/\n/g, '\\n') + '"';
- }
-
- debugInformation.push('Edit range (old text) (start: ' + oldSpan.start() + ', end: ' + oldSpan.end() + ') \r\n');
- debugInformation.push('Old text edit range contents: ' + prettyPrintString(oldScriptSnapshot.getText(oldSpan.start(), oldSpan.end())));
-
- var newSpan = editRange.newSpan();
-
- debugInformation.push('Edit range (new text) (start: ' + newSpan.start() + ', end: ' + newSpan.end() + ') \r\n');
- debugInformation.push('New text edit range contents: ' + prettyPrintString(newScriptSnapshot.getText(newSpan.start(), newSpan.end())));
-
- return debugInformation.join(' ');
- }
-
- Debug.assert(
- expectedNewLength === actualNewLength,
- "Expected length is different from actual!",
- provideMoreDebugInfo);
-
- if (Debug.shouldAssert(AssertionLevel.VeryAggressive)) {
- // If this fires, the text change range is bogus. It says the change starts at point
- // 'X', but we can see a text difference *before* that point.
- var oldPrefixText = oldScriptSnapshot.getText(0, editRange.span().start());
- var newPrefixText = newScriptSnapshot.getText(0, editRange.span().start());
- Debug.assert(oldPrefixText === newPrefixText, 'Expected equal prefix texts!');
-
- // If this fires, the text change range is bogus. It says the change goes only up to
- // point 'X', but we can see a text difference *after* that point.
- var oldSuffixText = oldScriptSnapshot.getText(editRange.span().end(), oldScriptSnapshot.getLength());
- var newSuffixText = newScriptSnapshot.getText(editRange.newSpan().end(), newScriptSnapshot.getLength());
- Debug.assert(oldSuffixText === newSuffixText, 'Expected equal suffix texts!');
-
- // Ok, text change range and script snapshots look ok. Let's verify that our
- // incremental parsing worked properly.
- //var normalTree = this.createSyntaxTree(fileName, newScriptSnapshot);
- //Debug.assert(normalTree.structuralEquals(incrementalTree), 'Expected equal incremental and normal trees');
-
- // Ok, the trees looked good. So at least our incremental parser agrees with the
- // normal parser. Now, verify that the incremental tree matches the contents of the
- // script snapshot.
- var incrementalTreeText = fullText(incrementalTree.sourceUnit());
- var actualSnapshotText = newScriptSnapshot.getText(0, newScriptSnapshot.getLength());
- Debug.assert(incrementalTreeText === actualSnapshotText, 'Expected full texts to be equal');
- }
- }
- }
-
- export class LanguageServiceCompiler {
- private logger: TypeScript.ILogger;
-
- // The underlying typescript compiler we defer most operations to.
- private compiler: TypeScript.TypeScriptCompiler = null;
-
- // A cache of all the information about the files on the host side.
- private hostCache: HostCache = null;
-
- constructor(private host: ILanguageServiceHost, private documentRegistry: IDocumentRegistry, private cancellationToken: CancellationToken) {
- this.logger = this.host;
- }
-
- private synchronizeHostData(): void {
- TypeScript.timeFunction(this.logger, "synchronizeHostData()", () => {
- this.synchronizeHostDataWorker();
- });
- }
-
- private synchronizeHostDataWorker(): void {
- // Reset the cache at start of every refresh
- this.hostCache = new HostCache(this.host);
-
- var compilationSettings = this.hostCache.compilationSettings();
-
- // If we don't have a compiler, then create a new one.
- if (this.compiler === null) {
- this.compiler = new TypeScript.TypeScriptCompiler(this.logger, compilationSettings);
- }
-
- var oldSettings = this.compiler.compilationSettings();
-
- var changesInCompilationSettingsAffectSyntax =
- oldSettings && compilationSettings && !compareDataObjects(oldSettings, compilationSettings) && settingsChangeAffectsSyntax(oldSettings, compilationSettings);
-
- // let the compiler know about the current compilation settings.
- this.compiler.setCompilationSettings(compilationSettings);
-
- // Now, remove any files from the compiler that are no longer in the host.
- var compilerFileNames = this.compiler.fileNames();
-
- for (var i = 0, n = compilerFileNames.length; i < n; i++) {
-
- this.cancellationToken.throwIfCancellationRequested();
-
- var fileName = compilerFileNames[i];
-
- if (!this.hostCache.contains(fileName) || changesInCompilationSettingsAffectSyntax) {
- this.compiler.removeFile(fileName);
- this.documentRegistry.releaseDocument(fileName, oldSettings);
- }
- }
-
- // Now, for every file the host knows about, either add the file (if the compiler
- // doesn't know about it.). Or notify the compiler about any changes (if it does
- // know about it.)
- var hostFileNames = this.hostCache.getFileNames();
-
- for (var i = 0, n = hostFileNames.length; i < n; i++) {
- var fileName = hostFileNames[i];
-
- var version = this.hostCache.getVersion(fileName);
- var isOpen = this.hostCache.isOpen(fileName);
- var scriptSnapshot = this.hostCache.getScriptSnapshot(fileName);
-
- var document: Document = this.compiler.getDocument(fileName)
- if (document) {
- //
- // If the document is the same, assume no update
- //
- if (document.version === version && document.isOpen === isOpen) {
- continue;
- }
-
- // Only perform incremental parsing on open files that are being edited. If a file was
- // open, but is now closed, we want to reparse entirely so we don't have any tokens that
- // are holding onto expensive script snapshot instances on the host. Similarly, if a
- // file was closed, then we always want to reparse. This is so our tree doesn't keep
- // the old buffer alive that represented the file on disk (as the host has moved to a
- // new text buffer).
- var textChangeRange: TextChangeRange = null;
- if (document.isOpen && isOpen) {
- textChangeRange = this.hostCache.getScriptTextChangeRangeSinceVersion(fileName, document.version);
- }
-
- document = this.documentRegistry.updateDocument(document, fileName, compilationSettings, scriptSnapshot, version, isOpen, textChangeRange);
- }
- else {
- document = this.documentRegistry.acquireDocument(fileName, compilationSettings, scriptSnapshot, this.hostCache.getByteOrderMark(fileName), version, isOpen, []);
- }
-
- this.compiler.addOrUpdateFile(document);
- }
- }
-
- // Methods that defer to the host cache to get the result.
-
- public getScriptSnapshot(fileName: string): TypeScript.IScriptSnapshot {
- this.synchronizeHostData();
- return this.hostCache.getScriptSnapshot(fileName);
- }
-
- // Methods that does not require updating the host cache information
- public getCachedHostFileName(fileName: string) {
- if (!this.hostCache) {
- this.synchronizeHostData();
- }
-
- return this.hostCache.getHostFileName(fileName);
- }
-
- public getCachedTopLevelDeclaration(fileName: string) {
- if (!this.hostCache) {
- this.synchronizeHostData();
- }
-
- return this.compiler.topLevelDeclaration(fileName);
- }
-
- // Methods that defer to the compiler to get the result.
-
- public compilationSettings(): TypeScript.ImmutableCompilationSettings {
- this.synchronizeHostData();
- return this.compiler.compilationSettings();
- }
-
- public fileNames(): string[] {
- this.synchronizeHostData();
- return this.compiler.fileNames();
- }
-
- public cleanupSemanticCache(): void {
- this.compiler.cleanupSemanticCache();
- }
-
- public getDocument(fileName: string): TypeScript.Document {
- this.synchronizeHostData();
- return this.compiler.getDocument(fileName);
- }
-
- public getSemanticInfoChain(): SemanticInfoChain {
- this.synchronizeHostData();
- return this.compiler.getSemanticInfoChain();
- }
-
- public getSyntacticDiagnostics(fileName: string): TypeScript.Diagnostic[] {
- this.synchronizeHostData();
- return this.compiler.getSyntacticDiagnostics(fileName);
- }
-
- public getSemanticDiagnostics(fileName: string): TypeScript.Diagnostic[] {
- this.synchronizeHostData();
- return this.compiler.getSemanticDiagnostics(fileName);
- }
-
- public getCompilerOptionsDiagnostics(resolvePath: (path: string) => string): TypeScript.Diagnostic[] {
- this.synchronizeHostData();
- return this.compiler.getCompilerOptionsDiagnostics(resolvePath);
- }
-
- public getSymbolInformationFromAST(ast: TypeScript.ISyntaxElement, document: TypeScript.Document) {
- this.synchronizeHostData();
- return this.compiler.pullGetSymbolInformationFromAST(ast, document);
- }
-
- public getCallInformationFromAST(ast: TypeScript.ISyntaxElement, document: TypeScript.Document) {
- this.synchronizeHostData();
- return this.compiler.pullGetCallInformationFromAST(ast, document);
- }
-
- public getVisibleMemberSymbolsFromAST(ast: TypeScript.ISyntaxElement, document: TypeScript.Document) {
- this.synchronizeHostData();
- return this.compiler.pullGetVisibleMemberSymbolsFromAST(ast, document);
- }
-
- public getVisibleDeclsFromAST(ast: TypeScript.ISyntaxElement, document: TypeScript.Document) {
- this.synchronizeHostData();
- return this.compiler.pullGetVisibleDeclsFromAST(ast, document);
- }
-
- public getContextualMembersFromAST(ast: TypeScript.ISyntaxElement, document: TypeScript.Document) {
- this.synchronizeHostData();
- return this.compiler.pullGetContextualMembersFromAST(ast, document);
- }
-
- public pullGetDeclInformation(decl: TypeScript.PullDecl, ast: TypeScript.ISyntaxElement, document: TypeScript.Document) {
- this.synchronizeHostData();
- return this.compiler.pullGetDeclInformation(decl, ast, document);
- }
-
- public topLevelDeclaration(fileName: string) {
- this.synchronizeHostData();
- return this.compiler.topLevelDeclaration(fileName);
- }
-
- public getDeclForAST(ast: TypeScript.ISyntaxElement): TypeScript.PullDecl {
- this.synchronizeHostData();
- return this.compiler.getDeclForAST(ast);
- }
-
- public emit(fileName: string, resolvePath: (path: string) => string): TypeScript.EmitOutput {
- this.synchronizeHostData();
- return this.compiler.emit(fileName, resolvePath);
- }
-
- public emitDeclarations(fileName: string, resolvePath: (path: string) => string): TypeScript.EmitOutput {
- this.synchronizeHostData();
- return this.compiler.emitDeclarations(fileName, resolvePath);
- }
-
- public canEmitDeclarations(fileName: string) {
- this.synchronizeHostData();
- return this.compiler.canEmitDeclarations(fileName);
- }
-
- public dispose(): void {
- if (this.compiler) {
- var fileNames = this.compiler.fileNames();
- for (var i = 0; i < fileNames.length; ++i) {
- this.documentRegistry.releaseDocument(fileNames[i], this.compiler.compilationSettings());
- }
- }
- }
- }
-}
diff --git a/src/services/completionSession.ts b/src/services/completionSession.ts
deleted file mode 100644
index 6cc985fa658..00000000000
--- a/src/services/completionSession.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// Copyright (c) Microsoft Corporation. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-///
-
-module TypeScript.Services {
-
- export interface CachedCompletionEntryDetails extends CompletionEntryDetails{
- isResolved(): boolean;
- }
-
- export class ResolvedCompletionEntry implements CachedCompletionEntryDetails {
- constructor(public name: string,
- public kind: string,
- public kindModifiers: string,
- public type: string,
- public fullSymbolName: string,
- public docComment: string) {
- }
-
- public isResolved(): boolean {
- return true;
- }
- }
-
- export class DeclReferenceCompletionEntry implements CachedCompletionEntryDetails {
- public type: string = null;
- public fullSymbolName: string = null;
- public docComment: string = null;
-
- private hasBeenResolved = false;
-
- constructor(public name: string,
- public kind: string,
- public kindModifiers: string,
- public decl: TypeScript.PullDecl) {
- }
-
- public isResolved(): boolean {
- return this.hasBeenResolved;
- }
-
- public resolve(type: string, fullSymbolName: string, docComments: string) {
- this.type = type;
- this.fullSymbolName = fullSymbolName;
- this.docComment = docComments;
- this.hasBeenResolved = true;
- }
- }
-
- export class CompletionSession {
- constructor(public fileName: string,
- public position: number,
- public entries: TypeScript.IdentiferNameHashTable) {
- }
- }
-}
\ No newline at end of file
diff --git a/src/services/core/bitMatrix.ts b/src/services/core/bitMatrix.ts
deleted file mode 100644
index 4c2fbce4112..00000000000
--- a/src/services/core/bitMatrix.ts
+++ /dev/null
@@ -1,82 +0,0 @@
-///
-
-module TypeScript {
- export interface IBitMatrix {
- // Returns true if the bit at the specified indices is set. False otherwise.
- valueAt(x: number, y: number): boolean;
-
- // Sets the value at this specified indices.
- setValueAt(x: number, y: number, value: boolean): void;
-
- // Releases the bit matrix, allowing its resources to be used by another matrix.
- // This instance cannot be used after it is released.
- release(): void;
- }
-
- export module BitMatrix {
- var pool: BitMatrixImpl[] = [];
-
- class BitMatrixImpl implements IBitMatrix {
- public isReleased = false;
- private vectors: IBitVector[] = [];
-
- constructor(public allowUndefinedValues: boolean) {
- }
-
- public valueAt(x: number, y: number): boolean {
- Debug.assert(!this.isReleased, "Should not use a released bitvector");
- var vector = this.vectors[x];
- if (!vector) {
- return this.allowUndefinedValues ? undefined : false;
- }
-
- return vector.valueAt(y);
- }
-
- public setValueAt(x: number, y: number, value: boolean): void {
- Debug.assert(!this.isReleased, "Should not use a released bitvector");
- var vector = this.vectors[x];
- if (!vector) {
- if (value === undefined) {
- // If they're storing an undefined value, and we don't even have a vector,
- // then we can short circuit early here.
- return;
- }
-
- vector = BitVector.getBitVector(this.allowUndefinedValues);
- this.vectors[x] = vector;
- }
-
- vector.setValueAt(y, value);
- }
-
- public release() {
- Debug.assert(!this.isReleased, "Should not use a released bitvector");
- this.isReleased = true;
-
- // Release all the vectors back.
- for (var name in this.vectors) {
- if (this.vectors.hasOwnProperty(name)) {
- var vector = this.vectors[name];
- vector.release();
- }
- }
-
- this.vectors.length = 0;
- pool.push(this);
- }
- }
-
- export function getBitMatrix(allowUndefinedValues: boolean): IBitMatrix {
- if (pool.length === 0) {
- return new BitMatrixImpl(allowUndefinedValues);
- }
-
- var matrix = pool.pop();
- matrix.isReleased = false;
- matrix.allowUndefinedValues = allowUndefinedValues;
-
- return matrix;
- }
- }
-}
\ No newline at end of file
diff --git a/src/services/core/bitVector.ts b/src/services/core/bitVector.ts
deleted file mode 100644
index 6845d88182f..00000000000
--- a/src/services/core/bitVector.ts
+++ /dev/null
@@ -1,210 +0,0 @@
-///
-
-module TypeScript {
- export interface IBitVector {
- // Returns the value at the specified index. If this is a bi-state vector, then the result
- // will only be 'true' or 'false'. If this is a tri-state vector, then the result can be
- // 'true', 'false', or 'undefined'.
- valueAt(index: number): boolean;
-
- // Sets the value at this specified bit. For a bi-state vector the value must be 'true' or
- // 'false'. For a tri-state vector, it can be 'true', 'false', or 'undefined'.
- setValueAt(index: number, value: boolean): void;
-
- // Releases the bit vector, allowing its resources to be used by another BitVector.
- // This instance cannot be used after it is released.
- release(): void;
- }
-
- export module BitVector {
- var pool: BitVectorImpl[] = [];
- enum Constants {
- // We only use up to 30 bits in a number. That way the encoded value can always fit
- // within an int so that the underlying engine doesn't use a 64bit float here.
- MaxBitsPerEncodedNumber = 30,
- BitsPerEncodedBiStateValue = 1,
-
- // For a tri state vector we need 2 bits per encoded value. 00 for 'undefined',
- // '01' for 'false' and '10' for true.
- BitsPerEncodedTriStateValue = 2,
-
- BiStateEncodedTrue = 1, // 1
- BiStateClearBitsMask = 1, // 1
-
- TriStateEncodedFalse = 1, // 01
- TriStateEncodedTrue = 2, // 10
- TriStateClearBitsMask = 3, // 11
- }
-
- class BitVectorImpl implements IBitVector {
- public isReleased = false;
- private bits: number[] = [];
-
- constructor(public allowUndefinedValues: boolean) {
- }
-
- private computeTriStateArrayIndex(index: number): number {
- // The number of values that can be encoded in a single number.
- var encodedValuesPerNumber = Constants.MaxBitsPerEncodedNumber / Constants.BitsPerEncodedTriStateValue;
-
- return (index / encodedValuesPerNumber) >>> 0;
- }
-
- private computeBiStateArrayIndex(index: number): number {
- // The number of values that can be encoded in a single number.
- var encodedValuesPerNumber = Constants.MaxBitsPerEncodedNumber / Constants.BitsPerEncodedBiStateValue;
-
- return (index / encodedValuesPerNumber) >>> 0;
- }
-
- private computeTriStateEncodedValueIndex(index: number): number {
- // The number of values that can be encoded in a single number.
- var encodedValuesPerNumber = Constants.MaxBitsPerEncodedNumber / Constants.BitsPerEncodedTriStateValue;
-
- return (index % encodedValuesPerNumber) * Constants.BitsPerEncodedTriStateValue;
- }
-
- private computeBiStateEncodedValueIndex(index: number): number {
- // The number of values that can be encoded in a single number.
- var encodedValuesPerNumber = Constants.MaxBitsPerEncodedNumber / Constants.BitsPerEncodedBiStateValue;
-
- return (index % encodedValuesPerNumber) * Constants.BitsPerEncodedBiStateValue;
- }
-
- public valueAt(index: number): boolean {
- Debug.assert(!this.isReleased, "Should not use a released bitvector");
- if (this.allowUndefinedValues) {
- // tri-state bit vector. 2 bits per value.
-
- var arrayIndex = this.computeTriStateArrayIndex(index);
- var encoded = this.bits[arrayIndex];
- if (encoded === undefined) {
- // We don't even have an encoded value at this array position. That's
- // equivalent to 'undefined' for a tri-state vector.
- return undefined;
- }
-
- var bitIndex = this.computeTriStateEncodedValueIndex(index);
- if (encoded & (Constants.TriStateEncodedTrue << bitIndex)) {
- return true;
- }
- else if (encoded & (Constants.TriStateEncodedFalse << bitIndex)) {
- return false;
- }
- else {
- return undefined;
- }
- }
- else {
- // Normal bitvector. One bit per value stored.
-
- var arrayIndex = this.computeBiStateArrayIndex(index);
- var encoded = this.bits[arrayIndex];
- if (encoded === undefined) {
- // We don't even have an encoded value at this array position. That's
- // equivalent to 'false' for a bi-state vector.
- return false;
- }
-
- // If we don't support undefined values, then we use one bit per value. Just
- // index to that bit and see if it's set or not.
- var bitIndex = this.computeBiStateEncodedValueIndex(index);
- if (encoded & (Constants.BiStateEncodedTrue << bitIndex)) {
- return true;
- }
- else {
- return false;
- }
- }
- }
-
- public setValueAt(index: number, value: boolean): void {
- Debug.assert(!this.isReleased, "Should not use a released bitvector");
- if (this.allowUndefinedValues) {
- Debug.assert(value === true || value === false || value === undefined, "value must only be true, false or undefined.");
-
- var arrayIndex = this.computeTriStateArrayIndex(index);
- var encoded = this.bits[arrayIndex];
- if (encoded === undefined) {
- if (value === undefined) {
- // They're trying to set a bit to undefined that we don't even have an entry
- // for. We can bail out quickly here.
- return;
- }
-
- encoded = 0;
- }
-
- // First, we clear out any bits set at the appropriate index.
- var bitIndex = this.computeTriStateEncodedValueIndex(index);
-
- // Create a mask similar to: 11111111100111111
- // i.e. all 1's except for 2 zeroes in the appropriate place.
- var clearMask = ~(Constants.TriStateClearBitsMask << bitIndex)
- encoded = encoded & clearMask;
-
- if (value === true) {
- encoded = encoded | (Constants.TriStateEncodedTrue << bitIndex);
- }
- else if (value === false) {
- encoded = encoded | (Constants.TriStateEncodedFalse << bitIndex);
- }
- // else {
- // They're setting the value to 'undefined'. We already cleared the value
- // so there's nothing we need to do here.
- // }
-
- this.bits[arrayIndex] = encoded;
- }
- else {
- Debug.assert(value === true || value === false, "value must only be true or false.");
-
- var arrayIndex = this.computeBiStateArrayIndex(index);
- var encoded = this.bits[arrayIndex];
- if (encoded === undefined) {
- if (value === false) {
- // They're trying to set a bit to false that we don't even have an entry
- // for. We can bail out quickly here.
- return;
- }
-
- encoded = 0;
- }
-
- var bitIndex = this.computeBiStateEncodedValueIndex(index);
- // First, clear out the bit at this location.
- encoded = encoded & ~(Constants.BiStateClearBitsMask << bitIndex);
-
- if (value) {
- encoded = encoded | (Constants.BiStateEncodedTrue << bitIndex);
- }
- // else {
- // They're setting the value to 'false'. We already cleared the value
- // so there's nothing we need to do here.
- // }
-
- this.bits[arrayIndex] = encoded;
- }
- }
-
- public release() {
- Debug.assert(!this.isReleased, "Should not use a released bitvector");
- this.isReleased = true;
- this.bits.length = 0;
- pool.push(this);
- }
- }
-
- export function getBitVector(allowUndefinedValues: boolean): IBitVector {
- if (pool.length === 0) {
- return new BitVectorImpl(allowUndefinedValues);
- }
-
- var vector = pool.pop();
- vector.isReleased = false;
- vector.allowUndefinedValues = allowUndefinedValues;
-
- return vector;
- }
- }
-}
\ No newline at end of file
diff --git a/src/services/core/cancellationToken.ts b/src/services/core/cancellationToken.ts
deleted file mode 100644
index f479e4d7011..00000000000
--- a/src/services/core/cancellationToken.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-interface ICancellationToken {
- isCancellationRequested(): boolean;
-}
\ No newline at end of file
diff --git a/src/services/core/cancellationTokenSource.ts b/src/services/core/cancellationTokenSource.ts
deleted file mode 100644
index 684bf235cb7..00000000000
--- a/src/services/core/cancellationTokenSource.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-///
-
-interface ICancellationTokenSource {
- token(): ICancellationToken;
-
- cancel(): void;
-}
\ No newline at end of file
diff --git a/src/services/core/constants.ts b/src/services/core/constants.ts
deleted file mode 100644
index 9a980359313..00000000000
--- a/src/services/core/constants.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-module TypeScript {
- export enum Constants {
- // 2^30-1
- Max31BitInteger = 1073741823,
- Min31BitInteger = -1073741824,
- }
-}
\ No newline at end of file
diff --git a/src/services/core/environment.ts b/src/services/core/environment.ts
deleted file mode 100644
index ab1b351aed1..00000000000
--- a/src/services/core/environment.ts
+++ /dev/null
@@ -1,505 +0,0 @@
-///
-///
-///
-
-declare var Buffer: {
- new (str: string, encoding?: string): any;
-}
-
-module TypeScript {
- export var nodeMakeDirectoryTime = 0;
- export var nodeCreateBufferTime = 0;
- export var nodeWriteFileSyncTime = 0;
-
- export enum ByteOrderMark {
- None = 0,
- Utf8 = 1,
- Utf16BigEndian = 2,
- Utf16LittleEndian = 3,
- }
-
- export class FileInformation {
- constructor(public contents: string, public byteOrderMark: ByteOrderMark) {
- }
- }
-
- export interface IFileWatcher {
- close(): void;
- }
-
- export interface IEnvironment {
- supportsCodePage(): boolean;
- readFile(path: string, codepage: number): FileInformation;
- writeFile(path: string, contents: string, writeByteOrderMark: boolean): void;
- deleteFile(path: string): void;
- fileExists(path: string): boolean;
- directoryExists(path: string): boolean;
- directoryName(path: string): string;
- createDirectory(path: string): void;
- absolutePath(path: string): string;
- listFiles(path: string, re?: RegExp, options?: { recursive?: boolean; }): string[];
-
- arguments: string[];
- standardOut: ITextWriter;
- standardError: ITextWriter;
-
- executingFilePath(): string;
- currentDirectory(): string;
- newLine: string;
-
- watchFile(fileName: string, callback: (x: string) => void): IFileWatcher;
- quit(exitCode?: number): void;
- }
-
- function throwIOError(message: string, error: Error) {
- var errorMessage = message;
- if (error && error.message) {
- errorMessage += (" " + error.message);
- }
- throw new Error(errorMessage);
- }
-
- export var Environment: IEnvironment = (function () {
- // Create an IO object for use inside WindowsScriptHost hosts
- // Depends on WSCript and FileSystemObject
- function getWindowsScriptHostEnvironment(): IEnvironment {
- try {
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- } catch (e) {
- return null;
- }
-
- var streamObjectPool: any[] = [];
-
- function getStreamObject(): any {
- if (streamObjectPool.length > 0) {
- return streamObjectPool.pop();
- }
- else {
- return new ActiveXObject("ADODB.Stream");
- }
- }
-
- function releaseStreamObject(obj: any) {
- streamObjectPool.push(obj);
- }
-
- var args: string[] = [];
- for (var i = 0; i < WScript.Arguments.length; i++) {
- args[i] = WScript.Arguments.Item(i);
- }
-
- return {
- // On windows, the newline sequence is always "\r\n";
- newLine: "\r\n",
-
- currentDirectory: () => (WScript).CreateObject("WScript.Shell").CurrentDirectory,
-
- supportsCodePage: () => (WScript).ReadFile,
-
- absolutePath: path => fso.GetAbsolutePathName(path),
-
- readFile: function (path, codepage) {
- try {
- // If a codepage is requested, defer to our host to do the reading. If it
- // fails, fall back to our normal BOM/utf8 logic.
- if (codepage !== null && this.supportsCodePage()) {
- try {
- var contents = (WScript).ReadFile(path, codepage);
- return new FileInformation(contents, ByteOrderMark.None);
- }
- catch (e) {
- // We couldn't read it with that code page. Fall back to the normal
- // BOM/utf8 logic below.
- }
- }
-
- // Initially just read the first two bytes of the file to see if there's a bom.
- var streamObj = getStreamObject();
- streamObj.Open();
- streamObj.Type = 2; // Text data
-
- // Start reading individual chars without any interpretation. That way we can check for a bom.
- streamObj.Charset = 'x-ansi';
-
- streamObj.LoadFromFile(path);
- var bomChar = streamObj.ReadText(2); // Read the BOM char
-
- // Position has to be at 0 before changing the encoding
- streamObj.Position = 0;
-
- var byteOrderMark = ByteOrderMark.None;
-
- if (bomChar.charCodeAt(0) === 0xFE && bomChar.charCodeAt(1) === 0xFF) {
- streamObj.Charset = 'unicode';
- byteOrderMark = ByteOrderMark.Utf16BigEndian;
- }
- else if (bomChar.charCodeAt(0) === 0xFF && bomChar.charCodeAt(1) === 0xFE) {
- streamObj.Charset = 'unicode';
- byteOrderMark = ByteOrderMark.Utf16LittleEndian;
- }
- else if (bomChar.charCodeAt(0) === 0xEF && bomChar.charCodeAt(1) === 0xBB) {
- streamObj.Charset = 'utf-8';
- byteOrderMark = ByteOrderMark.Utf8;
- }
- else {
- // Always read a file as utf8 if it has no bom.
- streamObj.Charset = 'utf-8';
- }
-
- // Read the whole file
- var contents = streamObj.ReadText(-1 /* read from the current position to EOS */);
- streamObj.Close();
- releaseStreamObject(streamObj);
- return new FileInformation(contents, byteOrderMark);
- }
- catch (err) {
- // -2147024809 is the javascript value for 0x80070057 which is the HRESULT for
- // "the parameter is incorrect".
- var message: string;
- if (err.number === -2147024809) {
- message = TypeScript.getDiagnosticMessage(TypeScript.DiagnosticCode.Unsupported_file_encoding, null);
- }
- else {
- message = TypeScript.getDiagnosticMessage(TypeScript.DiagnosticCode.Cannot_read_file_0_1, [path, err.message]);
- }
-
- throw new Error(message);
- }
- },
-
- writeFile: (path, contents, writeByteOrderMark) => {
- // First, convert the text contents passed in to binary in UTF8 format.
- var textStream = getStreamObject();
- textStream.Charset = 'utf-8';
- textStream.Open();
- textStream.WriteText(contents, 0 /*do not add newline*/);
-
- // If they don't want the BOM, then skip it (it will be added automatically
- // when we write the utf8 bytes out above).
- if (!writeByteOrderMark) {
- textStream.Position = 3;
- }
- else {
- textStream.Position = 0;
- }
-
- // Now, write all those bytes out to a file.
- var fileStream = getStreamObject();
- fileStream.Type = 1; //binary data.
- fileStream.Open();
-
- textStream.CopyTo(fileStream);
-
- // Flush and save the file.
- fileStream.Flush();
- fileStream.SaveToFile(path, 2 /*overwrite*/);
- fileStream.Close();
-
- textStream.Flush();
- textStream.Close();
- },
-
- fileExists: path => fso.FileExists(path),
-
- deleteFile: path => {
- if (fso.FileExists(path)) {
- fso.DeleteFile(path, true); // true: delete read-only files
- }
- },
-
- directoryExists: path => fso.FolderExists(path),
-
- directoryName: path => fso.GetParentFolderName(path),
-
- createDirectory: function (path) {
- try {
- if (!this.directoryExists(path)) {
- fso.CreateFolder(path);
- }
- } catch (e) {
- throwIOError(TypeScript.getDiagnosticMessage(TypeScript.DiagnosticCode.Could_not_create_directory_0, [path]), e);
- }
- },
-
- listFiles: (path, spec?, options?) => {
- options = options || <{ recursive?: boolean; }>{};
- function filesInFolder(folder: any, root: string): string[] {
- var paths: string[] = [];
- var fc: Enumerator;
-
- if (options.recursive) {
- fc = new Enumerator(folder.subfolders);
-
- for (; !fc.atEnd(); fc.moveNext()) {
- paths = paths.concat(filesInFolder(fc.item(), root + "\\" + fc.item().Name));
- }
- }
-
- fc = new Enumerator(folder.files);
-
- for (; !fc.atEnd(); fc.moveNext()) {
- if (!spec || fc.item().Name.match(spec)) {
- paths.push(root + "\\" + fc.item().Name);
- }
- }
-
- return paths;
- }
-
- var folder: any = fso.GetFolder(path);
- var paths: string[] = [];
-
- return filesInFolder(folder, path);
- },
-
- arguments: args,
-
- standardOut: WScript.StdOut,
- standardError: WScript.StdErr,
-
- executingFilePath: () => WScript.ScriptFullName,
-
- quit: (exitCode = 0) => {
- try {
- WScript.Quit(exitCode);
- } catch (e) {
- }
- },
-
- watchFile: null,
- };
- };
-
- function getNodeEnvironment(): IEnvironment {
- var _fs = require('fs');
- var _path = require('path');
- var _module = require('module');
- var _os = require('os');
-
- return {
- // On node pick up the newline character from the OS
- newLine: _os.EOL,
-
- currentDirectory: () => (process).cwd(),
-
- supportsCodePage: () => false,
-
- absolutePath: path => _path.resolve(path),
-
- readFile: (file, codepage) => {
- if (codepage !== null) {
- throw new Error(TypeScript.getDiagnosticMessage(TypeScript.DiagnosticCode.codepage_option_not_supported_on_current_platform, null));
- }
-
- var buffer = _fs.readFileSync(file);
- switch (buffer[0]) {
- case 0xFE:
- if (buffer[1] === 0xFF) {
- // utf16-be. Reading the buffer as big endian is not supported, so convert it to
- // Little Endian first
- var i = 0;
- while ((i + 1) < buffer.length) {
- var temp = buffer[i];
- buffer[i] = buffer[i + 1];
- buffer[i + 1] = temp;
- i += 2;
- }
- return new FileInformation(buffer.toString("ucs2", 2), ByteOrderMark.Utf16BigEndian);
- }
- break;
- case 0xFF:
- if (buffer[1] === 0xFE) {
- // utf16-le
- return new FileInformation(buffer.toString("ucs2", 2), ByteOrderMark.Utf16LittleEndian);
- }
- break;
- case 0xEF:
- if (buffer[1] === 0xBB) {
- // utf-8
- return new FileInformation(buffer.toString("utf8", 3), ByteOrderMark.Utf8);
- }
- }
-
- // Default behaviour
- return new FileInformation(buffer.toString("utf8", 0), ByteOrderMark.None);
- },
-
- writeFile: (path, contents, writeByteOrderMark) => {
- function mkdirRecursiveSync(path: string) {
- var stats = _fs.statSync(path);
- if (stats.isFile()) {
- throw "\"" + path + "\" exists but isn't a directory.";
- }
- else if (stats.isDirectory()) {
- return;
- }
- else {
- mkdirRecursiveSync(_path.dirname(path));
- _fs.mkdirSync(path, 509 /*775 in octal*/);
- }
- }
- var start = new Date().getTime();
- mkdirRecursiveSync(_path.dirname(path));
- TypeScript.nodeMakeDirectoryTime += new Date().getTime() - start;
-
- if (writeByteOrderMark) {
- contents = '\uFEFF' + contents;
- }
-
- var start = new Date().getTime();
-
- var chunkLength = 4 * 1024;
- var fileDescriptor = _fs.openSync(path, "w");
- try {
- for (var index = 0; index < contents.length; index += chunkLength) {
- var bufferStart = new Date().getTime();
- var buffer = new Buffer(contents.substr(index, chunkLength), "utf8");
- TypeScript.nodeCreateBufferTime += new Date().getTime() - bufferStart;
-
- _fs.writeSync(fileDescriptor, buffer, 0, buffer.length, null);
- }
- }
- finally {
- _fs.closeSync(fileDescriptor);
- }
-
- TypeScript.nodeWriteFileSyncTime += new Date().getTime() - start;
- },
-
- fileExists: path => _fs.existsSync(path),
-
- deleteFile: path => {
- try {
- _fs.unlinkSync(path);
- } catch (e) {
- }
- },
-
- directoryExists: path =>
- _fs.existsSync(path) && _fs.statSync(path).isDirectory(),
-
- directoryName: path => {
- var dirPath = _path.dirname(path);
-
- // Node will just continue to repeat the root path, rather than return null
- if (dirPath === path) {
- dirPath = null;
- }
-
- return dirPath;
- },
-
- createDirectory: function (path) {
- try {
- if (!this.directoryExists(path)) {
- _fs.mkdirSync(path);
- }
- } catch (e) {
- throwIOError(TypeScript.getDiagnosticMessage(TypeScript.DiagnosticCode.Could_not_create_directory_0, [path]), e);
- }
- },
-
- listFiles: (path, spec?, options?) => {
- options = options || <{ recursive?: boolean; }>{};
-
- function filesInFolder(folder: string): string[] {
- var paths: string[] = [];
-
- var files = _fs.readdirSync(folder);
- for (var i = 0; i < files.length; i++) {
- var pathToFile = _path.join(folder, files[i]);
- var stat = _fs.statSync(pathToFile);
- if (options.recursive && stat.isDirectory()) {
- paths = paths.concat(filesInFolder(pathToFile));
- }
- else if (stat.isFile() && (!spec || files[i].match(spec))) {
- paths.push(pathToFile);
- }
- }
-
- return paths;
- }
-
- return filesInFolder(path);
- },
-
- arguments: process.argv.slice(2),
-
- standardOut: {
- Write: str => process.stdout.write(str),
- WriteLine: str => process.stdout.write(str + '\n'),
- Close() { }
- },
-
- standardError: {
- Write: str => process.stderr.write(str),
- WriteLine: str => process.stderr.write(str + '\n'),
- Close() { }
- },
-
- executingFilePath: () => process.mainModule.filename,
-
- quit: code => {
- var stderrFlushed = process.stderr.write('');
- var stdoutFlushed = process.stdout.write('');
- process.stderr.on('drain', function () {
- stderrFlushed = true;
- if (stdoutFlushed) {
- process.exit(code);
- }
- });
- process.stdout.on('drain', function () {
- stdoutFlushed = true;
- if (stderrFlushed) {
- process.exit(code);
- }
- });
- setTimeout(function () {
- process.exit(code);
- }, 5);
- },
-
- watchFile: (fileName, callback) => {
- var firstRun = true;
- var processingChange = false;
-
- var fileChanged: any = function (curr: any, prev: any) {
- if (!firstRun) {
- if (curr.mtime < prev.mtime) {
- return;
- }
-
- _fs.unwatchFile(fileName, fileChanged);
- if (!processingChange) {
- processingChange = true;
- callback(fileName);
- setTimeout(function () { processingChange = false; }, 100);
- }
- }
- firstRun = false;
- _fs.watchFile(fileName, { persistent: true, interval: 500 }, fileChanged);
- };
-
- fileChanged();
- return {
- fileName: fileName,
- close: function () {
- _fs.unwatchFile(fileName, fileChanged);
- }
- };
- },
- };
- };
-
- if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") {
- return getWindowsScriptHostEnvironment();
- }
- else if (typeof module !== 'undefined' && module.exports) {
- return getNodeEnvironment();
- }
- else {
- return null; // Unsupported host
- }
- })();
-}
diff --git a/src/services/core/indexable.ts b/src/services/core/indexable.ts
deleted file mode 100644
index c879b38cc75..00000000000
--- a/src/services/core/indexable.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-///
-
-module TypeScript {
- export interface IIndexable {
- [s: string]: T;
- }
-}
\ No newline at end of file
diff --git a/src/services/core/iterator.ts b/src/services/core/iterator.ts
deleted file mode 100644
index a2c31746bb5..00000000000
--- a/src/services/core/iterator.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-///
-
-module TypeScript {
- export interface Iterator {
- moveNext(): boolean;
- current(): T;
- }
-}
\ No newline at end of file
diff --git a/src/services/core/lineAndCharacter.ts b/src/services/core/lineAndCharacter.ts
deleted file mode 100644
index 8af46296d34..00000000000
--- a/src/services/core/lineAndCharacter.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-///
-
-module TypeScript {
- export interface ILineAndCharacter {
- line: number;
- character: number;
- }
-}
\ No newline at end of file
diff --git a/src/services/core/require.ts b/src/services/core/require.ts
deleted file mode 100644
index fcd5a5cbda9..00000000000
--- a/src/services/core/require.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-///
-
-// Forward declarations of the variables we use from 'node'.
-declare var require: any;
-declare var module: any;
\ No newline at end of file
diff --git a/src/services/diagnosticsParser.ts b/src/services/diagnosticsParser.ts
deleted file mode 100644
index 9ea7096bb65..00000000000
--- a/src/services/diagnosticsParser.ts
+++ /dev/null
@@ -1,363 +0,0 @@
-///
-///
-///
-
-module DiagnosticsParser {
-
- class FourSlashGenerator {
-
- private fsFiles: { [s: string]: IFourSlashFile; };
-
- constructor(private diagnosticsFile: string) {
- this.fsFiles = {};
- }
-
- public generate(args: string[]): void {
-
- if (IO.fileExists(this.diagnosticsFile)) {
-
- this.parseDiagnostics(args);
-
- if (args !== undefined) {
- for (var i = 0; i < args.length; i++) {
- for (var fsFile in this.fsFiles) {
- var strippedScriptId = fsFile.replace(/.+\\/, '');
- if (strippedScriptId === args[i]) {
- this.writeFile(fsFile);
- }
- }
- }
- } else {
- for (var fsFile in this.fsFiles) {
- this.writeFile(fsFile);
- }
- }
-
- }
- }
-
- private parseDiagnostics(args: string[]) {
-
- var file: string = IO.readFile(this.diagnosticsFile);
- var lines: string[] = file.split('\r\n');
-
- var updateMode: boolean;
- var scriptId: string;
-
- var editBlock: string;
- var editRange: TypeScript.ScriptEditRange;
-
- var startPosition: number;
- var caretPosition: number;
- var collapsingBlock: string;
-
- var openEditTag = /^.*/;
- var closeEditTag = /.*/;
-
- // Loops through the lines of the diagnostics file
- for (var i = 0; i < lines.length; i++) {
-
- // Indicates the user opening a file
- if (lines[i].match(/\/\/=New=\\\\/)) {
-
- updateMode = false;
-
- // Indicates the user making updates to an opened file
- } else if (lines[i].match(/\/\/=Update=\\\\/)) {
-
- updateMode = true;
-
- // Record the filePath of the opened/modified file
- } else if (lines[i].match(/^scriptId: /)) {
-
- var newScriptId = lines[i].replace(/^scriptId: /, '');
- if (scriptId !== undefined && newScriptId !== scriptId && collapsingBlock !== undefined) {
- this.fsFiles[scriptId].insertAt(startPosition, caretPosition, collapsingBlock);
-
- startPosition = undefined;
- caretPosition = undefined;
- collapsingBlock = undefined
- }
- scriptId = newScriptId;
-
- // Records the editRange (minChar, limChar, deltaOfCaret)
- } else if (lines[i].match(/^editRange\(/)) {
-
- //Capture numbers in editRange(minChar=###, limChar=###, delta=###)
- var match = /editRange\(minChar=([0-9]+), limChar=([0-9]+), delta=(-?[0-9]+)\)/.exec(lines[i]);
- if (match !== null) {
- editRange = new TypeScript.ScriptEditRange(parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10));
- }
-
- // Indicates the beginning of added text and records
- } else if (lines[i].match(openEditTag)) {
-
- var editLines: string[] = [];
-
- lines[i] = lines[i].replace(openEditTag, '');
- while (lines[i].match(closeEditTag) === null) {
- editLines.push(lines[i]);
- i++;
- }
-
- editLines.push(lines[i].replace(closeEditTag, ''));
- editBlock = editLines.join('\r\n');
-
- // Indicates the end of the edit block, and then adds the text to the relevant file
- } else if (lines[i].match(/\\\\=====\/\//) && editRange !== null) {
-
- if (updateMode) {
-
- var range: number = editRange.limChar - editRange.minChar;
- var deleting: boolean = (range !== 0);
-
- if (deleting) {
-
- if (collapsingBlock !== undefined) {
- this.fsFiles[scriptId].insertAt(startPosition, caretPosition, collapsingBlock);
- }
-
- caretPosition = editRange.minChar + (editBlock !== undefined ? editBlock.length : 0);
-
- this.fsFiles[scriptId].deleteAt(editRange.limChar, caretPosition, range, editBlock);
-
- startPosition = undefined;
- caretPosition = undefined;
- collapsingBlock = undefined;
-
- } else {
- if (editRange.minChar === caretPosition) {
- collapsingBlock += editBlock;
- } else {
- if (collapsingBlock !== undefined) {
- this.fsFiles[scriptId].insertAt(startPosition, caretPosition, collapsingBlock);
- }
- startPosition = editRange.minChar;
- collapsingBlock = editBlock;
- }
- caretPosition = editRange.minChar + editRange.delta;
- }
- } else {
- this.fsFiles[scriptId] = new FourSlashFile(scriptId, editBlock);
- }
- editBlock = undefined;
- }
- }
-
- // Add any text that hasn't been stored to its relevant file
- if (collapsingBlock !== undefined) {
- this.fsFiles[scriptId].insertAt(startPosition, caretPosition, collapsingBlock);
- }
- }
-
- private writeFile(scriptId: string): void {
- if (this.fsFiles[scriptId] !== undefined) {
- var fsFileName = this.fsFiles[scriptId].getFsFileName();
- IO.writeFile(fsFileName, this.fsFiles[scriptId].getFile());
- }
- }
-
- }
-
- interface IFourSlashFile {
- getFile(): string;
- getFsFileName(): string;
- getOriginalScriptId(): string;
- updateInternalFile(minChar: number, limChar: number, content: string): void;
- insertAt(position: number, caretPosition: number, content: string): void;
- deleteAt(position: number, caretPosition: number, amount: number, content?: string): void;
- addInternalState(caretPosition: number): void;
- }
-
- interface IFourSlashNode {
- getNode(): string;
- }
-
- class FourSlashFile implements IFourSlashFile {
-
- private static header = "/// " + '\r\n' + '\r\n';
-
- private fsScriptId: string;
-
- private commands: IFourSlashNode[];
-
- private internalState: string;
-
- constructor(private originalScriptId: string, private startingContent: string) {
-
- this.fsScriptId = 'tests\\cases\\fourslash\\' + originalScriptId.replace(/.+\\(.+).ts/, '$1_generated.ts');
- this.commands = [];
- this.internalState = startingContent;
-
- }
-
- public getFile(): string {
- var file: string;
-
- //Split on \r\n and add ////
- var rnlines = this.startingContent.split('\r\n');
- rnlines.forEach((line, index, array) => { array[index] = '////' + line });
- var rnfile = rnlines.join('\r\n');
-
- //Repeat for \n
- var nlines = rnfile.split(/([^\r]\n|\r[^\n])/);
- nlines.forEach((line, index, array) => { if (line.indexOf('////') !== 0) { array[index] = '////' + line } });
- var nfile = nlines.join('\n');
-
- file = FourSlashFile.header + nfile + '\r\n' + '\r\n';
- this.commands.forEach((command, index, array) => { file += command.getNode() });
-
- return file;
- }
-
- private getWithWhitespace(text: string) {
- return text.replace(/ /g, '\u00B7').replace(/\r/g, '\u00B6').replace(/\n/g, '\u2193\n').replace(/\t/g, '\u2192\ ');
- }
-
- public getFsFileName(): string {
- return this.fsScriptId;
- }
-
- public getOriginalScriptId(): string {
- return this.originalScriptId;
- }
-
- public updateInternalFile(minChar: number, limChar: number, content: string): void {
- this.internalState = this.internalState.substring(0, minChar) + content + this.internalState.substr(limChar);
- }
-
- public insertAt(position: number, caretPosition: number, content: string): void {
- var posOffset = this.getInsertOffset(position);
- var insertNode = new FourSlashInsert(position - posOffset, content.replace(/(\r\n|\r|\n)/g, '\n'));
- this.commands.push(insertNode);
- this.updateInternalFile(position, position, content);
- this.addInternalState(caretPosition);
- }
-
- public deleteAt(position: number, caretPosition: number, amount: number, content?: string): void {
- var posOffset = this.getInsertOffset(position);
- var amountOffset = this.getDeleteOffset(position, amount);
- var deleteNode = new FourSlashDelete(position - posOffset, amount - amountOffset, (content !== undefined ? content.replace(/(\r\n|\r|\n)/g, '\n') : undefined));
- this.commands.push(deleteNode);
- this.updateInternalFile(position - amount, position, content);
- this.addInternalState(caretPosition);
- }
-
- public addInternalState(caretPosition: number): void {
- var caretedState = this.internalState.substr(0, caretPosition) + '|' + this.internalState.substr(caretPosition);
- var internalState = new FourSlashStateComment(caretedState);
- this.commands.push(internalState);
- }
-
- private getInsertOffset(position: number) {
- var offset: number = 0;
- var match = this.internalState.substring(0, position).match(/\r\n/g);
- if (match !== null) {
- offset = match.length;
- }
- offset = (match !== null ? match.length : 0);
- return offset;
- }
-
- private getDeleteOffset(position: number, amount: number) {
- var offset: number = 0;
- var match = this.internalState.substring(position - amount, position).match(/\r\n/g);
- if (match !== null) {
- offset = match.length;
- }
- return offset;
- }
-
- }
-
- class FourSlashInsert implements IFourSlashNode {
-
- constructor(private position: number, private content: string) {
- this.content = this.content.replace(/([\/\\"'])/g, '\\$1');
- this.content = this.content.replace(/\r\n/g, '\\r\\n');
- this.content = this.content.replace(/(\r|\n)/g, '\\n');
- }
-
- public getNode(): string {
- var insertNode: string = "goTo.position(" + this.position.toString() + ");" + "\n" +
- "edit.insert(\'" + this.content + "\');" + "\n";
- return insertNode;
- }
-
- }
-
- class FourSlashDelete implements IFourSlashNode {
-
- constructor(private position: number, private deletionAmount: number, private content: string) {
- if (this.content !== undefined) {
- this.content = this.content.replace(/([\/\\"'])/g, '\\$1');
- this.content = this.content.replace(/\r\n/g, '\\r\\n');
- this.content = this.content.replace(/(\r|\n)/g, '\\n');
- }
- }
-
- public getNode(): string {
- var deleteNode: string = "goTo.position(" + this.position.toString() + ");" + "\n" +
- "edit.backspace(" + this.deletionAmount + ");" + "\n";
- if (this.content !== undefined && this.content !== "") {
- deleteNode += "edit.insert(\'" + this.content + "\');" + "\n";
- }
- return deleteNode;
- }
-
- }
-
- class FourSlashStateComment implements IFourSlashNode {
-
- constructor(private state: string) { }
-
- public getNode(): string {
-
- var lines = this.state.replace(/\r\n|\r|\n/g, '\r\n').split('\n');
- lines.forEach((line, index, array) => { array[index] = '//-' + line; });
- var stateNode = lines.join('\n');
-
- return stateNode + '\n' + '\n';
-
- }
-
- }
-
- class DiagnosticsLocator {
-
- private diagnosticsFile: string = 'diagnostics.txt';
-
- public find(): string {
- return this.findDiagnosticsInFolder("C:/Users");
- }
-
- private findDiagnosticsInFolder(path: string): string {
- if (IO.directoryExists(path)) {
- var diagnosticsPath = undefined;
- var dir: string[] = IO.dir(path, undefined, { recursive: true });
- for (var i = 0; i < dir.length; i++) {
- if (dir[i].indexOf(this.diagnosticsFile) !== -1) {
- diagnosticsPath = dir[i];
- }
- }
- return diagnosticsPath;
- }
- }
-
- }
-
- var diagnosticsFile: string = undefined;
- var diagnosticArgs: string[] = undefined
- if (process.argv.length > 2) {
- if (IO.fileExists(process.argv[2])) {
- diagnosticsFile = process.argv[2];
- }
- //Grab remaining arguments
- diagnosticArgs = process.argv.slice(3, process.argv.length - 1);
- }
-
- if (diagnosticsFile !== undefined) {
- new FourSlashGenerator(diagnosticsFile).generate(diagnosticArgs);
- }
-
-}
\ No newline at end of file
diff --git a/src/services/es5compat.ts b/src/services/es5compat.ts
deleted file mode 100644
index 1cd6a50905a..00000000000
--- a/src/services/es5compat.ts
+++ /dev/null
@@ -1,354 +0,0 @@
-//
-// Copyright (c) Microsoft Corporation. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-/*----------------- ThirdPartyNotices -------------------------------------------------------
-
-This file is based on or incorporates material from the projects listed below
-(collectively "Third Party Code"). Microsoft is not the original author of the
-Third Party Code. The original copyright notice and the license, under which
-Microsoft received such Third Party Code, are set forth below. Such license and
-notices are provided for informational purposes only. Microsoft licenses the Third
-Party Code to you under the terms of the Apache 2.0 License.
-
---
-Array filter Compatibility Method,
-Available at https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/filter
-
-Array forEach Compatibility Method,
-Available at https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach
-
-Array indexOf Compatibility Method,
-Available at https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf
-
-Array map Compatibility Method,
-Available at https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/map
-
-Array Reduce Compatibility Method,
-Available at https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/Reduce
-
-Array some Compatibility Method,
-Available at https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/some
-
-String Trim Compatibility Method,
-Available at https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/Trim
-
-Date now Compatibility Method,
-Available at https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/now
-
-Copyright (c) 2007 - 2012 Mozilla Developer Network and individual contributors
-
-Licensed by Microsoft under the Apache License, Version 2.0 (the "License"); you
-may not use this file except in compliance with the License. You may obtain a copy
-of the License at http://www.apache.org/licenses/LICENSE-2.0
-
-THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
-EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR
-CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
-
-See the Apache Version 2.0 License for specific language governing permissions and
-limitations under the License.
-
---
-Original License provided for Informational Purposes Only
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-------------- End of ThirdPartyNotices --------------------------------------------------- */
-
-
-// Compatibility with non ES5 compliant engines
-if (!String.prototype.trim) {
- String.prototype.trim = function() {
- return this.replace(/^\s+|\s+$/g, '');
- };
-}
-
-// Compatibility with non ES5 compliant engines
-if (!Array.prototype.indexOf) {
- Array.prototype.indexOf = function (searchElement: any, fromIndex?: any) {
- "use strict";
- if (this == null) {
- throw new TypeError();
- }
- var t = Object(this);
- var len: any = t.length >>> 0;
- if (len === 0) {
- return -1;
- }
- var n: any = 0;
- if (arguments.length > 0) {
- n = Number(arguments[1]);
- if (n != n) { // shortcut for verifying if it's NaN
- n = 0;
- }
- else if (n != 0 && n != Infinity && n != -Infinity) {
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
- }
- }
- if (n >= len) {
- return -1;
- }
- var k: any = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
- for (; k < len; k++) {
- if (k in t && t[k] === searchElement) {
- return k;
- }
- }
- return -1;
- }
-}
-
-if (!Array.prototype.filter)
-{
- Array.prototype.filter = function(fun: any, thisp?: any)
- {
- "use strict";
-
- if (this == null)
- throw new TypeError();
-
- var t = Object(this);
- var len = t.length >>> 0;
- if (typeof fun != "function")
- throw new TypeError();
-
- var res: any[] = [];
- for (var i = 0; i < len; i++)
- {
- if (i in t)
- {
- var val = t[i]; // in case fun mutates this
- if (fun.call(thisp, val, i, t))
- res.push(val);
- }
- }
-
- return res;
- };
-}
-
-// Production steps of ECMA-262, Edition 5, 15.4.4.19
-// Reference: http://es5.github.com/#x15.4.4.19
-if (!Array.prototype.map) {
- Array.prototype.map = function(callback: any, thisArg?: any) {
-
- var T: any = undefined, A: any, k: any;
-
- if (this == null) {
- throw new TypeError(" this is null or not defined");
- }
-
- // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
- var O = Object(this);
-
- // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".
- // 3. Let len be ToUint32(lenValue).
- var len = O.length >>> 0;
-
- // 4. If IsCallable(callback) is false, throw a TypeError exception.
- // See: http://es5.github.com/#x9.11
- if ({}.toString.call(callback) != "[object Function]") {
- throw new TypeError(callback + " is not a function");
- }
-
- // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
- if (thisArg) {
- T = thisArg;
- }
-
- // 6. Let A be a new array created as if by the expression new Array(len) where Array is
- // the standard built-in constructor with that name and len is the value of len.
- A = new Array(len);
-
- // 7. Let k be 0
- k = 0;
-
- // 8. Repeat, while k < len
- while(k < len) {
-
- var kValue: any, mappedValue: any;
-
- // a. Let Pk be ToString(k).
- // This is implicit for LHS operands of the in operator
- // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
- // This step can be combined with c
- // c. If kPresent is true, then
- if (k in O) {
-
- // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
- kValue = O[ k ];
-
- // ii. Let mappedValue be the result of calling the Call internal method of callback
- // with T as the this value and argument list containing kValue, k, and O.
- mappedValue = callback.call(T, kValue, k, O);
-
- // iii. Call the DefineOwnProperty internal method of A with arguments
- // Pk, Property Descriptor {Value: mappedValue, : true, Enumerable: true, Configurable: true},
- // and false.
-
- // In browsers that support Object.defineProperty, use the following:
- // Object.defineProperty(A, Pk, { value: mappedValue, writable: true, enumerable: true, configurable: true });
-
- // For best browser support, use the following:
- A[ k ] = mappedValue;
- }
- // d. Increase k by 1.
- k++;
- }
-
- // 9. return A
- return A;
- };
-}
-
-if (!Array.prototype.reduce) {
- Array.prototype.reduce = function reduce(accumulator: any){
- if (this===null || this===undefined) throw new TypeError("Object is null or undefined");
- var i = 0, l = this.length >> 0, curr: any;
-
- if(typeof accumulator !== "function") // ES5 : "If IsCallable(callbackfn) is false, throw a TypeError exception."
- throw new TypeError("First argument is not callable");
-
- if(arguments.length < 2) {
- if (l === 0) throw new TypeError("Array length is 0 and no second argument");
- curr = this[0];
- i = 1; // start accumulating at the second element
- }
- else
- curr = arguments[1];
-
- while (i < l) {
- if(i in this) curr = accumulator.call(undefined, curr, this[i], i, this);
- ++i;
- }
-
- return curr;
- };
-}
-
-// Compatibility with non ES5 compliant engines
-// Production steps of ECMA-262, Edition 5, 15.4.4.18
-// Reference: http://es5.github.com/#x15.4.4.18
-if (!Array.prototype.forEach) {
- Array.prototype.forEach = function(callback: any, thisArg?: any) {
-
- var T: any, k: any;
-
- if (this == null) {
- throw new TypeError(" this is null or not defined");
- }
-
- // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
- var O = Object(this);
-
- // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".
- // 3. Let len be ToUint32(lenValue).
- var len = O.length >>> 0; // Hack to convert O.length to a UInt32
-
- // 4. If IsCallable(callback) is false, throw a TypeError exception.
- // See: http://es5.github.com/#x9.11
- if ({ }.toString.call(callback) != "[object Function]") {
- throw new TypeError(callback + " is not a function");
- }
-
- // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
- if (thisArg) {
- T = thisArg;
- }
- else {
- T = undefined; // added to stop definite assignment error
- }
-
- // 6. Let k be 0
- k = 0;
-
- // 7. Repeat, while k < len
- while (k < len) {
-
- var kValue: any;
-
- // a. Let Pk be ToString(k).
- // This is implicit for LHS operands of the in operator
- // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
- // This step can be combined with c
- // c. If kPresent is true, then
- if (k in O) {
-
- // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
- kValue = O[k];
-
- // ii. Call the Call internal method of callback with T as the this value and
- // argument list containing kValue, k, and O.
- callback.call(T, kValue, k, O);
- }
- // d. Increase k by 1.
- k++;
- }
- // 8. return undefined
- };
-}
-
-// Compatibility with non ES5 compliant engines
-if (!Date.now) {
- Date.now = function() {
- return (new Date()).getTime();
- };
-}
-
-// Compatibility with non ES5 compliant engines
-// Production steps of ECMA-262, Edition 5.1, 15.4.4.17
-if (!Array.prototype.some)
-{
- Array.prototype.some = function(fun: any /*, thisp */)
- {
- "use strict";
-
- if (this == null)
- throw new TypeError();
-
- var t = Object(this);
- var len = t.length >>> 0;
- if (typeof fun != "function")
- throw new TypeError();
-
- var thisp = arguments[1];
- for (var i = 0; i < len; i++)
- {
- var idx = i.toString(); // REVIEW: this line is not from the Mozilla page, necessary to avoid our compile time checks against non-string/any types in an in expression
- if (idx in t && fun.call(thisp, t[i], i, t))
- return true;
- }
-
- return false;
- };
-}
\ No newline at end of file
diff --git a/src/services/indenter.ts b/src/services/indenter.ts
deleted file mode 100644
index f082a3fe024..00000000000
--- a/src/services/indenter.ts
+++ /dev/null
@@ -1,207 +0,0 @@
-//
-// Copyright (c) Microsoft Corporation. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-///
-
-module TypeScript.Services {
- export class Indenter {
- public static getIndentation(node: TypeScript.SourceUnitSyntax, soruceText: TypeScript.IScriptSnapshot, position: number, editorOptions: TypeScript.Services.EditorOptions): number {
- var indentation = 0;
- var currentToken = TypeScript.findToken(node, position);
- var currentNode: TypeScript.ISyntaxElement = currentToken;
-
- if (currentToken.kind() === TypeScript.SyntaxKind.EndOfFileToken) {
- // Ignore EOF tokens, pick the one before it
- currentNode = previousToken(currentToken);
- }
- else if (Indenter.belongsToBracket(soruceText, currentToken, position)) {
- // Let braces and brackets take the indentation of thier parents
- currentNode = currentToken.parent;
- }
-
- if (currentNode === null) {
- return indentation;
- }
-
- // Check if this is a valid node to provide indentation
- if (currentNode.kind() === TypeScript.SyntaxKind.StringLiteral ||
- currentNode.kind() === TypeScript.SyntaxKind.RegularExpressionLiteral) {
- return indentation;
- }
-
- var currentElement = currentNode;
- var parent = currentNode.parent;
-
- while (parent !== null) {
- // Skip nodes that start at the position, these will have the indentation level of thier parent
- if (fullStart(parent) !== fullStart(currentNode)) {
- if (Indenter.isInContainerNode(parent, currentElement)) {
- indentation += editorOptions.IndentSize;
- }
- else {
- var listIndentation = Indenter.getCustomListIndentation(parent, currentElement);
- if (listIndentation !== -1) {
- // Found a list node with special indentation, If the list items span multiple lines, we want
- // to use the user-specified indentation; return.
- return indentation + listIndentation;
- }
- }
- }
- currentNode = parent;
- currentElement = parent;
- parent = parent.parent;
- }
-
- return indentation;
- }
-
- private static belongsToBracket(sourceText: TypeScript.IScriptSnapshot, token: TypeScript.ISyntaxToken, position: number): boolean {
- switch (token.kind()) {
- case TypeScript.SyntaxKind.OpenBraceToken:
- case TypeScript.SyntaxKind.CloseBraceToken:
- case TypeScript.SyntaxKind.OpenParenToken:
- case TypeScript.SyntaxKind.CloseParenToken:
- case TypeScript.SyntaxKind.OpenBracketToken:
- case TypeScript.SyntaxKind.CloseBracketToken:
- // the current token is a bracket, check if the current position is separated from it by a new line
- if (position < start(token)) {
- var text = sourceText.getText(position, start(token));
- for(var i = 0; i< text.length; i++){
- if (TypeScript.CharacterInfo.isLineTerminator(text.charCodeAt(i))) {
- return false;
- }
- }
- }
- return true;
- }
- return false;
- }
-
- private static isInContainerNode(parent: TypeScript.ISyntaxElement, element: TypeScript.ISyntaxElement): boolean {
- switch (parent.kind()) {
- case TypeScript.SyntaxKind.ClassDeclaration:
- case TypeScript.SyntaxKind.ModuleDeclaration:
- case TypeScript.SyntaxKind.EnumDeclaration:
- case TypeScript.SyntaxKind.ImportDeclaration:
- case TypeScript.SyntaxKind.Block:
- case TypeScript.SyntaxKind.SwitchStatement:
- case TypeScript.SyntaxKind.CaseSwitchClause:
- case TypeScript.SyntaxKind.DefaultSwitchClause:
- return true;
-
- case TypeScript.SyntaxKind.ObjectType:
- return true;
-
- case TypeScript.SyntaxKind.InterfaceDeclaration:
- return element.kind() !== TypeScript.SyntaxKind.ObjectType;
-
- case TypeScript.SyntaxKind.FunctionDeclaration:
- case TypeScript.SyntaxKind.MemberFunctionDeclaration:
- case TypeScript.SyntaxKind.GetAccessor:
- case TypeScript.SyntaxKind.SetAccessor:
- case TypeScript.SyntaxKind.FunctionExpression:
- case TypeScript.SyntaxKind.CatchClause:
- case TypeScript.SyntaxKind.FinallyClause:
- case TypeScript.SyntaxKind.FunctionDeclaration:
- case TypeScript.SyntaxKind.ConstructorDeclaration:
- case TypeScript.SyntaxKind.ForStatement:
- case TypeScript.SyntaxKind.ForInStatement:
- case TypeScript.SyntaxKind.WhileStatement:
- case TypeScript.SyntaxKind.DoStatement:
- case TypeScript.SyntaxKind.WithStatement:
- case TypeScript.SyntaxKind.IfStatement:
- case TypeScript.SyntaxKind.ElseClause:
- // The block has already been conted before, ignore the container node
- return element.kind() !== TypeScript.SyntaxKind.Block;
-
- case TypeScript.SyntaxKind.TryStatement:
- // If inside the try body, the block element will take care of the indentation
- // If not, we do not want to indent, as the next token would probally be catch or finally
- // and we want these on the same indentation level.
- return false;
- default:
- return isNode(parent) && SyntaxUtilities.isStatement(parent);
- }
- }
-
- private static getCustomListIndentation(list: TypeScript.ISyntaxElement, element: TypeScript.ISyntaxElement): number {
- switch (list.kind()) {
- case TypeScript.SyntaxKind.SeparatedList:
- // If it is the first in the list, let it have its parents indentation; no custom indentation here.
- for (var i = 0, n = childCount(list); i < n ; i++) {
- var child = childAt(list, i);
- if (child !== null && child === element)
- return Indenter.getListItemIndentation(list, i - 1);
- }
- break;
-
- case TypeScript.SyntaxKind.ArgumentList:
- // The separated list has been handled in the previous case, this is just if we are after
- // the last element of the list, we want to get the indentation of the last element of the list
- var argumentList = list;
- var _arguments = argumentList.arguments;
- if (_arguments !== null && argumentList.closeParenToken === element) {
- return Indenter.getListItemIndentation(_arguments, childCount(_arguments) - 1);
- }
- break;
-
- case TypeScript.SyntaxKind.ParameterList:
- // The separated list has been handled in the previous case, this is just if we are after
- // the last element of the list, we want to get the indentation of the last element of the list
- var parameterList = list;
- var parameters = parameterList.parameters;
- if (parameters !== null && parameterList.closeParenToken === element) {
- return Indenter.getListItemIndentation(parameters, childCount(parameters) - 1);
- }
- break;
-
- case TypeScript.SyntaxKind.TypeArgumentList:
- // The separated list has been handled in the previous case, this is just if we are after
- // the last element of the list, we want to get the indentation of the last element of the list
- var typeArgumentList = list;
- var typeArguments = typeArgumentList.typeArguments;
- if (typeArguments !== null && typeArgumentList.greaterThanToken === element) {
- return Indenter.getListItemIndentation(typeArguments, childCount(typeArguments) - 1);
- }
- break;
-
- case TypeScript.SyntaxKind.TypeParameterList:
- // The separated list has been handled in the previous case, this is just if we are after
- // the last element of the list, we want to get the indentation of the last element of the list
- var typeParameterList = list;
- var typeParameters = typeParameterList.typeParameters;
- if (typeParameters !== null && typeParameterList.greaterThanToken === element) {
- return Indenter.getListItemIndentation(typeParameters, childCount(typeParameters) - 1);
- }
- break;
- }
- return -1;
- }
-
- private static getListItemIndentation(list: TypeScript.ISyntaxElement, elementIndex: number): number {
- for (var i = elementIndex; i > 0 ; i--) {
- var child = childAt(list, i);
- var previousChild = childAt(list, i - 1);
- if ((child !== null && firstToken(child).leadingTrivia().hasNewLine()) ||
- (previousChild !== null && lastToken(previousChild).trailingTrivia().hasNewLine())) {
-
- // TODO: get the trivia after new line
- return leadingTriviaWidth(child);
- }
- }
- return -1;
- }
- }
-}
diff --git a/src/services/languageServiceCopy.ts b/src/services/languageServiceCopy.ts
deleted file mode 100644
index 912006eea0c..00000000000
--- a/src/services/languageServiceCopy.ts
+++ /dev/null
@@ -1,342 +0,0 @@
-//
-// Copyright (c) Microsoft Corporation. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-///
-///
-
-module TypeScript.Services {
-
- //
- // Public interface of the host of a language service instance.
- //
- export interface ILanguageServiceHost extends TypeScript.ILogger, TypeScript.IReferenceResolverHost {
- getCompilationSettings(): TypeScript.CompilationSettings;
-
- getScriptFileNames(): string[];
- getScriptVersion(fileName: string): number;
- getScriptIsOpen(fileName: string): boolean;
- getScriptByteOrderMark(fileName: string): TypeScript.ByteOrderMark;
- getScriptSnapshot(fileName: string): TypeScript.IScriptSnapshot;
- getDiagnosticsObject(): TypeScript.Services.ILanguageServicesDiagnostics;
- getLocalizedDiagnosticMessages(): any;
- }
-
- //
- // Public services of a language service instance associated
- // with a language service host instance
- //
- export interface ILanguageService {
- // Note: refresh is a no-op now. It is only around for back compat purposes.
- refresh(): void;
-
- cleanupSemanticCache(): void;
-
- getSyntacticDiagnostics(fileName: string): TypeScript.Diagnostic[];
- getSemanticDiagnostics(fileName: string): TypeScript.Diagnostic[];
- getCompilerOptionsDiagnostics(): TypeScript.Diagnostic[];
-
- getCompletionsAtPosition(fileName: string, position: number, isMemberCompletion: boolean): CompletionInfo;
- getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails;
-
- getTypeAtPosition(fileName: string, position: number): TypeInfo;
-
- getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): SpanInfo;
-
- getBreakpointStatementAtPosition(fileName: string, position: number): SpanInfo;
-
- getSignatureAtPosition(fileName: string, position: number): SignatureInfo;
-
- getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[];
- getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[];
- getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[];
- getImplementorsAtPosition(fileName: string, position: number): ReferenceEntry[];
-
- getNavigateToItems(searchValue: string): NavigateToItem[];
- getScriptLexicalStructure(fileName: string): NavigateToItem[];
-
- getOutliningRegions(fileName: string): TypeScript.TextSpan[];
- getBraceMatchingAtPosition(fileName: string, position: number): TypeScript.TextSpan[];
- getIndentationAtPosition(fileName: string, position: number, options: TypeScript.Services.EditorOptions): number;
-
- getFormattingEditsForRange(fileName: string, minChar: number, limChar: number, options: FormatCodeOptions): TextEdit[];
- getFormattingEditsForDocument(fileName: string, minChar: number, limChar: number, options: FormatCodeOptions): TextEdit[];
- getFormattingEditsOnPaste(fileName: string, minChar: number, limChar: number, options: FormatCodeOptions): TextEdit[];
- getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions): TextEdit[];
-
- getEmitOutput(fileName: string): TypeScript.EmitOutput;
-
- getSyntaxTree(fileName: string): TypeScript.SyntaxTree;
- }
-
- export function logInternalError(logger: TypeScript.ILogger, err: Error) {
- logger.log("*INTERNAL ERROR* - Exception in typescript services: " + err.message);
- }
-
- export class ReferenceEntry {
- public fileName: string = ""
- public minChar: number = -1;
- public limChar: number = -1;
- public isWriteAccess: boolean = false;
-
- constructor(fileName: string, minChar: number, limChar: number, isWriteAccess: boolean) {
- this.fileName = fileName;
- this.minChar = minChar;
- this.limChar = limChar;
- this.isWriteAccess = isWriteAccess;
- }
- }
-
- export class NavigateToItem {
- public name: string = "";
- public kind: string = ""; // see ScriptElementKind
- public kindModifiers: string = ""; // see ScriptElementKindModifier, comma separated
- public matchKind: string = "";
- public fileName: string = "";
- public minChar: number = -1;
- public limChar: number = -1;
- public additionalSpans: SpanInfo[] = null;
- public containerName: string = "";
- public containerKind: string = ""; // see ScriptElementKind
- }
-
- export class TextEdit {
- constructor(public minChar: number, public limChar: number, public text: string) {
- }
-
- static createInsert(pos: number, text: string): TextEdit {
- return new TextEdit(pos, pos, text);
- }
- static createDelete(minChar: number, limChar: number): TextEdit {
- return new TextEdit(minChar, limChar, "");
- }
- static createReplace(minChar: number, limChar: number, text: string): TextEdit {
- return new TextEdit(minChar, limChar, text);
- }
- }
-
- export class EditorOptions {
- public IndentSize: number = 4;
- public TabSize: number = 4;
- public NewLineCharacter: string = "\r\n";
- public ConvertTabsToSpaces: boolean = true;
-
- public static clone(objectToClone: EditorOptions): EditorOptions {
- var editorOptions = new EditorOptions();
- editorOptions.IndentSize = objectToClone.IndentSize;
- editorOptions.TabSize = objectToClone.TabSize;
- editorOptions.NewLineCharacter = objectToClone.NewLineCharacter;
- editorOptions.ConvertTabsToSpaces = objectToClone.ConvertTabsToSpaces;
- return editorOptions;
- }
- }
-
- export class FormatCodeOptions extends EditorOptions {
- public InsertSpaceAfterCommaDelimiter: boolean = true;
- public InsertSpaceAfterSemicolonInForStatements: boolean = true;
- public InsertSpaceBeforeAndAfterBinaryOperators: boolean = true;
- public InsertSpaceAfterKeywordsInControlFlowStatements: boolean = true;
- public InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean = false;
- public InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean = false;
- public PlaceOpenBraceOnNewLineForFunctions: boolean = false;
- public PlaceOpenBraceOnNewLineForControlBlocks: boolean = false;
-
- public static clone(objectToClone: FormatCodeOptions ): FormatCodeOptions {
- var formatCodeOptions = EditorOptions.clone(objectToClone);
- formatCodeOptions.InsertSpaceAfterCommaDelimiter = objectToClone.InsertSpaceAfterCommaDelimiter;
- formatCodeOptions.InsertSpaceAfterSemicolonInForStatements = objectToClone.InsertSpaceAfterSemicolonInForStatements;
- formatCodeOptions.InsertSpaceBeforeAndAfterBinaryOperators = objectToClone.InsertSpaceBeforeAndAfterBinaryOperators;
- formatCodeOptions.InsertSpaceAfterKeywordsInControlFlowStatements = objectToClone.InsertSpaceAfterKeywordsInControlFlowStatements;
- formatCodeOptions.InsertSpaceAfterFunctionKeywordForAnonymousFunctions = objectToClone.InsertSpaceAfterFunctionKeywordForAnonymousFunctions;
- formatCodeOptions.InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis = objectToClone.InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis;
- formatCodeOptions.PlaceOpenBraceOnNewLineForFunctions = objectToClone.PlaceOpenBraceOnNewLineForFunctions;
- formatCodeOptions.PlaceOpenBraceOnNewLineForControlBlocks = objectToClone.PlaceOpenBraceOnNewLineForControlBlocks;
- return formatCodeOptions;
- }
- }
-
- export class DefinitionInfo {
- constructor(
- public fileName: string,
- public minChar: number,
- public limChar: number,
- public kind: string,
- public name: string,
- public containerKind: string,
- public containerName: string) {
- }
- }
-
- export class TypeInfo {
- constructor(
- public memberName: TypeScript.MemberName,
- public docComment: string,
- public fullSymbolName: string,
- public kind: string,
- public minChar: number,
- public limChar: number) {
- }
- }
-
- export class SpanInfo {
- constructor(public minChar: number, public limChar: number, public text: string = null) {
- }
- }
-
- export class SignatureInfo {
- public actual: ActualSignatureInfo;
- public formal: FormalSignatureItemInfo[] = []; // Formal signatures
- public activeFormal: number; // Index of the "best match" formal signature
- }
-
- export class FormalSignatureItemInfo {
- public signatureInfo: string;
- public typeParameters: FormalTypeParameterInfo[] = [];
- public parameters: FormalParameterInfo[] = []; // Array of parameters
- public docComment: string; // Help for the signature
- }
-
- export class FormalTypeParameterInfo {
- public name: string; // Type parameter name
- public docComment: string; // Comments that contain help for the parameter
- public minChar: number; // minChar for parameter info in the formal signature info string
- public limChar: number; // lim char for parameter info in the formal signature info string
- }
-
- export class FormalParameterInfo {
- public name: string; // Parameter name
- public isVariable: boolean; // true if parameter is var args
- public docComment: string; // Comments that contain help for the parameter
- public minChar: number; // minChar for parameter info in the formal signature info string
- public limChar: number; // lim char for parameter info in the formal signature info string
- }
-
- export class ActualSignatureInfo {
- public parameterMinChar: number;
- public parameterLimChar: number;
- public currentParameterIsTypeParameter: boolean; // current parameter is a type argument or a normal argument
- public currentParameter: number; // Index of active parameter in "parameters" or "typeParamters" array
- }
-
- export class CompletionInfo {
- public maybeInaccurate = false;
- public isMemberCompletion = false;
- public entries: CompletionEntry[] = [];
- }
-
- export interface CompletionEntry {
- name: string;
- kind: string; // see ScriptElementKind
- kindModifiers: string; // see ScriptElementKindModifier, comma separated
- }
-
- export interface CompletionEntryDetails {
- name: string;
- kind: string; // see ScriptElementKind
- kindModifiers: string; // see ScriptElementKindModifier, comma separated
- type: string;
- fullSymbolName: string;
- docComment: string;
- }
-
-
- export class ScriptElementKind {
- static unknown = "";
-
- // predefined type (void) or keyword (class)
- static keyword = "keyword";
-
- // top level script node
- static scriptElement = "script";
-
- // module foo {}
- static moduleElement = "module";
-
- // class X {}
- static classElement = "class";
-
- // interface Y {}
- static interfaceElement = "interface";
-
- // enum E
- static enumElement = "enum";
-
- // Inside module and script only
- // var v = ..
- static variableElement = "var";
-
- // Inside function
- static localVariableElement = "local var";
-
- // Inside module and script only
- // function f() { }
- static functionElement = "function";
-
- // Inside function
- static localFunctionElement = "local function";
-
- // class X { [public|private]* foo() {} }
- static memberFunctionElement = "method";
-
- // class X { [public|private]* [get|set] foo:number; }
- static memberGetAccessorElement = "getter";
- static memberSetAccessorElement = "setter";
-
- // class X { [public|private]* foo:number; }
- // interface Y { foo:number; }
- static memberVariableElement = "property";
-
- // class X { constructor() { } }
- static constructorImplementationElement = "constructor";
-
- // interface Y { ():number; }
- static callSignatureElement = "call";
-
- // interface Y { []:number; }
- static indexSignatureElement = "index";
-
- // interface Y { new():Y; }
- static constructSignatureElement = "construct";
-
- // function foo(*Y*: string)
- static parameterElement = "parameter";
-
- static typeParameterElement = "type parameter";
-
- static primitiveType = "primitive type";
- }
-
- export class ScriptElementKindModifier {
- static none = "";
- static publicMemberModifier = "public";
- static privateMemberModifier = "private";
- static exportedModifier = "export";
- static ambientModifier = "declare";
- static staticModifier = "static";
- }
-
- export class MatchKind {
- static none: string = null;
- static exact = "exact";
- static subString = "substring";
- static prefix = "prefix";
- }
-
- export class DiagnosticCategory {
- static none = "";
- static error = "error";
- static warning = "warning";
- static message = "message";
- }
-}
diff --git a/src/services/syntaxRewriter.generated.ts b/src/services/syntaxRewriter.generated.ts
deleted file mode 100644
index 110fdb22c2a..00000000000
--- a/src/services/syntaxRewriter.generated.ts
+++ /dev/null
@@ -1,708 +0,0 @@
-///
-
-module TypeScript {
- export class SyntaxRewriter implements ISyntaxVisitor {
- public visitToken(token: ISyntaxToken): ISyntaxToken {
- return token;
- }
-
- public visitNode(node: ISyntaxNode): ISyntaxNode {
- return visitNodeOrToken(this, node);
- }
-
- public visitNodeOrToken(node: ISyntaxNodeOrToken): ISyntaxNodeOrToken {
- return isToken(node) ? this.visitToken(node) : this.visitNode(node);
- }
-
- public visitList(list: T[]): T[] {
- var newItems: T[] = null;
-
- for (var i = 0, n = list.length; i < n; i++) {
- var item = list[i];
- var newItem = this.visitNodeOrToken(item);
-
- if (item !== newItem && newItems === null) {
- newItems = [];
- for (var j = 0; j < i; j++) {
- newItems.push(list[j]);
- }
- }
-
- if (newItems) {
- newItems.push(newItem);
- }
- }
-
- // Debug.assert(newItems === null || newItems.length === childCount(list));
- return newItems === null ? list : Syntax.list(newItems);
- }
-
- public visitSeparatedList(list: T[]): T[] {
- var newItems: ISyntaxNodeOrToken[] = null;
-
- for (var i = 0, n = childCount(list); i < n; i++) {
- var item = childAt(list, i);
- var newItem = isToken(item) ? this.visitToken(item) : this.visitNode(item);
-
- if (item !== newItem && newItems === null) {
- newItems = [];
- for (var j = 0; j < i; j++) {
- newItems.push(childAt(list, j));
- }
- }
-
- if (newItems) {
- newItems.push(newItem);
- }
- }
-
- // Debug.assert(newItems === null || newItems.length === childCount(list));
- return newItems === null ? list : Syntax.separatedList(newItems);
- }
-
- public visitSourceUnit(node: SourceUnitSyntax): any {
- return node.update(
- this.visitList(node.moduleElements),
- this.visitToken(node.endOfFileToken));
- }
-
- public visitQualifiedName(node: QualifiedNameSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.left),
- this.visitToken(node.dotToken),
- this.visitToken(node.right));
- }
-
- public visitObjectType(node: ObjectTypeSyntax): any {
- return node.update(
- this.visitToken(node.openBraceToken),
- this.visitSeparatedList(node.typeMembers),
- this.visitToken(node.closeBraceToken));
- }
-
- public visitFunctionType(node: FunctionTypeSyntax): any {
- return node.update(
- node.typeParameterList === null ? null : this.visitNode(node.typeParameterList),
- this.visitNode(node.parameterList),
- this.visitToken(node.equalsGreaterThanToken),
- this.visitNodeOrToken(node.type));
- }
-
- public visitArrayType(node: ArrayTypeSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.type),
- this.visitToken(node.openBracketToken),
- this.visitToken(node.closeBracketToken));
- }
-
- public visitConstructorType(node: ConstructorTypeSyntax): any {
- return node.update(
- this.visitToken(node.newKeyword),
- node.typeParameterList === null ? null : this.visitNode(node.typeParameterList),
- this.visitNode(node.parameterList),
- this.visitToken(node.equalsGreaterThanToken),
- this.visitNodeOrToken(node.type));
- }
-
- public visitGenericType(node: GenericTypeSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.name),
- this.visitNode(node.typeArgumentList));
- }
-
- public visitTypeQuery(node: TypeQuerySyntax): any {
- return node.update(
- this.visitToken(node.typeOfKeyword),
- this.visitNodeOrToken(node.name));
- }
-
- public visitInterfaceDeclaration(node: InterfaceDeclarationSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitToken(node.interfaceKeyword),
- this.visitToken(node.identifier),
- node.typeParameterList === null ? null : this.visitNode(node.typeParameterList),
- this.visitList(node.heritageClauses),
- this.visitNode(node.body));
- }
-
- public visitFunctionDeclaration(node: FunctionDeclarationSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitToken(node.functionKeyword),
- this.visitToken(node.identifier),
- this.visitNode(node.callSignature),
- node.block === null ? null : this.visitNode(node.block),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitModuleDeclaration(node: ModuleDeclarationSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitToken(node.moduleKeyword),
- node.name === null ? null : this.visitNodeOrToken(node.name),
- node.stringLiteral === null ? null : this.visitToken(node.stringLiteral),
- this.visitToken(node.openBraceToken),
- this.visitList(node.moduleElements),
- this.visitToken(node.closeBraceToken));
- }
-
- public visitClassDeclaration(node: ClassDeclarationSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitToken(node.classKeyword),
- this.visitToken(node.identifier),
- node.typeParameterList === null ? null : this.visitNode(node.typeParameterList),
- this.visitList(node.heritageClauses),
- this.visitToken(node.openBraceToken),
- this.visitList(node.classElements),
- this.visitToken(node.closeBraceToken));
- }
-
- public visitEnumDeclaration(node: EnumDeclarationSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitToken(node.enumKeyword),
- this.visitToken(node.identifier),
- this.visitToken(node.openBraceToken),
- this.visitSeparatedList(node.enumElements),
- this.visitToken(node.closeBraceToken));
- }
-
- public visitImportDeclaration(node: ImportDeclarationSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitToken(node.importKeyword),
- this.visitToken(node.identifier),
- this.visitToken(node.equalsToken),
- this.visitNodeOrToken(node.moduleReference),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitExportAssignment(node: ExportAssignmentSyntax): any {
- return node.update(
- this.visitToken(node.exportKeyword),
- this.visitToken(node.equalsToken),
- this.visitToken(node.identifier),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitMemberFunctionDeclaration(node: MemberFunctionDeclarationSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitToken(node.propertyName),
- this.visitNode(node.callSignature),
- node.block === null ? null : this.visitNode(node.block),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitMemberVariableDeclaration(node: MemberVariableDeclarationSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitNode(node.variableDeclarator),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitConstructorDeclaration(node: ConstructorDeclarationSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitToken(node.constructorKeyword),
- this.visitNode(node.callSignature),
- node.block === null ? null : this.visitNode(node.block),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitIndexMemberDeclaration(node: IndexMemberDeclarationSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitNode(node.indexSignature),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitGetAccessor(node: GetAccessorSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitToken(node.getKeyword),
- this.visitToken(node.propertyName),
- this.visitNode(node.callSignature),
- this.visitNode(node.block));
- }
-
- public visitSetAccessor(node: SetAccessorSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitToken(node.setKeyword),
- this.visitToken(node.propertyName),
- this.visitNode(node.callSignature),
- this.visitNode(node.block));
- }
-
- public visitPropertySignature(node: PropertySignatureSyntax): any {
- return node.update(
- this.visitToken(node.propertyName),
- node.questionToken === null ? null : this.visitToken(node.questionToken),
- node.typeAnnotation === null ? null : this.visitNode(node.typeAnnotation));
- }
-
- public visitCallSignature(node: CallSignatureSyntax): any {
- return node.update(
- node.typeParameterList === null ? null : this.visitNode(node.typeParameterList),
- this.visitNode(node.parameterList),
- node.typeAnnotation === null ? null : this.visitNode(node.typeAnnotation));
- }
-
- public visitConstructSignature(node: ConstructSignatureSyntax): any {
- return node.update(
- this.visitToken(node.newKeyword),
- this.visitNode(node.callSignature));
- }
-
- public visitIndexSignature(node: IndexSignatureSyntax): any {
- return node.update(
- this.visitToken(node.openBracketToken),
- this.visitSeparatedList(node.parameters),
- this.visitToken(node.closeBracketToken),
- node.typeAnnotation === null ? null : this.visitNode(node.typeAnnotation));
- }
-
- public visitMethodSignature(node: MethodSignatureSyntax): any {
- return node.update(
- this.visitToken(node.propertyName),
- node.questionToken === null ? null : this.visitToken(node.questionToken),
- this.visitNode(node.callSignature));
- }
-
- public visitBlock(node: BlockSyntax): any {
- return node.update(
- this.visitToken(node.openBraceToken),
- this.visitList(node.statements),
- this.visitToken(node.closeBraceToken));
- }
-
- public visitIfStatement(node: IfStatementSyntax): any {
- return node.update(
- this.visitToken(node.ifKeyword),
- this.visitToken(node.openParenToken),
- this.visitNodeOrToken(node.condition),
- this.visitToken(node.closeParenToken),
- this.visitNodeOrToken(node.statement),
- node.elseClause === null ? null : this.visitNode(node.elseClause));
- }
-
- public visitVariableStatement(node: VariableStatementSyntax): any {
- return node.update(
- this.visitList(node.modifiers),
- this.visitNode(node.variableDeclaration),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitExpressionStatement(node: ExpressionStatementSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.expression),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitReturnStatement(node: ReturnStatementSyntax): any {
- return node.update(
- this.visitToken(node.returnKeyword),
- node.expression === null ? null : this.visitNodeOrToken(node.expression),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitSwitchStatement(node: SwitchStatementSyntax): any {
- return node.update(
- this.visitToken(node.switchKeyword),
- this.visitToken(node.openParenToken),
- this.visitNodeOrToken(node.expression),
- this.visitToken(node.closeParenToken),
- this.visitToken(node.openBraceToken),
- this.visitList(node.switchClauses),
- this.visitToken(node.closeBraceToken));
- }
-
- public visitBreakStatement(node: BreakStatementSyntax): any {
- return node.update(
- this.visitToken(node.breakKeyword),
- node.identifier === null ? null : this.visitToken(node.identifier),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitContinueStatement(node: ContinueStatementSyntax): any {
- return node.update(
- this.visitToken(node.continueKeyword),
- node.identifier === null ? null : this.visitToken(node.identifier),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitForStatement(node: ForStatementSyntax): any {
- return node.update(
- this.visitToken(node.forKeyword),
- this.visitToken(node.openParenToken),
- node.variableDeclaration === null ? null : this.visitNode(node.variableDeclaration),
- node.initializer === null ? null : this.visitNodeOrToken(node.initializer),
- this.visitToken(node.firstSemicolonToken),
- node.condition === null ? null : this.visitNodeOrToken(node.condition),
- this.visitToken(node.secondSemicolonToken),
- node.incrementor === null ? null : this.visitNodeOrToken(node.incrementor),
- this.visitToken(node.closeParenToken),
- this.visitNodeOrToken(node.statement));
- }
-
- public visitForInStatement(node: ForInStatementSyntax): any {
- return node.update(
- this.visitToken(node.forKeyword),
- this.visitToken(node.openParenToken),
- node.variableDeclaration === null ? null : this.visitNode(node.variableDeclaration),
- node.left === null ? null : this.visitNodeOrToken(node.left),
- this.visitToken(node.inKeyword),
- this.visitNodeOrToken(node.expression),
- this.visitToken(node.closeParenToken),
- this.visitNodeOrToken(node.statement));
- }
-
- public visitEmptyStatement(node: EmptyStatementSyntax): any {
- return node.update(
- this.visitToken(node.semicolonToken));
- }
-
- public visitThrowStatement(node: ThrowStatementSyntax): any {
- return node.update(
- this.visitToken(node.throwKeyword),
- this.visitNodeOrToken(node.expression),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitWhileStatement(node: WhileStatementSyntax): any {
- return node.update(
- this.visitToken(node.whileKeyword),
- this.visitToken(node.openParenToken),
- this.visitNodeOrToken(node.condition),
- this.visitToken(node.closeParenToken),
- this.visitNodeOrToken(node.statement));
- }
-
- public visitTryStatement(node: TryStatementSyntax): any {
- return node.update(
- this.visitToken(node.tryKeyword),
- this.visitNode(node.block),
- node.catchClause === null ? null : this.visitNode(node.catchClause),
- node.finallyClause === null ? null : this.visitNode(node.finallyClause));
- }
-
- public visitLabeledStatement(node: LabeledStatementSyntax): any {
- return node.update(
- this.visitToken(node.identifier),
- this.visitToken(node.colonToken),
- this.visitNodeOrToken(node.statement));
- }
-
- public visitDoStatement(node: DoStatementSyntax): any {
- return node.update(
- this.visitToken(node.doKeyword),
- this.visitNodeOrToken(node.statement),
- this.visitToken(node.whileKeyword),
- this.visitToken(node.openParenToken),
- this.visitNodeOrToken(node.condition),
- this.visitToken(node.closeParenToken),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitDebuggerStatement(node: DebuggerStatementSyntax): any {
- return node.update(
- this.visitToken(node.debuggerKeyword),
- node.semicolonToken === null ? null : this.visitToken(node.semicolonToken));
- }
-
- public visitWithStatement(node: WithStatementSyntax): any {
- return node.update(
- this.visitToken(node.withKeyword),
- this.visitToken(node.openParenToken),
- this.visitNodeOrToken(node.condition),
- this.visitToken(node.closeParenToken),
- this.visitNodeOrToken(node.statement));
- }
-
- public visitPrefixUnaryExpression(node: PrefixUnaryExpressionSyntax): any {
- return node.update(
- this.visitToken(node.operatorToken),
- this.visitNodeOrToken(node.operand));
- }
-
- public visitDeleteExpression(node: DeleteExpressionSyntax): any {
- return node.update(
- this.visitToken(node.deleteKeyword),
- this.visitNodeOrToken(node.expression));
- }
-
- public visitTypeOfExpression(node: TypeOfExpressionSyntax): any {
- return node.update(
- this.visitToken(node.typeOfKeyword),
- this.visitNodeOrToken(node.expression));
- }
-
- public visitVoidExpression(node: VoidExpressionSyntax): any {
- return node.update(
- this.visitToken(node.voidKeyword),
- this.visitNodeOrToken(node.expression));
- }
-
- public visitConditionalExpression(node: ConditionalExpressionSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.condition),
- this.visitToken(node.questionToken),
- this.visitNodeOrToken(node.whenTrue),
- this.visitToken(node.colonToken),
- this.visitNodeOrToken(node.whenFalse));
- }
-
- public visitBinaryExpression(node: BinaryExpressionSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.left),
- this.visitToken(node.operatorToken),
- this.visitNodeOrToken(node.right));
- }
-
- public visitPostfixUnaryExpression(node: PostfixUnaryExpressionSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.operand),
- this.visitToken(node.operatorToken));
- }
-
- public visitMemberAccessExpression(node: MemberAccessExpressionSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.expression),
- this.visitToken(node.dotToken),
- this.visitToken(node.name));
- }
-
- public visitInvocationExpression(node: InvocationExpressionSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.expression),
- this.visitNode(node.argumentList));
- }
-
- public visitArrayLiteralExpression(node: ArrayLiteralExpressionSyntax): any {
- return node.update(
- this.visitToken(node.openBracketToken),
- this.visitSeparatedList(node.expressions),
- this.visitToken(node.closeBracketToken));
- }
-
- public visitObjectLiteralExpression(node: ObjectLiteralExpressionSyntax): any {
- return node.update(
- this.visitToken(node.openBraceToken),
- this.visitSeparatedList(node.propertyAssignments),
- this.visitToken(node.closeBraceToken));
- }
-
- public visitObjectCreationExpression(node: ObjectCreationExpressionSyntax): any {
- return node.update(
- this.visitToken(node.newKeyword),
- this.visitNodeOrToken(node.expression),
- node.argumentList === null ? null : this.visitNode(node.argumentList));
- }
-
- public visitParenthesizedExpression(node: ParenthesizedExpressionSyntax): any {
- return node.update(
- this.visitToken(node.openParenToken),
- this.visitNodeOrToken(node.expression),
- this.visitToken(node.closeParenToken));
- }
-
- public visitParenthesizedArrowFunctionExpression(node: ParenthesizedArrowFunctionExpressionSyntax): any {
- return node.update(
- this.visitNode(node.callSignature),
- this.visitToken(node.equalsGreaterThanToken),
- node.block === null ? null : this.visitNode(node.block),
- node.expression === null ? null : this.visitNodeOrToken(node.expression));
- }
-
- public visitSimpleArrowFunctionExpression(node: SimpleArrowFunctionExpressionSyntax): any {
- return node.update(
- this.visitNode(node.parameter),
- this.visitToken(node.equalsGreaterThanToken),
- node.block === null ? null : this.visitNode(node.block),
- node.expression === null ? null : this.visitNodeOrToken(node.expression));
- }
-
- public visitCastExpression(node: CastExpressionSyntax): any {
- return node.update(
- this.visitToken(node.lessThanToken),
- this.visitNodeOrToken(node.type),
- this.visitToken(node.greaterThanToken),
- this.visitNodeOrToken(node.expression));
- }
-
- public visitElementAccessExpression(node: ElementAccessExpressionSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.expression),
- this.visitToken(node.openBracketToken),
- this.visitNodeOrToken(node.argumentExpression),
- this.visitToken(node.closeBracketToken));
- }
-
- public visitFunctionExpression(node: FunctionExpressionSyntax): any {
- return node.update(
- this.visitToken(node.functionKeyword),
- node.identifier === null ? null : this.visitToken(node.identifier),
- this.visitNode(node.callSignature),
- this.visitNode(node.block));
- }
-
- public visitOmittedExpression(node: OmittedExpressionSyntax): any {
- return node;
- }
-
- public visitVariableDeclaration(node: VariableDeclarationSyntax): any {
- return node.update(
- this.visitToken(node.varKeyword),
- this.visitSeparatedList(node.variableDeclarators));
- }
-
- public visitVariableDeclarator(node: VariableDeclaratorSyntax): any {
- return node.update(
- this.visitToken(node.propertyName),
- node.typeAnnotation === null ? null : this.visitNode(node.typeAnnotation),
- node.equalsValueClause === null ? null : this.visitNode(node.equalsValueClause));
- }
-
- public visitArgumentList(node: ArgumentListSyntax): any {
- return node.update(
- node.typeArgumentList === null ? null : this.visitNode(node.typeArgumentList),
- this.visitToken(node.openParenToken),
- this.visitSeparatedList(node.arguments),
- this.visitToken(node.closeParenToken));
- }
-
- public visitParameterList(node: ParameterListSyntax): any {
- return node.update(
- this.visitToken(node.openParenToken),
- this.visitSeparatedList(node.parameters),
- this.visitToken(node.closeParenToken));
- }
-
- public visitTypeArgumentList(node: TypeArgumentListSyntax): any {
- return node.update(
- this.visitToken(node.lessThanToken),
- this.visitSeparatedList(node.typeArguments),
- this.visitToken(node.greaterThanToken));
- }
-
- public visitTypeParameterList(node: TypeParameterListSyntax): any {
- return node.update(
- this.visitToken(node.lessThanToken),
- this.visitSeparatedList(node.typeParameters),
- this.visitToken(node.greaterThanToken));
- }
-
- public visitHeritageClause(node: HeritageClauseSyntax): any {
- return node.update(
- this.visitToken(node.extendsOrImplementsKeyword),
- this.visitSeparatedList(node.typeNames));
- }
-
- public visitEqualsValueClause(node: EqualsValueClauseSyntax): any {
- return node.update(
- this.visitToken(node.equalsToken),
- this.visitNodeOrToken(node.value));
- }
-
- public visitCaseSwitchClause(node: CaseSwitchClauseSyntax): any {
- return node.update(
- this.visitToken(node.caseKeyword),
- this.visitNodeOrToken(node.expression),
- this.visitToken(node.colonToken),
- this.visitList(node.statements));
- }
-
- public visitDefaultSwitchClause(node: DefaultSwitchClauseSyntax): any {
- return node.update(
- this.visitToken(node.defaultKeyword),
- this.visitToken(node.colonToken),
- this.visitList(node.statements));
- }
-
- public visitElseClause(node: ElseClauseSyntax): any {
- return node.update(
- this.visitToken(node.elseKeyword),
- this.visitNodeOrToken(node.statement));
- }
-
- public visitCatchClause(node: CatchClauseSyntax): any {
- return node.update(
- this.visitToken(node.catchKeyword),
- this.visitToken(node.openParenToken),
- this.visitToken(node.identifier),
- node.typeAnnotation === null ? null : this.visitNode(node.typeAnnotation),
- this.visitToken(node.closeParenToken),
- this.visitNode(node.block));
- }
-
- public visitFinallyClause(node: FinallyClauseSyntax): any {
- return node.update(
- this.visitToken(node.finallyKeyword),
- this.visitNode(node.block));
- }
-
- public visitTypeParameter(node: TypeParameterSyntax): any {
- return node.update(
- this.visitToken(node.identifier),
- node.constraint === null ? null : this.visitNode(node.constraint));
- }
-
- public visitConstraint(node: ConstraintSyntax): any {
- return node.update(
- this.visitToken(node.extendsKeyword),
- this.visitNodeOrToken(node.typeOrExpression));
- }
-
- public visitSimplePropertyAssignment(node: SimplePropertyAssignmentSyntax): any {
- return node.update(
- this.visitToken(node.propertyName),
- this.visitToken(node.colonToken),
- this.visitNodeOrToken(node.expression));
- }
-
- public visitFunctionPropertyAssignment(node: FunctionPropertyAssignmentSyntax): any {
- return node.update(
- this.visitToken(node.propertyName),
- this.visitNode(node.callSignature),
- this.visitNode(node.block));
- }
-
- public visitParameter(node: ParameterSyntax): any {
- return node.update(
- node.dotDotDotToken === null ? null : this.visitToken(node.dotDotDotToken),
- this.visitList(node.modifiers),
- this.visitToken(node.identifier),
- node.questionToken === null ? null : this.visitToken(node.questionToken),
- node.typeAnnotation === null ? null : this.visitNode(node.typeAnnotation),
- node.equalsValueClause === null ? null : this.visitNode(node.equalsValueClause));
- }
-
- public visitEnumElement(node: EnumElementSyntax): any {
- return node.update(
- this.visitToken(node.propertyName),
- node.equalsValueClause === null ? null : this.visitNode(node.equalsValueClause));
- }
-
- public visitTypeAnnotation(node: TypeAnnotationSyntax): any {
- return node.update(
- this.visitToken(node.colonToken),
- this.visitNodeOrToken(node.type));
- }
-
- public visitExternalModuleReference(node: ExternalModuleReferenceSyntax): any {
- return node.update(
- this.visitToken(node.requireKeyword),
- this.visitToken(node.openParenToken),
- this.visitToken(node.stringLiteral),
- this.visitToken(node.closeParenToken));
- }
-
- public visitModuleNameModuleReference(node: ModuleNameModuleReferenceSyntax): any {
- return node.update(
- this.visitNodeOrToken(node.moduleName));
- }
- }
-}
\ No newline at end of file
diff --git a/src/services/syntaxUtilities.generated.ts b/src/services/syntaxUtilities.generated.ts
deleted file mode 100644
index 9ec244141fc..00000000000
--- a/src/services/syntaxUtilities.generated.ts
+++ /dev/null
@@ -1,395 +0,0 @@
-module TypeScript {
- function isSeparatedListTypeScriptSpecific(list: ISyntaxNodeOrToken[]): boolean {
- for (var i = 0, n = childCount(list); i < n; i++) {
- if (isTypeScriptSpecific(childAt(list, i))) {
- return true;
- }
- }
-
- return false;
- }
-
- function isListTypeScriptSpecific(list: ISyntaxNodeOrToken[]): boolean {
- for (var i = 0, n = list.length; i < n; i++) {
- if (isTypeScriptSpecific(list[i])) {
- return true;
- }
- }
-
- return false;
- }
-
- export function isTypeScriptSpecific(element: ISyntaxElement): boolean {
- if (element === null) { return false; }
- if (isToken(element)) { return false; }
- if (isList(element)) { return isListTypeScriptSpecific(element); }
- if (isSeparatedList(element)) { return isSeparatedListTypeScriptSpecific(element); }
-
- switch (element.kind()) {
- case SyntaxKind.QualifiedName:
- case SyntaxKind.ObjectType:
- case SyntaxKind.FunctionType:
- case SyntaxKind.ArrayType:
- case SyntaxKind.ConstructorType:
- case SyntaxKind.GenericType:
- case SyntaxKind.TypeQuery:
- case SyntaxKind.InterfaceDeclaration:
- case SyntaxKind.ModuleDeclaration:
- case SyntaxKind.ClassDeclaration:
- case SyntaxKind.EnumDeclaration:
- case SyntaxKind.ImportDeclaration:
- case SyntaxKind.ExportAssignment:
- case SyntaxKind.MemberFunctionDeclaration:
- case SyntaxKind.MemberVariableDeclaration:
- case SyntaxKind.ConstructorDeclaration:
- case SyntaxKind.IndexMemberDeclaration:
- case SyntaxKind.SetAccessor:
- case SyntaxKind.PropertySignature:
- case SyntaxKind.ConstructSignature:
- case SyntaxKind.IndexSignature:
- case SyntaxKind.ParenthesizedArrowFunctionExpression:
- case SyntaxKind.SimpleArrowFunctionExpression:
- case SyntaxKind.CastExpression:
- case SyntaxKind.TypeArgumentList:
- case SyntaxKind.TypeParameterList:
- case SyntaxKind.ExtendsHeritageClause:
- case SyntaxKind.ImplementsHeritageClause:
- case SyntaxKind.TypeParameter:
- case SyntaxKind.Constraint:
- case SyntaxKind.TypeAnnotation:
- case SyntaxKind.ExternalModuleReference:
- case SyntaxKind.ModuleNameModuleReference:
- return true;
- case SyntaxKind.BreakStatement:
- case SyntaxKind.ContinueStatement:
- case SyntaxKind.EmptyStatement:
- case SyntaxKind.DebuggerStatement:
- case SyntaxKind.OmittedExpression:
- return false;
- case SyntaxKind.SourceUnit:
- return isSourceUnitTypeScriptSpecific(element);
- case SyntaxKind.FunctionDeclaration:
- return isFunctionDeclarationTypeScriptSpecific(element);
- case SyntaxKind.GetAccessor:
- return isGetAccessorTypeScriptSpecific(element);
- case SyntaxKind.CallSignature:
- return isCallSignatureTypeScriptSpecific(element);
- case SyntaxKind.MethodSignature:
- return isMethodSignatureTypeScriptSpecific(element);
- case SyntaxKind.Block:
- return isBlockTypeScriptSpecific(element);
- case SyntaxKind.IfStatement:
- return isIfStatementTypeScriptSpecific(element);
- case SyntaxKind.VariableStatement:
- return isVariableStatementTypeScriptSpecific(element);
- case SyntaxKind.ExpressionStatement:
- return isExpressionStatementTypeScriptSpecific(element);
- case SyntaxKind.ReturnStatement:
- return isReturnStatementTypeScriptSpecific(element);
- case SyntaxKind.SwitchStatement:
- return isSwitchStatementTypeScriptSpecific(element);
- case SyntaxKind.ForStatement:
- return isForStatementTypeScriptSpecific(element);
- case SyntaxKind.ForInStatement:
- return isForInStatementTypeScriptSpecific(element);
- case SyntaxKind.ThrowStatement:
- return isThrowStatementTypeScriptSpecific(element);
- case SyntaxKind.WhileStatement:
- return isWhileStatementTypeScriptSpecific(element);
- case SyntaxKind.TryStatement:
- return isTryStatementTypeScriptSpecific(element);
- case SyntaxKind.LabeledStatement:
- return isLabeledStatementTypeScriptSpecific(element);
- case SyntaxKind.DoStatement:
- return isDoStatementTypeScriptSpecific(element);
- case SyntaxKind.WithStatement:
- return isWithStatementTypeScriptSpecific(element);
- case SyntaxKind.PreIncrementExpression: case SyntaxKind.PreDecrementExpression: case SyntaxKind.PlusExpression: case SyntaxKind.NegateExpression: case SyntaxKind.BitwiseNotExpression: case SyntaxKind.LogicalNotExpression:
- return isPrefixUnaryExpressionTypeScriptSpecific(element);
- case SyntaxKind.DeleteExpression:
- return isDeleteExpressionTypeScriptSpecific(element);
- case SyntaxKind.TypeOfExpression:
- return isTypeOfExpressionTypeScriptSpecific(element);
- case SyntaxKind.VoidExpression:
- return isVoidExpressionTypeScriptSpecific(element);
- case SyntaxKind.ConditionalExpression:
- return isConditionalExpressionTypeScriptSpecific(element);
- case SyntaxKind.MultiplyExpression: case SyntaxKind.DivideExpression: case SyntaxKind.ModuloExpression: case SyntaxKind.AddExpression: case SyntaxKind.SubtractExpression: case SyntaxKind.LeftShiftExpression: case SyntaxKind.SignedRightShiftExpression: case SyntaxKind.UnsignedRightShiftExpression: case SyntaxKind.LessThanExpression: case SyntaxKind.GreaterThanExpression: case SyntaxKind.LessThanOrEqualExpression: case SyntaxKind.GreaterThanOrEqualExpression: case SyntaxKind.InstanceOfExpression: case SyntaxKind.InExpression: case SyntaxKind.EqualsWithTypeConversionExpression: case SyntaxKind.NotEqualsWithTypeConversionExpression: case SyntaxKind.EqualsExpression: case SyntaxKind.NotEqualsExpression: case SyntaxKind.BitwiseAndExpression: case SyntaxKind.BitwiseExclusiveOrExpression: case SyntaxKind.BitwiseOrExpression: case SyntaxKind.LogicalAndExpression: case SyntaxKind.LogicalOrExpression: case SyntaxKind.OrAssignmentExpression: case SyntaxKind.AndAssignmentExpression: case SyntaxKind.ExclusiveOrAssignmentExpression: case SyntaxKind.LeftShiftAssignmentExpression: case SyntaxKind.SignedRightShiftAssignmentExpression: case SyntaxKind.UnsignedRightShiftAssignmentExpression: case SyntaxKind.AddAssignmentExpression: case SyntaxKind.SubtractAssignmentExpression: case SyntaxKind.MultiplyAssignmentExpression: case SyntaxKind.DivideAssignmentExpression: case SyntaxKind.ModuloAssignmentExpression: case SyntaxKind.AssignmentExpression: case SyntaxKind.CommaExpression:
- return isBinaryExpressionTypeScriptSpecific(element);
- case SyntaxKind.PostIncrementExpression: case SyntaxKind.PostDecrementExpression:
- return isPostfixUnaryExpressionTypeScriptSpecific(element);
- case SyntaxKind.MemberAccessExpression:
- return isMemberAccessExpressionTypeScriptSpecific(element);
- case SyntaxKind.InvocationExpression:
- return isInvocationExpressionTypeScriptSpecific(element);
- case SyntaxKind.ArrayLiteralExpression:
- return isArrayLiteralExpressionTypeScriptSpecific(element);
- case SyntaxKind.ObjectLiteralExpression:
- return isObjectLiteralExpressionTypeScriptSpecific(element);
- case SyntaxKind.ObjectCreationExpression:
- return isObjectCreationExpressionTypeScriptSpecific(element);
- case SyntaxKind.ParenthesizedExpression:
- return isParenthesizedExpressionTypeScriptSpecific(element);
- case SyntaxKind.ElementAccessExpression:
- return isElementAccessExpressionTypeScriptSpecific(element);
- case SyntaxKind.FunctionExpression:
- return isFunctionExpressionTypeScriptSpecific(element);
- case SyntaxKind.VariableDeclaration:
- return isVariableDeclarationTypeScriptSpecific(element);
- case SyntaxKind.VariableDeclarator:
- return isVariableDeclaratorTypeScriptSpecific(element);
- case SyntaxKind.ArgumentList:
- return isArgumentListTypeScriptSpecific(element);
- case SyntaxKind.ParameterList:
- return isParameterListTypeScriptSpecific(element);
- case SyntaxKind.EqualsValueClause:
- return isEqualsValueClauseTypeScriptSpecific(element);
- case SyntaxKind.CaseSwitchClause:
- return isCaseSwitchClauseTypeScriptSpecific(element);
- case SyntaxKind.DefaultSwitchClause:
- return isDefaultSwitchClauseTypeScriptSpecific(element);
- case SyntaxKind.ElseClause:
- return isElseClauseTypeScriptSpecific(element);
- case SyntaxKind.CatchClause:
- return isCatchClauseTypeScriptSpecific(element);
- case SyntaxKind.FinallyClause:
- return isFinallyClauseTypeScriptSpecific(element);
- case SyntaxKind.SimplePropertyAssignment:
- return isSimplePropertyAssignmentTypeScriptSpecific(element);
- case SyntaxKind.FunctionPropertyAssignment:
- return isFunctionPropertyAssignmentTypeScriptSpecific(element);
- case SyntaxKind.Parameter:
- return isParameterTypeScriptSpecific(element);
- case SyntaxKind.EnumElement:
- return isEnumElementTypeScriptSpecific(element);
- }
- }
-
- function isSourceUnitTypeScriptSpecific(node: SourceUnitSyntax): boolean {
- return isTypeScriptSpecific(node.moduleElements);
- }
-
- function isFunctionDeclarationTypeScriptSpecific(node: FunctionDeclarationSyntax): boolean {
- return node.modifiers.length > 0 ||
- isTypeScriptSpecific(node.callSignature) ||
- isTypeScriptSpecific(node.block);
- }
-
- function isGetAccessorTypeScriptSpecific(node: GetAccessorSyntax): boolean {
- return node.modifiers.length > 0 ||
- isTypeScriptSpecific(node.callSignature) ||
- isTypeScriptSpecific(node.block);
- }
-
- function isCallSignatureTypeScriptSpecific(node: CallSignatureSyntax): boolean {
- return node.typeParameterList !== null ||
- isTypeScriptSpecific(node.parameterList) ||
- node.typeAnnotation !== null;
- }
-
- function isMethodSignatureTypeScriptSpecific(node: MethodSignatureSyntax): boolean {
- return isTypeScriptSpecific(node.callSignature);
- }
-
- function isBlockTypeScriptSpecific(node: BlockSyntax): boolean {
- return isTypeScriptSpecific(node.statements);
- }
-
- function isIfStatementTypeScriptSpecific(node: IfStatementSyntax): boolean {
- return isTypeScriptSpecific(node.condition) ||
- isTypeScriptSpecific(node.statement) ||
- isTypeScriptSpecific(node.elseClause);
- }
-
- function isVariableStatementTypeScriptSpecific(node: VariableStatementSyntax): boolean {
- return node.modifiers.length > 0 ||
- isTypeScriptSpecific(node.variableDeclaration);
- }
-
- function isExpressionStatementTypeScriptSpecific(node: ExpressionStatementSyntax): boolean {
- return isTypeScriptSpecific(node.expression);
- }
-
- function isReturnStatementTypeScriptSpecific(node: ReturnStatementSyntax): boolean {
- return isTypeScriptSpecific(node.expression);
- }
-
- function isSwitchStatementTypeScriptSpecific(node: SwitchStatementSyntax): boolean {
- return isTypeScriptSpecific(node.expression) ||
- isTypeScriptSpecific(node.switchClauses);
- }
-
- function isForStatementTypeScriptSpecific(node: ForStatementSyntax): boolean {
- return isTypeScriptSpecific(node.variableDeclaration) ||
- isTypeScriptSpecific(node.initializer) ||
- isTypeScriptSpecific(node.condition) ||
- isTypeScriptSpecific(node.incrementor) ||
- isTypeScriptSpecific(node.statement);
- }
-
- function isForInStatementTypeScriptSpecific(node: ForInStatementSyntax): boolean {
- return isTypeScriptSpecific(node.variableDeclaration) ||
- isTypeScriptSpecific(node.left) ||
- isTypeScriptSpecific(node.expression) ||
- isTypeScriptSpecific(node.statement);
- }
-
- function isThrowStatementTypeScriptSpecific(node: ThrowStatementSyntax): boolean {
- return isTypeScriptSpecific(node.expression);
- }
-
- function isWhileStatementTypeScriptSpecific(node: WhileStatementSyntax): boolean {
- return isTypeScriptSpecific(node.condition) ||
- isTypeScriptSpecific(node.statement);
- }
-
- function isTryStatementTypeScriptSpecific(node: TryStatementSyntax): boolean {
- return isTypeScriptSpecific(node.block) ||
- isTypeScriptSpecific(node.catchClause) ||
- isTypeScriptSpecific(node.finallyClause);
- }
-
- function isLabeledStatementTypeScriptSpecific(node: LabeledStatementSyntax): boolean {
- return isTypeScriptSpecific(node.statement);
- }
-
- function isDoStatementTypeScriptSpecific(node: DoStatementSyntax): boolean {
- return isTypeScriptSpecific(node.statement) ||
- isTypeScriptSpecific(node.condition);
- }
-
- function isWithStatementTypeScriptSpecific(node: WithStatementSyntax): boolean {
- return isTypeScriptSpecific(node.condition) ||
- isTypeScriptSpecific(node.statement);
- }
-
- function isPrefixUnaryExpressionTypeScriptSpecific(node: PrefixUnaryExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.operand);
- }
-
- function isDeleteExpressionTypeScriptSpecific(node: DeleteExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.expression);
- }
-
- function isTypeOfExpressionTypeScriptSpecific(node: TypeOfExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.expression);
- }
-
- function isVoidExpressionTypeScriptSpecific(node: VoidExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.expression);
- }
-
- function isConditionalExpressionTypeScriptSpecific(node: ConditionalExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.condition) ||
- isTypeScriptSpecific(node.whenTrue) ||
- isTypeScriptSpecific(node.whenFalse);
- }
-
- function isBinaryExpressionTypeScriptSpecific(node: BinaryExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.left) ||
- isTypeScriptSpecific(node.right);
- }
-
- function isPostfixUnaryExpressionTypeScriptSpecific(node: PostfixUnaryExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.operand);
- }
-
- function isMemberAccessExpressionTypeScriptSpecific(node: MemberAccessExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.expression);
- }
-
- function isInvocationExpressionTypeScriptSpecific(node: InvocationExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.expression) ||
- isTypeScriptSpecific(node.argumentList);
- }
-
- function isArrayLiteralExpressionTypeScriptSpecific(node: ArrayLiteralExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.expressions);
- }
-
- function isObjectLiteralExpressionTypeScriptSpecific(node: ObjectLiteralExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.propertyAssignments);
- }
-
- function isObjectCreationExpressionTypeScriptSpecific(node: ObjectCreationExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.expression) ||
- isTypeScriptSpecific(node.argumentList);
- }
-
- function isParenthesizedExpressionTypeScriptSpecific(node: ParenthesizedExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.expression);
- }
-
- function isElementAccessExpressionTypeScriptSpecific(node: ElementAccessExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.expression) ||
- isTypeScriptSpecific(node.argumentExpression);
- }
-
- function isFunctionExpressionTypeScriptSpecific(node: FunctionExpressionSyntax): boolean {
- return isTypeScriptSpecific(node.callSignature) ||
- isTypeScriptSpecific(node.block);
- }
-
- function isVariableDeclarationTypeScriptSpecific(node: VariableDeclarationSyntax): boolean {
- return isTypeScriptSpecific(node.variableDeclarators);
- }
-
- function isVariableDeclaratorTypeScriptSpecific(node: VariableDeclaratorSyntax): boolean {
- return node.typeAnnotation !== null ||
- isTypeScriptSpecific(node.equalsValueClause);
- }
-
- function isArgumentListTypeScriptSpecific(node: ArgumentListSyntax): boolean {
- return isTypeScriptSpecific(node.typeArgumentList) ||
- isTypeScriptSpecific(node.arguments);
- }
-
- function isParameterListTypeScriptSpecific(node: ParameterListSyntax): boolean {
- return isTypeScriptSpecific(node.parameters);
- }
-
- function isEqualsValueClauseTypeScriptSpecific(node: EqualsValueClauseSyntax): boolean {
- return isTypeScriptSpecific(node.value);
- }
-
- function isCaseSwitchClauseTypeScriptSpecific(node: CaseSwitchClauseSyntax): boolean {
- return isTypeScriptSpecific(node.expression) ||
- isTypeScriptSpecific(node.statements);
- }
-
- function isDefaultSwitchClauseTypeScriptSpecific(node: DefaultSwitchClauseSyntax): boolean {
- return isTypeScriptSpecific(node.statements);
- }
-
- function isElseClauseTypeScriptSpecific(node: ElseClauseSyntax): boolean {
- return isTypeScriptSpecific(node.statement);
- }
-
- function isCatchClauseTypeScriptSpecific(node: CatchClauseSyntax): boolean {
- return isTypeScriptSpecific(node.typeAnnotation) ||
- isTypeScriptSpecific(node.block);
- }
-
- function isFinallyClauseTypeScriptSpecific(node: FinallyClauseSyntax): boolean {
- return isTypeScriptSpecific(node.block);
- }
-
- function isSimplePropertyAssignmentTypeScriptSpecific(node: SimplePropertyAssignmentSyntax): boolean {
- return isTypeScriptSpecific(node.expression);
- }
-
- function isFunctionPropertyAssignmentTypeScriptSpecific(node: FunctionPropertyAssignmentSyntax): boolean {
- return isTypeScriptSpecific(node.callSignature) ||
- isTypeScriptSpecific(node.block);
- }
-
- function isParameterTypeScriptSpecific(node: ParameterSyntax): boolean {
- return isTypeScriptSpecific(node.modifiers) ||
- node.typeAnnotation !== null ||
- node.equalsValueClause !== null;
- }
-
- function isEnumElementTypeScriptSpecific(node: EnumElementSyntax): boolean {
- return isTypeScriptSpecific(node.equalsValueClause);
- }
-}
\ No newline at end of file