From eb2abf22ff3c13ab708e6079481e584447496cf1 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Sun, 10 Jun 2018 15:09:48 -0700 Subject: [PATCH] Should not have existed --- src/built/local/cancellationToken.js | 57 - src/built/local/cancellationToken.js.map | 1 - src/built/local/harness.d.ts | 2223 ---- src/built/local/harness.js | 11641 --------------------- src/built/local/harness.js.map | 1 - 5 files changed, 13923 deletions(-) delete mode 100644 src/built/local/cancellationToken.js delete mode 100644 src/built/local/cancellationToken.js.map delete mode 100644 src/built/local/harness.d.ts delete mode 100644 src/built/local/harness.js delete mode 100644 src/built/local/harness.js.map diff --git a/src/built/local/cancellationToken.js b/src/built/local/cancellationToken.js deleted file mode 100644 index 5ead504797b..00000000000 --- a/src/built/local/cancellationToken.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -var fs = require("fs"); -function pipeExists(name) { - try { - fs.statSync(name); - return true; - } - catch (e) { - return false; - } -} -function createCancellationToken(args) { - var cancellationPipeName; - for (var i = 0; i < args.length - 1; i++) { - if (args[i] === "--cancellationPipeName") { - cancellationPipeName = args[i + 1]; - break; - } - } - if (!cancellationPipeName) { - return { - isCancellationRequested: function () { return false; }, - setRequest: function (_requestId) { return void 0; }, - resetRequest: function (_requestId) { return void 0; } - }; - } - if (cancellationPipeName.charAt(cancellationPipeName.length - 1) === "*") { - var namePrefix_1 = cancellationPipeName.slice(0, -1); - if (namePrefix_1.length === 0 || namePrefix_1.indexOf("*") >= 0) { - throw new Error("Invalid name for template cancellation pipe: it should have length greater than 2 characters and contain only one '*'."); - } - var perRequestPipeName_1; - var currentRequestId_1; - return { - isCancellationRequested: function () { return perRequestPipeName_1 !== undefined && pipeExists(perRequestPipeName_1); }, - setRequest: function (requestId) { - currentRequestId_1 = requestId; - perRequestPipeName_1 = namePrefix_1 + requestId; - }, - resetRequest: function (requestId) { - if (currentRequestId_1 !== requestId) { - throw new Error("Mismatched request id, expected " + currentRequestId_1 + ", actual " + requestId); - } - perRequestPipeName_1 = undefined; - } - }; - } - else { - return { - isCancellationRequested: function () { return pipeExists(cancellationPipeName); }, - setRequest: function (_requestId) { return void 0; }, - resetRequest: function (_requestId) { return void 0; } - }; - } -} -module.exports = createCancellationToken; -//# sourceMappingURL=cancellationToken.js.map \ No newline at end of file diff --git a/src/built/local/cancellationToken.js.map b/src/built/local/cancellationToken.js.map deleted file mode 100644 index d8f1300682a..00000000000 --- a/src/built/local/cancellationToken.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cancellationToken.js","sourceRoot":"","sources":["../../cancellationToken/cancellationToken.ts"],"names":[],"mappings":";AAEA,uBAA0B;AAQ1B,oBAAoB,IAAY;IAC5B,IAAI;QACA,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;KACf;IACD,OAAO,CAAC,EAAE;QACN,OAAO,KAAK,CAAC;KAChB;AACL,CAAC;AAED,iCAAiC,IAAc;IAC3C,IAAI,oBAAwC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,wBAAwB,EAAE;YACtC,oBAAoB,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,MAAM;SACT;KACJ;IACD,IAAI,CAAC,oBAAoB,EAAE;QACvB,OAAO;YACH,uBAAuB,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;YACpC,UAAU,EAAE,UAAC,UAAkB,IAAW,OAAA,KAAK,CAAC,EAAN,CAAM;YAChD,YAAY,EAAE,UAAC,UAAkB,IAAW,OAAA,KAAK,CAAC,EAAN,CAAM;SACrD,CAAC;KACL;IAMD,IAAI,oBAAoB,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QACtE,IAAM,YAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,YAAU,CAAC,MAAM,KAAK,CAAC,IAAI,YAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACzD,MAAM,IAAI,KAAK,CAAC,wHAAwH,CAAC,CAAC;SAC7I;QACD,IAAI,oBAAsC,CAAC;QAC3C,IAAI,kBAAwB,CAAC;QAC7B,OAAO;YACH,uBAAuB,EAAE,cAAM,OAAA,oBAAkB,KAAK,SAAS,IAAI,UAAU,CAAC,oBAAkB,CAAC,EAAlE,CAAkE;YACjG,UAAU,YAAC,SAAiB;gBACxB,kBAAgB,GAAG,SAAS,CAAC;gBAC7B,oBAAkB,GAAG,YAAU,GAAG,SAAS,CAAC;YAChD,CAAC;YACD,YAAY,YAAC,SAAiB;gBAC1B,IAAI,kBAAgB,KAAK,SAAS,EAAE;oBAChC,MAAM,IAAI,KAAK,CAAC,qCAAmC,kBAAgB,iBAAY,SAAW,CAAC,CAAC;iBAC/F;gBACD,oBAAkB,GAAG,SAAS,CAAC;YACnC,CAAC;SACJ,CAAC;KACL;SACI;QACD,OAAO;YACH,uBAAuB,EAAE,cAAM,OAAA,UAAU,CAAC,oBAAqB,CAAC,EAAjC,CAAiC;YAChE,UAAU,EAAE,UAAC,UAAkB,IAAW,OAAA,KAAK,CAAC,EAAN,CAAM;YAChD,YAAY,EAAE,UAAC,UAAkB,IAAW,OAAA,KAAK,CAAC,EAAN,CAAM;SACrD,CAAC;KACL;AACL,CAAC;AACD,iBAAS,uBAAuB,CAAC"} \ No newline at end of file diff --git a/src/built/local/harness.d.ts b/src/built/local/harness.d.ts deleted file mode 100644 index 04c03214347..00000000000 --- a/src/built/local/harness.d.ts +++ /dev/null @@ -1,2223 +0,0 @@ -/// -/// -declare namespace collections { - interface SortOptions { - comparer: (a: T, b: T) => number; - sort: "insertion" | "comparison"; - } - class SortedMap { - private _comparer; - private _keys; - private _values; - private _order; - private _version; - private _copyOnWrite; - constructor(comparer: ((a: K, b: K) => number) | SortOptions, iterable?: Iterable<[K, V]>); - readonly size: number; - readonly comparer: (a: K, b: K) => number; - readonly [Symbol.toStringTag]: string; - has(key: K): boolean; - get(key: K): V | undefined; - set(key: K, value: V): this; - delete(key: K): boolean; - clear(): void; - forEach(callback: (value: V, key: K, collection: this) => void, thisArg?: any): void; - keys(): IterableIterator; - values(): IterableIterator; - entries(): IterableIterator<[K, V]>; - [Symbol.iterator](): IterableIterator<[K, V]>; - private writePreamble; - private writePostScript; - private getIterationOrder; - } - function insertAt(array: T[], index: number, value: T): void; - function getIterator(iterable: Iterable): Iterator; - function nextResult(iterator: Iterator): IteratorResult | undefined; - function closeIterator(iterator: Iterator): void; - /** - * A collection of metadata that supports inheritance. - */ - class Metadata { - private static readonly _undefinedValue; - private _parent; - private _map; - private _version; - private _size; - private _parentVersion; - constructor(parent?: Metadata); - readonly size: number; - readonly parent: Metadata | undefined; - has(key: string): boolean; - get(key: string): any; - set(key: string, value: any): this; - delete(key: string): boolean; - clear(): void; - forEach(callback: (value: any, key: string, map: this) => void): void; - private static _escapeKey; - private static _unescapeKey; - } -} -/** - * Common utilities - */ -declare namespace utils { - function removeTestPathPrefixes(text: string, retainTrailingDirectorySeparator?: boolean): string; - /** - * Removes leading indentation from a template literal string. - */ - function dedent(array: TemplateStringsArray, ...args: any[]): string; - function toUtf8(text: string): string; - function getByteOrderMarkLength(text: string): number; - function removeByteOrderMark(text: string): string; - function addUTF8ByteOrderMark(text: string): string; -} -declare namespace documents { - class TextDocument { - readonly meta: Map; - readonly file: string; - readonly text: string; - private _lineStarts; - private _testFile; - constructor(file: string, text: string, meta?: Map); - readonly lineStarts: ReadonlyArray; - static fromTestFile(file: Harness.Compiler.TestFile): TextDocument; - asTestFile(): Harness.Compiler.TestFile; - } - interface RawSourceMap { - version: number; - file: string; - sourceRoot?: string; - sources: string[]; - sourcesContent?: string[]; - names: string[]; - mappings: string; - } - interface Mapping { - mappingIndex: number; - emittedLine: number; - emittedColumn: number; - sourceIndex: number; - sourceLine: number; - sourceColumn: number; - nameIndex?: number; - } - class SourceMap { - readonly raw: RawSourceMap; - readonly mapFile: string | undefined; - readonly version: number; - readonly file: string; - readonly sourceRoot: string | undefined; - readonly sources: ReadonlyArray; - readonly sourcesContent: ReadonlyArray | undefined; - readonly mappings: ReadonlyArray; - readonly names: ReadonlyArray | undefined; - private static readonly _mappingRegExp; - private static readonly _sourceMappingURLRegExp; - private static readonly _dataURLRegExp; - private static readonly _base64Chars; - private _emittedLineMappings; - private _sourceLineMappings; - constructor(mapFile: string | undefined, data: string | RawSourceMap); - static getUrl(text: string): string | undefined; - static fromUrl(url: string): SourceMap | undefined; - static fromSource(text: string): SourceMap | undefined; - getMappingsForEmittedLine(emittedLine: number): ReadonlyArray | undefined; - getMappingsForSourceLine(sourceIndex: number, sourceLine: number): ReadonlyArray | undefined; - private static _decodeVLQ; - } -} -declare namespace vpath { - export import sep = ts.directorySeparator; - export import normalizeSeparators = ts.normalizeSlashes; - export import isAbsolute = ts.isRootedDiskPath; - export import isRoot = ts.isDiskPathRoot; - export import hasTrailingSeparator = ts.hasTrailingDirectorySeparator; - export import addTrailingSeparator = ts.ensureTrailingDirectorySeparator; - export import removeTrailingSeparator = ts.removeTrailingDirectorySeparator; - export import normalize = ts.normalizePath; - export import combine = ts.combinePaths; - export import parse = ts.getPathComponents; - export import reduce = ts.reducePathComponents; - export import format = ts.getPathFromPathComponents; - export import resolve = ts.resolvePath; - export import compare = ts.comparePaths; - export import compareCaseSensitive = ts.comparePathsCaseSensitive; - export import compareCaseInsensitive = ts.comparePathsCaseInsensitive; - export import dirname = ts.getDirectoryPath; - export import basename = ts.getBaseFileName; - export import extname = ts.getAnyExtensionFromPath; - export import relative = ts.getRelativePathFromDirectory; - export import beneath = ts.containsPath; - export import changeExtension = ts.changeAnyExtension; - export import isTypeScript = ts.hasTypeScriptFileExtension; - export import isJavaScript = ts.hasJavaScriptFileExtension; - const enum ValidationFlags { - None = 0, - RequireRoot = 1, - RequireDirname = 2, - RequireBasename = 4, - RequireExtname = 8, - RequireTrailingSeparator = 16, - AllowRoot = 32, - AllowDirname = 64, - AllowBasename = 128, - AllowExtname = 256, - AllowTrailingSeparator = 512, - AllowNavigation = 1024, - AllowWildcard = 2048, - /** Path must be a valid directory root */ - Root = 545, - /** Path must be a absolute */ - Absolute = 2017, - /** Path may be relative or absolute */ - RelativeOrAbsolute = 2016, - /** Path may only be a filename */ - Basename = 260 - } - function validate(path: string, flags?: ValidationFlags): string; - function isDeclaration(path: string): boolean; - function isSourceMap(path: string): boolean; - function isJavaScriptSourceMap(path: string): boolean; - function isJson(path: string): boolean; - function isDefaultLibrary(path: string): boolean; - function isTsConfigFile(path: string): boolean; -} -declare namespace vfs { - /** - * Posix-style path to the TypeScript compiler build outputs (including tsc.js, lib.d.ts, etc.) - */ - const builtFolder = "/.ts"; - /** - * Posix-style path to additional mountable folders (./tests/projects in this repo) - */ - const projectsFolder = "/.projects"; - /** - * Posix-style path to additional test libraries - */ - const testLibFolder = "/.lib"; - /** - * Posix-style path to sources under test - */ - const srcFolder = "/.src"; - /** - * Represents a virtual POSIX-like file system. - */ - class FileSystem { - /** Indicates whether the file system is case-sensitive (`false`) or case-insensitive (`true`). */ - readonly ignoreCase: boolean; - /** Gets the comparison function used to compare two paths. */ - readonly stringComparer: (a: string, b: string) => number; - private _lazy; - private _cwd; - private _time; - private _shadowRoot; - private _dirStack; - constructor(ignoreCase: boolean, options?: FileSystemOptions); - /** - * Gets metadata for this `FileSystem`. - */ - readonly meta: collections.Metadata; - /** - * Gets a value indicating whether the file system is read-only. - */ - readonly isReadonly: boolean; - /** - * Makes the file system read-only. - */ - makeReadonly(): this; - /** - * Gets the file system shadowed by this file system. - */ - readonly shadowRoot: FileSystem | undefined; - /** - * Gets a shadow copy of this file system. Changes to the shadow copy do not affect the - * original, allowing multiple copies of the same core file system without multiple copies - * of the same data. - */ - shadow(ignoreCase?: boolean): FileSystem; - /** - * Gets or sets the timestamp (in milliseconds) used for file status, returning the previous timestamp. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/time.html - */ - time(value?: number | Date | (() => number | Date)): number; - /** - * Gets the metadata object for a path. - * @param path - */ - filemeta(path: string): collections.Metadata; - private _filemeta; - /** - * Get the pathname of the current working directory. - * - * @link - http://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html - */ - cwd(): string; - /** - * Changes the current working directory. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html - */ - chdir(path: string): void; - /** - * Pushes the current directory onto the directory stack and changes the current working directory to the supplied path. - */ - pushd(path?: string): void; - /** - * Pops the previous directory from the location stack and changes the current directory to that directory. - */ - popd(): void; - /** - * Update the file system with a set of files. - */ - apply(files: FileSet): void; - /** - * Scan file system entries along a path. If `path` is a symbolic link, it is dereferenced. - * @param path The path at which to start the scan. - * @param axis The axis along which to traverse. - * @param traversal The traversal scheme to use. - */ - scanSync(path: string, axis: Axis, traversal: Traversal): string[]; - /** - * Scan file system entries along a path. - * @param path The path at which to start the scan. - * @param axis The axis along which to traverse. - * @param traversal The traversal scheme to use. - */ - lscanSync(path: string, axis: Axis, traversal: Traversal): string[]; - private _scan; - /** - * Mounts a physical or virtual file system at a location in this virtual file system. - * - * @param source The path in the physical (or other virtual) file system. - * @param target The path in this virtual file system. - * @param resolver An object used to resolve files in `source`. - */ - mountSync(source: string, target: string, resolver: FileSystemResolver): void; - /** - * Recursively remove all files and directories underneath the provided path. - */ - rimrafSync(path: string): void; - /** - * Make a directory and all of its parent paths (if they don't exist). - */ - mkdirpSync(path: string): void; - getFileListing(): string; - /** - * Print diagnostic information about the structure of the file system to the console. - */ - debugPrint(): void; - /** - * Determines whether a path exists. - */ - existsSync(path: string): boolean; - /** - * Get file status. If `path` is a symbolic link, it is dereferenced. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - statSync(path: string): Stats; - /** - * Change file access times - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - utimesSync(path: string, atime: Date, mtime: Date): void; - /** - * Get file status. If `path` is a symbolic link, it is dereferenced. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/lstat.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - lstatSync(path: string): Stats; - private _stat; - /** - * Read a directory. If `path` is a symbolic link, it is dereferenced. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - readdirSync(path: string): string[]; - /** - * Make a directory. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - mkdirSync(path: string): void; - private _mkdir; - /** - * Remove a directory. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/rmdir.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - rmdirSync(path: string): void; - /** - * Link one file to another file (also known as a "hard link"). - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - linkSync(oldpath: string, newpath: string): void; - /** - * Remove a directory entry. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/unlink.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - unlinkSync(path: string): void; - /** - * Rename a file. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - renameSync(oldpath: string, newpath: string): void; - /** - * Make a symbolic link. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - symlinkSync(target: string, linkpath: string): void; - /** - * Resolve a pathname. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/realpath.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - realpathSync(path: string): string; - /** - * Read from a file. - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - readFileSync(path: string, encoding?: null): Buffer; - /** - * Read from a file. - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - readFileSync(path: string, encoding: string): string; - /** - * Read from a file. - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - readFileSync(path: string, encoding?: string | null): string | Buffer; - /** - * Write to a file. - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - writeFileSync(path: string, data: string | Buffer, encoding?: string | null): void; - private _mknod; - private _addLink; - private _removeLink; - private _replaceLink; - private _getRootLinks; - private _getLinks; - private _getShadow; - private _copyShadowLinks; - private _getSize; - private _getBuffer; - /** - * Walk a path to its end. - * - * @param path The path to follow. - * @param noFollow A value indicating whether to *not* dereference a symbolic link at the - * end of a path. - * - * @link http://man7.org/linux/man-pages/man7/path_resolution.7.html - */ - private _walk; - /** - * Resolve a path relative to the current working directory. - */ - private _resolve; - private _applyFiles; - private _applyFileExtendedOptions; - private _applyFilesWorker; - private _normalizeFileSetEntry; - } - interface FileSystemOptions { - time?: number | Date | (() => number | Date); - files?: FileSet; - cwd?: string; - meta?: Record; - } - interface FileSystemCreateOptions { - documents?: ReadonlyArray; - cwd?: string; - } - type Axis = "ancestors" | "ancestors-or-self" | "self" | "descendants-or-self" | "descendants"; - interface Traversal { - /** A function called to choose whether to continue to traverse to either ancestors or descendants. */ - traverse?(path: string, stats: Stats): boolean; - /** A function called to choose whether to accept a path as part of the result. */ - accept?(path: string, stats: Stats): boolean; - } - interface FileSystemResolver { - statSync(path: string): { - mode: number; - size: number; - }; - readdirSync(path: string): string[]; - readFileSync(path: string): Buffer; - } - interface FileSystemResolverHost { - useCaseSensitiveFileNames(): boolean; - getAccessibleFileSystemEntries(path: string): ts.FileSystemEntries; - directoryExists(path: string): boolean; - fileExists(path: string): boolean; - getFileSize(path: string): number; - readFile(path: string): string | undefined; - getWorkspaceRoot(): string; - } - function createResolver(host: FileSystemResolverHost): FileSystemResolver; - /** - * Create a virtual file system from a physical file system using the following path mappings: - * - * - `/.ts` is a directory mapped to `${workspaceRoot}/built/local` - * - `/.lib` is a directory mapped to `${workspaceRoot}/tests/lib` - * - `/.src` is a virtual directory to be used for tests. - * - * Unless overridden, `/.src` will be the current working directory for the virtual file system. - */ - function createFromFileSystem(host: FileSystemResolverHost, ignoreCase: boolean, { documents, cwd }?: FileSystemCreateOptions): FileSystem; - class Stats { - dev: number; - ino: number; - mode: number; - nlink: number; - uid: number; - gid: number; - rdev: number; - size: number; - blksize: number; - blocks: number; - atimeMs: number; - mtimeMs: number; - ctimeMs: number; - birthtimeMs: number; - atime: Date; - mtime: Date; - ctime: Date; - birthtime: Date; - constructor(); - constructor(dev: number, ino: number, mode: number, nlink: number, rdev: number, size: number, blksize: number, blocks: number, atimeMs: number, mtimeMs: number, ctimeMs: number, birthtimeMs: number); - isFile(): boolean; - isDirectory(): boolean; - isSymbolicLink(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - } - const IOErrorMessages: Readonly<{ - EACCES: string; - EIO: string; - ENOENT: string; - EEXIST: string; - ELOOP: string; - ENOTDIR: string; - EISDIR: string; - EBADF: string; - EINVAL: string; - ENOTEMPTY: string; - EPERM: string; - EROFS: string; - }>; - function createIOError(code: keyof typeof IOErrorMessages, details?: string): NodeJS.ErrnoException; - /** - * A template used to populate files, directories, links, etc. in a virtual file system. - */ - interface FileSet { - [name: string]: DirectoryLike | FileLike | Link | Symlink | Mount | null | undefined; - } - type DirectoryLike = FileSet | Directory; - type FileLike = File | Buffer | string; - /** Extended options for a directory in a `FileSet` */ - class Directory { - readonly files: FileSet; - readonly meta: Record | undefined; - constructor(files: FileSet, { meta }?: { - meta?: Record; - }); - } - /** Extended options for a file in a `FileSet` */ - class File { - readonly data: Buffer | string; - readonly encoding: string | undefined; - readonly meta: Record | undefined; - constructor(data: Buffer | string, { meta, encoding }?: { - encoding?: string; - meta?: Record; - }); - } - /** Extended options for a hard link in a `FileSet` */ - class Link { - readonly path: string; - constructor(path: string); - } - /** Extended options for a symbolic link in a `FileSet` */ - class Symlink { - readonly symlink: string; - readonly meta: Record | undefined; - constructor(symlink: string, { meta }?: { - meta?: Record; - }); - } - /** Extended options for mounting a virtual copy of an external file system via a `FileSet` */ - class Mount { - readonly source: string; - readonly resolver: FileSystemResolver; - readonly meta: Record | undefined; - constructor(source: string, resolver: FileSystemResolver, { meta }?: { - meta?: Record; - }); - } -} -/** - * Test harness compiler functionality. - */ -declare namespace compiler { - interface Project { - file: string; - config?: ts.ParsedCommandLine; - errors?: ts.Diagnostic[]; - } - function readProject(host: fakes.ParseConfigHost, project: string | undefined, existingOptions?: ts.CompilerOptions): Project | undefined; - /** - * Correlates compilation inputs and outputs - */ - interface CompilationOutput { - readonly inputs: ReadonlyArray; - readonly js: documents.TextDocument | undefined; - readonly dts: documents.TextDocument | undefined; - readonly map: documents.TextDocument | undefined; - } - class CompilationResult { - readonly host: fakes.CompilerHost; - readonly program: ts.Program | undefined; - readonly result: ts.EmitResult | undefined; - readonly options: ts.CompilerOptions; - readonly diagnostics: ReadonlyArray; - readonly js: ReadonlyMap; - readonly dts: ReadonlyMap; - readonly maps: ReadonlyMap; - private _inputs; - private _inputsAndOutputs; - constructor(host: fakes.CompilerHost, options: ts.CompilerOptions, program: ts.Program | undefined, result: ts.EmitResult | undefined, diagnostics: ts.Diagnostic[]); - readonly vfs: vfs.FileSystem; - readonly inputs: ReadonlyArray; - readonly outputs: ReadonlyArray; - readonly traces: ReadonlyArray; - readonly emitSkipped: boolean; - readonly singleFile: boolean; - readonly commonSourceDirectory: string; - getInputsAndOutputs(path: string): CompilationOutput | undefined; - getInputs(path: string): ReadonlyArray | undefined; - getOutput(path: string, kind: "js" | "dts" | "map"): documents.TextDocument | undefined; - getSourceMapRecord(): string | undefined; - getSourceMap(path: string): documents.SourceMap | undefined; - getOutputPath(path: string, ext: string): string; - getNumberOfJsFiles(): number; - } - function compileFiles(host: fakes.CompilerHost, rootFiles: string[] | undefined, compilerOptions: ts.CompilerOptions): CompilationResult; -} -declare namespace evaluator { - function evaluateTypeScript(sourceText: string, options?: ts.CompilerOptions, globals?: Record): any; -} -/** - * Fake implementations of various compiler dependencies. - */ -declare namespace fakes { - interface SystemOptions { - executingFilePath?: string; - newLine?: "\r\n" | "\n"; - env?: Record; - } - /** - * A fake `ts.System` that leverages a virtual file system. - */ - class System implements ts.System { - readonly vfs: vfs.FileSystem; - readonly args: string[]; - readonly output: string[]; - readonly newLine: string; - readonly useCaseSensitiveFileNames: boolean; - exitCode: number | undefined; - private readonly _executingFilePath; - private readonly _env; - constructor(vfs: vfs.FileSystem, { executingFilePath, newLine, env }?: SystemOptions); - write(message: string): void; - readFile(path: string): string | undefined; - writeFile(path: string, data: string, writeByteOrderMark?: boolean): void; - deleteFile(path: string): void; - fileExists(path: string): boolean; - directoryExists(path: string): boolean; - createDirectory(path: string): void; - getCurrentDirectory(): string; - getDirectories(path: string): string[]; - readDirectory(path: string, extensions?: ReadonlyArray, exclude?: ReadonlyArray, include?: ReadonlyArray, depth?: number): string[]; - getAccessibleFileSystemEntries(path: string): ts.FileSystemEntries; - exit(exitCode?: number): void; - getFileSize(path: string): number; - resolvePath(path: string): string; - getExecutingFilePath(): string; - getModifiedTime(path: string): Date; - setModifiedTime(path: string, time: Date): void; - createHash(data: string): string; - realpath(path: string): string; - getEnvironmentVariable(name: string): string; - private _getStats; - } - /** - * A fake `ts.ParseConfigHost` that leverages a virtual file system. - */ - class ParseConfigHost implements ts.ParseConfigHost { - readonly sys: System; - constructor(sys: System | vfs.FileSystem); - readonly vfs: vfs.FileSystem; - readonly useCaseSensitiveFileNames: boolean; - fileExists(fileName: string): boolean; - directoryExists(directoryName: string): boolean; - readFile(path: string): string | undefined; - readDirectory(path: string, extensions: string[], excludes: string[], includes: string[], depth: number): string[]; - } - /** - * A fake `ts.CompilerHost` that leverages a virtual file system. - */ - class CompilerHost implements ts.CompilerHost { - readonly sys: System; - readonly defaultLibLocation: string; - readonly outputs: documents.TextDocument[]; - private readonly _outputsMap; - readonly traces: string[]; - readonly shouldAssertInvariants: boolean; - private _setParentNodes; - private _sourceFiles; - private _parseConfigHost; - private _newLine; - constructor(sys: System | vfs.FileSystem, options?: ts.CompilerOptions, setParentNodes?: boolean); - readonly vfs: vfs.FileSystem; - readonly parseConfigHost: ParseConfigHost; - getCurrentDirectory(): string; - useCaseSensitiveFileNames(): boolean; - getNewLine(): string; - getCanonicalFileName(fileName: string): string; - deleteFile(fileName: string): void; - fileExists(fileName: string): boolean; - directoryExists(directoryName: string): boolean; - getModifiedTime(fileName: string): Date; - setModifiedTime(fileName: string, time: Date): void; - getDirectories(path: string): string[]; - readDirectory(path: string, extensions?: ReadonlyArray, exclude?: ReadonlyArray, include?: ReadonlyArray, depth?: number): string[]; - readFile(path: string): string | undefined; - writeFile(fileName: string, content: string, writeByteOrderMark: boolean): void; - trace(s: string): void; - realpath(path: string): string; - getDefaultLibLocation(): string; - getDefaultLibFileName(options: ts.CompilerOptions): string; - getSourceFile(fileName: string, languageVersion: number): ts.SourceFile | undefined; - } -} -declare namespace ts.server { - interface SessionClientHost extends LanguageServiceHost { - writeMessage(message: string): void; - } - function extractMessage(message: string): string; - class SessionClient implements LanguageService { - private host; - private sequence; - private lineMaps; - private messages; - private lastRenameEntry; - constructor(host: SessionClientHost); - onMessage(message: string): void; - private writeMessage; - private getLineMap; - private lineOffsetToPosition; - private positionToOneBasedLineOffset; - private convertCodeEditsToTextChange; - private processRequest; - private processResponse; - openFile(file: string, fileContent?: string, scriptKindName?: "TS" | "JS" | "TSX" | "JSX"): void; - closeFile(file: string): void; - changeFile(fileName: string, start: number, end: number, insertString: string): void; - toLineColumnOffset(fileName: string, position: number): { - line: number; - character: number; - }; - getQuickInfoAtPosition(fileName: string, position: number): QuickInfo; - getProjectInfo(file: string, needFileNameList: boolean): protocol.ProjectInfo; - getCompletionsAtPosition(fileName: string, position: number, _preferences: UserPreferences | undefined): CompletionInfo; - getCompletionEntryDetails(fileName: string, position: number, entryName: string, _options: FormatCodeOptions | FormatCodeSettings | undefined, source: string | undefined): CompletionEntryDetails; - getCompletionEntrySymbol(_fileName: string, _position: number, _entryName: string): Symbol; - getNavigateToItems(searchValue: string): NavigateToItem[]; - getFormattingEditsForRange(file: string, start: number, end: number, _options: FormatCodeOptions): TextChange[]; - getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions): TextChange[]; - getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, _options: FormatCodeOptions): TextChange[]; - getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[]; - getDefinitionAndBoundSpan(fileName: string, position: number): DefinitionInfoAndBoundSpan; - getTypeDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[]; - getImplementationAtPosition(fileName: string, position: number): ImplementationLocation[]; - findReferences(_fileName: string, _position: number): ReferencedSymbol[]; - getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[]; - getEmitOutput(_fileName: string): EmitOutput; - getSyntacticDiagnostics(file: string): DiagnosticWithLocation[]; - getSemanticDiagnostics(file: string): Diagnostic[]; - getSuggestionDiagnostics(file: string): DiagnosticWithLocation[]; - private getDiagnostics; - getCompilerOptionsDiagnostics(): Diagnostic[]; - getRenameInfo(fileName: string, position: number, findInStrings?: boolean, findInComments?: boolean): RenameInfo; - findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean): RenameLocation[]; - private decodeNavigationBarItems; - getNavigationBarItems(file: string): NavigationBarItem[]; - private decodeNavigationTree; - getNavigationTree(file: string): NavigationTree; - private decodeSpan; - getNameOrDottedNameSpan(_fileName: string, _startPos: number, _endPos: number): TextSpan; - getBreakpointStatementAtPosition(_fileName: string, _position: number): TextSpan; - getSignatureHelpItems(fileName: string, position: number): SignatureHelpItems; - getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[]; - getDocumentHighlights(fileName: string, position: number, filesToSearch: string[]): DocumentHighlights[]; - getOutliningSpans(file: string): OutliningSpan[]; - getTodoComments(_fileName: string, _descriptors: TodoCommentDescriptor[]): TodoComment[]; - getDocCommentTemplateAtPosition(_fileName: string, _position: number): TextInsertion; - isValidBraceCompletionAtPosition(_fileName: string, _position: number, _openingBrace: number): boolean; - getJsxClosingTagAtPosition(_fileName: string, _position: number): never; - getSpanOfEnclosingComment(_fileName: string, _position: number, _onlyMultiLine: boolean): TextSpan; - getCodeFixesAtPosition(file: string, start: number, end: number, errorCodes: ReadonlyArray): ReadonlyArray; - getCombinedCodeFix: typeof notImplemented; - applyCodeActionCommand: typeof notImplemented; - private createFileLocationOrRangeRequestArgs; - private createFileLocationRequestArgs; - private createFileRangeRequestArgs; - private createFileLocationRequestArgsWithEndLineAndOffset; - getApplicableRefactors(fileName: string, positionOrRange: number | TextRange): ApplicableRefactorInfo[]; - getEditsForRefactor(fileName: string, _formatOptions: FormatCodeSettings, positionOrRange: number | TextRange, refactorName: string, actionName: string): RefactorEditInfo; - organizeImports(_scope: OrganizeImportsScope, _formatOptions: FormatCodeSettings): ReadonlyArray; - getEditsForFileRename(): never; - private convertCodeEditsToTextChanges; - private convertChanges; - convertTextChangeToCodeEdit(change: protocol.CodeEdit, fileName: string): TextChange; - getBraceMatchingAtPosition(fileName: string, position: number): TextSpan[]; - getIndentationAtPosition(_fileName: string, _position: number, _options: EditorOptions): number; - getSyntacticClassifications(_fileName: string, _span: TextSpan): ClassifiedSpan[]; - getSemanticClassifications(_fileName: string, _span: TextSpan): ClassifiedSpan[]; - getEncodedSyntacticClassifications(_fileName: string, _span: TextSpan): Classifications; - getEncodedSemanticClassifications(_fileName: string, _span: TextSpan): Classifications; - getProgram(): Program; - getNonBoundSourceFile(_fileName: string): SourceFile; - getSourceFile(_fileName: string): SourceFile; - cleanupSemanticCache(): void; - dispose(): void; - } -} -declare type TestRunnerKind = CompilerTestKind | FourslashTestKind | "project" | "rwc" | "test262" | "user" | "dt"; -declare type CompilerTestKind = "conformance" | "compiler"; -declare type FourslashTestKind = "fourslash" | "fourslash-shims" | "fourslash-shims-pp" | "fourslash-server"; -declare abstract class RunnerBase { - tests: (string | Harness.FileBasedTest)[]; - /** Add a source file to the runner's list of tests that need to be initialized with initializeTests */ - addTest(fileName: string): void; - enumerateFiles(folder: string, regex?: RegExp, options?: { - recursive: boolean; - }): string[]; - abstract kind(): TestRunnerKind; - abstract enumerateTestFiles(): (string | Harness.FileBasedTest)[]; - /** The working directory where tests are found. Needed for batch testing where the input path will differ from the output path inside baselines */ - workingDirectory: string; - /** Setup the runner's tests so that they are ready to be executed by the harness - * The first test should be a describe/it block that sets up the harness's compiler instance appropriately - */ - abstract initializeTests(): void; - /** Replaces instances of full paths with fileNames only */ - static removeFullPaths(path: string): string; -} -declare namespace Harness.SourceMapRecorder { - function getSourceMapRecord(sourceMapDataList: ReadonlyArray, program: ts.Program, jsFiles: ReadonlyArray, declarationFiles: ReadonlyArray): string; -} -declare var _chai: typeof chai; -declare var assert: typeof _chai.assert; -declare var global: NodeJS.Global; -declare var window: {}; -declare var XMLHttpRequest: { - new (): XMLHttpRequest; -}; -interface XMLHttpRequest { - readonly readyState: number; - readonly responseText: string; - readonly status: number; - readonly statusText: string; - open(method: string, url: string, async?: boolean, user?: string, password?: string): void; - send(data?: string): void; - setRequestHeader(header: string, value: string): void; - getAllResponseHeaders(): string; - getResponseHeader(header: string): string | null; - overrideMimeType(mime: string): void; -} -declare namespace Utils { - const enum ExecutionEnvironment { - Node = 0, - Browser = 1 - } - function getExecutionEnvironment(): ExecutionEnvironment; - let currentExecutionEnvironment: ExecutionEnvironment; - function encodeString(s: string): string; - function byteLength(s: string, encoding?: string): number; - function evalFile(fileContents: string, fileName: string, nodeContext?: any): void; - /** Splits the given string on \r\n, or on only \n if that fails, or on only \r if *that* fails. */ - function splitContentByNewlines(content: string): string[]; - /** Reads a file under /tests */ - function readTestFile(path: string): string | undefined; - function memoize(f: T, memoKey: (...anything: any[]) => string): T; - const canonicalizeForHarness: ts.GetCanonicalFileName; - function assertInvariants(node: ts.Node | undefined, parent: ts.Node | undefined): void; - function convertDiagnostics(diagnostics: ReadonlyArray): { - start: number | undefined; - length: number | undefined; - messageText: string; - category: string; - code: number; - }[]; - function sourceFileToJSON(file: ts.Node): string; - function assertDiagnosticsEquals(array1: ReadonlyArray, array2: ReadonlyArray): void; - function assertStructuralEquals(node1: ts.Node, node2: ts.Node): void; - function filterStack(error: Error, stackTraceLimit?: number): Error; -} -declare namespace Harness { - interface IO { - newLine(): string; - getCurrentDirectory(): string; - useCaseSensitiveFileNames(): boolean; - resolvePath(path: string): string | undefined; - getFileSize(path: string): number; - readFile(path: string): string | undefined; - writeFile(path: string, contents: string): void; - directoryName(path: string): string | undefined; - getDirectories(path: string): string[]; - createDirectory(path: string): void; - fileExists(fileName: string): boolean; - directoryExists(path: string): boolean; - deleteFile(fileName: string): void; - enumerateTestFiles(runner: RunnerBase): (string | FileBasedTest)[]; - listFiles(path: string, filter?: RegExp, options?: { - recursive?: boolean; - }): string[]; - log(text: string): void; - args(): string[]; - getExecutingFilePath(): string; - getWorkspaceRoot(): string; - exit(exitCode?: number): void; - readDirectory(path: string, extension?: ReadonlyArray, exclude?: ReadonlyArray, include?: ReadonlyArray, depth?: number): string[]; - getAccessibleFileSystemEntries(dirname: string): ts.FileSystemEntries; - tryEnableSourceMapsForHost?(): void; - getEnvironmentVariable?(name: string): string; - getMemoryUsage?(): number | undefined; - } - let IO: IO; - const harnessNewLine = "\r\n"; - const virtualFileSystemRoot = "/"; - function mockHash(s: string): string; -} -declare namespace Harness { - const libFolder = "built/local/"; - const tcServicesFile: string; - type SourceMapEmitterCallback = (emittedFile: string, emittedLine: number, emittedColumn: number, sourceFile: string, sourceLine: number, sourceColumn: number, sourceName: string) => void; - let userSpecifiedRoot: string; - let lightMode: boolean; - /** Functionality for compiling TypeScript code */ - namespace Compiler { - /** Aggregate various writes into a single array of lines. Useful for passing to the - * TypeScript compiler to fill with source code or errors. - */ - class WriterAggregator { - lines: string[]; - currentLine: string; - Write(str: string): void; - WriteLine(str: string): void; - Close(): void; - reset(): void; - } - function createSourceFileAndAssertInvariants(fileName: string, sourceText: string, languageVersion: ts.ScriptTarget): ts.SourceFile; - const defaultLibFileName = "lib.d.ts"; - const es2015DefaultLibFileName = "lib.es2015.d.ts"; - function getDefaultLibrarySourceFile(fileName?: string): ts.SourceFile | undefined; - function getDefaultLibFileName(options: ts.CompilerOptions): string; - const fourslashFileName = "fourslash.ts"; - let fourslashSourceFile: ts.SourceFile; - function getCanonicalFileName(fileName: string): string; - interface HarnessOptions { - useCaseSensitiveFileNames?: boolean; - includeBuiltFile?: string; - baselineFile?: string; - libFiles?: string; - } - function setCompilerOptionsFromHarnessSetting(settings: TestCaseParser.CompilerSettings, options: ts.CompilerOptions & HarnessOptions): void; - interface TestFile { - unitName: string; - content: string; - fileOptions?: any; - } - function compileFiles(inputFiles: TestFile[], otherFiles: TestFile[], harnessSettings: TestCaseParser.CompilerSettings | undefined, compilerOptions: ts.CompilerOptions | undefined, currentDirectory: string | undefined): compiler.CompilationResult; - interface DeclarationCompilationContext { - declInputFiles: TestFile[]; - declOtherFiles: TestFile[]; - harnessSettings: TestCaseParser.CompilerSettings & HarnessOptions | undefined; - options: ts.CompilerOptions; - currentDirectory: string; - } - function prepareDeclarationCompilationContext(inputFiles: ReadonlyArray, otherFiles: ReadonlyArray, result: compiler.CompilationResult, harnessSettings: TestCaseParser.CompilerSettings & HarnessOptions, options: ts.CompilerOptions, currentDirectory: string | undefined): DeclarationCompilationContext | undefined; - function compileDeclarationFiles(context: DeclarationCompilationContext | undefined): { - declInputFiles: TestFile[]; - declOtherFiles: TestFile[]; - declResult: compiler.CompilationResult; - } | undefined; - function minimalDiagnosticsToString(diagnostics: ReadonlyArray, pretty?: boolean): string; - function getErrorBaseline(inputFiles: ReadonlyArray, diagnostics: ReadonlyArray, pretty?: boolean): string; - const diagnosticSummaryMarker = "__diagnosticSummary"; - const globalErrorsMarker = "__globalErrors"; - function iterateErrorBaseline(inputFiles: ReadonlyArray, diagnostics: ReadonlyArray, options?: { - pretty?: boolean; - caseSensitive?: boolean; - currentDirectory?: string; - }): IterableIterator<[string, string, number]>; - function doErrorBaseline(baselinePath: string, inputFiles: ReadonlyArray, errors: ReadonlyArray, pretty?: boolean): void; - function doTypeAndSymbolBaseline(baselinePath: string, program: ts.Program, allFiles: { - unitName: string; - content: string; - }[], opts?: Baseline.BaselineOptions, multifile?: boolean, skipTypeBaselines?: boolean, skipSymbolBaselines?: boolean): void; - function doSourcemapBaseline(baselinePath: string, options: ts.CompilerOptions, result: compiler.CompilationResult, harnessSettings: TestCaseParser.CompilerSettings): void; - function doJsEmitBaseline(baselinePath: string, header: string, options: ts.CompilerOptions, result: compiler.CompilationResult, tsConfigFiles: ReadonlyArray, toBeCompiled: ReadonlyArray, otherFiles: ReadonlyArray, harnessSettings: TestCaseParser.CompilerSettings): void; - function collateOutputs(outputFiles: ReadonlyArray): string; - function iterateOutputs(outputFiles: Iterable): IterableIterator<[string, string]>; - function sanitizeTestFilePath(name: string): string; - } - interface FileBasedTest { - file: string; - configurations?: FileBasedTestConfiguration[]; - } - interface FileBasedTestConfiguration { - [key: string]: string; - } - /** - * Compute FileBasedTestConfiguration variations based on a supplied list of variable settings. - */ - function getFileBasedTestConfigurations(settings: TestCaseParser.CompilerSettings, varyBy: string[]): FileBasedTestConfiguration[] | undefined; - /** - * Compute a description for this configuration based on its entries - */ - function getFileBasedTestConfigurationDescription(configuration: FileBasedTestConfiguration): string; - namespace TestCaseParser { - /** all the necessary information to set the right compiler settings */ - interface CompilerSettings { - [name: string]: string; - } - /** All the necessary information to turn a multi file test into useful units for later compilation */ - interface TestUnitData { - content: string; - name: string; - fileOptions: any; - originalFilePath: string; - references: string[]; - } - function extractCompilerSettings(content: string): CompilerSettings; - interface TestCaseContent { - settings: CompilerSettings; - testUnitData: TestUnitData[]; - tsConfig: ts.ParsedCommandLine | undefined; - tsConfigFileUnitData: TestUnitData | undefined; - } - /** Given a test file containing // @FileName directives, return an array of named units of code to be added to an existing compiler instance */ - function makeUnitsFromTest(code: string, fileName: string, rootDir?: string, settings?: CompilerSettings): TestCaseContent; - } - /** Support class for baseline files */ - namespace Baseline { - interface BaselineOptions { - Subfolder?: string; - Baselinefolder?: string; - } - function localPath(fileName: string, baselineFolder?: string, subfolder?: string): string; - function runBaseline(relativeFileName: string, generateContent: () => string | null, opts?: BaselineOptions): void; - function runMultifileBaseline(relativeFileBase: string, extension: string, generateContent: () => IterableIterator<[string, string, number]> | IterableIterator<[string, string]> | null, opts?: BaselineOptions, referencedExtensions?: string[]): void; - } - function isDefaultLibraryFile(filePath: string): boolean; - function isBuiltFile(filePath: string): boolean; - function getDefaultLibraryFile(filePath: string, io: IO): Compiler.TestFile; - function getConfigNameFromFileName(filename: string): "tsconfig.json" | "jsconfig.json" | undefined; -} -declare namespace Harness.LanguageService { - class ScriptInfo { - fileName: string; - content: string; - isRootFile: boolean; - version: number; - editRanges: { - length: number; - textChangeRange: ts.TextChangeRange; - }[]; - private lineMap; - constructor(fileName: string, content: string, isRootFile: boolean); - private setContent; - getLineMap(): number[]; - updateContent(content: string): void; - editContent(start: number, end: number, newText: string): void; - getTextChangeRangeBetweenVersions(startVersion: number, endVersion: number): ts.TextChangeRange; - } - class DefaultHostCancellationToken implements ts.HostCancellationToken { - static readonly instance: DefaultHostCancellationToken; - isCancellationRequested(): boolean; - } - interface LanguageServiceAdapter { - getHost(): LanguageServiceAdapterHost; - getLanguageService(): ts.LanguageService; - getClassifier(): ts.Classifier; - getPreProcessedFileInfo(fileName: string, fileContents: string): ts.PreProcessedFileInfo; - } - abstract class LanguageServiceAdapterHost { - protected cancellationToken: DefaultHostCancellationToken; - protected settings: ts.CompilerOptions; - readonly sys: fakes.System; - typesRegistry: ts.Map | undefined; - private scriptInfos; - constructor(cancellationToken?: DefaultHostCancellationToken, settings?: ts.CompilerOptions); - readonly vfs: vfs.FileSystem; - getNewLine(): string; - getFilenames(): string[]; - getScriptInfo(fileName: string): ScriptInfo | undefined; - addScript(fileName: string, content: string, isRootFile: boolean): void; - editScript(fileName: string, start: number, end: number, newText: string): void; - openFile(_fileName: string, _content?: string, _scriptKindName?: string): void; - /** - * @param line 0 based index - * @param col 0 based index - */ - positionToLineAndCharacter(fileName: string, position: number): ts.LineAndCharacter; - } - class NativeLanguageServiceHost extends LanguageServiceAdapterHost implements ts.LanguageServiceHost, LanguageServiceAdapterHost { - isKnownTypesPackageName(name: string): boolean; - installPackage: typeof ts.notImplemented; - getCompilationSettings(): ts.CompilerOptions; - getCancellationToken(): DefaultHostCancellationToken; - getDirectories(path: string): string[]; - getCurrentDirectory(): string; - getDefaultLibFileName(): string; - getScriptFileNames(): string[]; - getScriptSnapshot(fileName: string): ts.IScriptSnapshot | undefined; - getScriptKind(): ts.ScriptKind; - getScriptVersion(fileName: string): string; - directoryExists(dirName: string): boolean; - fileExists(fileName: string): boolean; - readDirectory(path: string, extensions?: ReadonlyArray, exclude?: ReadonlyArray, include?: ReadonlyArray, depth?: number): string[]; - readFile(path: string): string | undefined; - realpath(path: string): string; - getTypeRootsVersion(): number; - log: typeof ts.noop; - trace: typeof ts.noop; - error: typeof ts.noop; - } - class NativeLanguageServiceAdapter implements LanguageServiceAdapter { - private host; - constructor(cancellationToken?: ts.HostCancellationToken, options?: ts.CompilerOptions); - getHost(): LanguageServiceAdapterHost; - getLanguageService(): ts.LanguageService; - getClassifier(): ts.Classifier; - getPreProcessedFileInfo(fileName: string, fileContents: string): ts.PreProcessedFileInfo; - } - class ShimLanguageServiceHost extends LanguageServiceAdapterHost implements ts.LanguageServiceShimHost, ts.CoreServicesShimHost { - private nativeHost; - getModuleResolutionsForFile: (fileName: string) => string; - getTypeReferenceDirectiveResolutionsForFile: (fileName: string) => string; - constructor(preprocessToResolve: boolean, cancellationToken?: ts.HostCancellationToken, options?: ts.CompilerOptions); - getFilenames(): string[]; - getScriptInfo(fileName: string): ScriptInfo | undefined; - addScript(fileName: string, content: string, isRootFile: boolean): void; - editScript(fileName: string, start: number, end: number, newText: string): void; - positionToLineAndCharacter(fileName: string, position: number): ts.LineAndCharacter; - getCompilationSettings(): string; - getCancellationToken(): ts.HostCancellationToken; - getCurrentDirectory(): string; - getDirectories(path: string): string; - getDefaultLibFileName(): string; - getScriptFileNames(): string; - getScriptSnapshot(fileName: string): ts.ScriptSnapshotShim; - getScriptKind(): ts.ScriptKind; - getScriptVersion(fileName: string): string; - getLocalizedDiagnosticMessages(): string; - readDirectory: typeof ts.notImplemented; - readDirectoryNames: typeof ts.notImplemented; - readFileNames: typeof ts.notImplemented; - fileExists(fileName: string): boolean; - readFile(fileName: string): string | undefined; - log(s: string): void; - trace(s: string): void; - error(s: string): void; - directoryExists(): boolean; - } - class ShimLanguageServiceAdapter implements LanguageServiceAdapter { - private host; - private factory; - constructor(preprocessToResolve: boolean, cancellationToken?: ts.HostCancellationToken, options?: ts.CompilerOptions); - getHost(): ShimLanguageServiceHost; - getLanguageService(): ts.LanguageService; - getClassifier(): ts.Classifier; - getPreProcessedFileInfo(fileName: string, fileContents: string): ts.PreProcessedFileInfo; - } - class SessionClientHost extends NativeLanguageServiceHost implements ts.server.SessionClientHost { - private client; - constructor(cancellationToken: ts.HostCancellationToken | undefined, settings: ts.CompilerOptions | undefined); - onMessage: typeof ts.noop; - writeMessage: typeof ts.noop; - setClient(client: ts.server.SessionClient): void; - openFile(fileName: string, content?: string, scriptKindName?: "TS" | "JS" | "TSX" | "JSX"): void; - editScript(fileName: string, start: number, end: number, newText: string): void; - } - class ServerLanguageServiceAdapter implements LanguageServiceAdapter { - private host; - private client; - constructor(cancellationToken?: ts.HostCancellationToken, options?: ts.CompilerOptions); - getHost(): SessionClientHost; - getLanguageService(): ts.LanguageService; - getClassifier(): ts.Classifier; - getPreProcessedFileInfo(): ts.PreProcessedFileInfo; - } -} -declare namespace ts.TestFSWithWatch { - const libFile: File; - const safeList: { - path: Path; - content: string; - }; - interface TestServerHostCreationParameters { - useCaseSensitiveFileNames?: boolean; - executingFilePath?: string; - currentDirectory?: string; - newLine?: string; - useWindowsStylePaths?: boolean; - environmentVariables?: Map; - } - function createWatchedSystem(fileOrFolderList: ReadonlyArray, params?: TestServerHostCreationParameters): TestServerHost; - function createServerHost(fileOrFolderList: ReadonlyArray, params?: TestServerHostCreationParameters): TestServerHost; - interface File { - path: string; - content: string; - fileSize?: number; - } - interface Folder { - path: string; - } - interface SymLink { - path: string; - symLink: string; - } - type FileOrFolderOrSymLink = File | Folder | SymLink; - function verifyMapSize(caption: string, map: Map, expectedKeys: ReadonlyArray): void; - function checkMultiMapKeyCount(caption: string, actual: MultiMap, expectedKeys: ReadonlyMap): void; - function checkMultiMapKeyCount(caption: string, actual: MultiMap, expectedKeys: ReadonlyArray, eachKeyCount: number): void; - function checkArray(caption: string, actual: ReadonlyArray, expected: ReadonlyArray): void; - function checkWatchedFiles(host: TestServerHost, expectedFiles: string[]): void; - function checkWatchedFilesDetailed(host: TestServerHost, expectedFiles: ReadonlyMap): void; - function checkWatchedFilesDetailed(host: TestServerHost, expectedFiles: ReadonlyArray, eachFileWatchCount: number): void; - function checkWatchedDirectories(host: TestServerHost, expectedDirectories: string[], recursive: boolean): void; - function checkWatchedDirectoriesDetailed(host: TestServerHost, expectedDirectories: ReadonlyMap, recursive: boolean): void; - function checkWatchedDirectoriesDetailed(host: TestServerHost, expectedDirectories: ReadonlyArray, eachDirectoryWatchCount: number, recursive: boolean): void; - function checkOutputContains(host: TestServerHost, expected: ReadonlyArray): void; - function checkOutputDoesNotContain(host: TestServerHost, expectedToBeAbsent: string[] | ReadonlyArray): void; - type TimeOutCallback = () => any; - interface TestFileWatcher { - cb: FileWatcherCallback; - fileName: string; - } - interface TestDirectoryWatcher { - cb: DirectoryWatcherCallback; - directoryName: string; - } - interface ReloadWatchInvokeOptions { - /** Invokes the directory watcher for the parent instead of the file changed */ - invokeDirectoryWatcherInsteadOfFileChanged: boolean; - /** When new file is created, do not invoke watches for it */ - ignoreWatchInvokedWithTriggerAsFileCreate: boolean; - /** Invoke the file delete, followed by create instead of file changed */ - invokeFileDeleteCreateAsPartInsteadOfChange: boolean; - } - enum Tsc_WatchDirectory { - WatchFile = "RecursiveDirectoryUsingFsWatchFile", - NonRecursiveWatchDirectory = "RecursiveDirectoryUsingNonRecursiveWatchDirectory", - DynamicPolling = "RecursiveDirectoryUsingDynamicPriorityPolling" - } - class TestServerHost implements server.ServerHost, FormatDiagnosticsHost, ModuleResolutionHost { - withSafeList: boolean; - useCaseSensitiveFileNames: boolean; - readonly newLine: string; - readonly useWindowsStylePath?: boolean | undefined; - private readonly environmentVariables?; - args: string[]; - private readonly output; - private fs; - private time; - getCanonicalFileName: (s: string) => string; - private toPath; - private timeoutCallbacks; - private immediateCallbacks; - readonly screenClears: number[]; - readonly watchedDirectories: MultiMap; - readonly watchedDirectoriesRecursive: MultiMap; - readonly watchedFiles: MultiMap; - private readonly executingFilePath; - private readonly currentDirectory; - private readonly dynamicPriorityWatchFile; - private readonly customRecursiveWatchDirectory; - constructor(withSafeList: boolean, useCaseSensitiveFileNames: boolean, executingFilePath: string, currentDirectory: string, fileOrFolderorSymLinkList: ReadonlyArray, newLine?: string, useWindowsStylePath?: boolean | undefined, environmentVariables?: Map | undefined); - getNewLine(): string; - toNormalizedAbsolutePath(s: string): string; - toFullPath(s: string): Path; - getHostSpecificPath(s: string): string; - private now; - reloadFS(fileOrFolderOrSymLinkList: ReadonlyArray, options?: Partial): void; - modifyFile(filePath: string, content: string, options?: Partial): void; - renameFolder(folderName: string, newFolderName: string): void; - private renameFolderEntries; - ensureFileOrFolder(fileOrDirectoryOrSymLink: FileOrFolderOrSymLink, ignoreWatchInvokedWithTriggerAsFileCreate?: boolean): void; - private ensureFolder; - private addFileOrFolderInFolder; - private removeFileOrFolder; - removeFolder(folderPath: string, recursive?: boolean): void; - invokeWatchedDirectoriesCallback(folderFullPath: string, relativePath: string): void; - invokeWatchedDirectoriesRecursiveCallback(folderFullPath: string, relativePath: string): void; - invokeFileWatcher(fileFullPath: string, eventKind: FileWatcherEventKind, useFileNameInCallback?: boolean): void; - private getRelativePathToDirectory; - /** - * This will call the directory watcher for the folderFullPath and recursive directory watchers for this and base folders - */ - private invokeDirectoryWatcher; - private directoryCallback; - /** - * This will call the recursive directory watcher for this directory as well as all the base directories - */ - private invokeRecursiveDirectoryWatcher; - private toFsEntry; - private toFsFile; - private toFsSymLink; - private toFsFolder; - private getRealFsEntry; - private isFsFile; - private getRealFile; - private isFsFolder; - private getRealFolder; - fileExists(s: string): boolean; - getModifiedTime(s: string): Date; - readFile(s: string): string | undefined; - getFileSize(s: string): number; - directoryExists(s: string): boolean; - getDirectories(s: string): string[]; - readDirectory(path: string, extensions?: ReadonlyArray, exclude?: ReadonlyArray, include?: ReadonlyArray, depth?: number): string[]; - watchDirectory(directoryName: string, cb: DirectoryWatcherCallback, recursive: boolean): FileWatcher; - createHash(s: string): string; - createSHA256Hash(s: string): string; - watchFile(fileName: string, cb: FileWatcherCallback, pollingInterval: number): FileWatcher; - setTimeout(callback: TimeOutCallback, _time: number, ...args: any[]): number; - getNextTimeoutId(): number; - clearTimeout(timeoutId: any): void; - clearScreen(): void; - checkTimeoutQueueLengthAndRun(expected: number): void; - checkTimeoutQueueLength(expected: number): void; - runQueuedTimeoutCallbacks(timeoutId?: number): void; - runQueuedImmediateCallbacks(checkCount?: number): void; - setImmediate(callback: TimeOutCallback, _time: number, ...args: any[]): number; - clearImmediate(timeoutId: any): void; - createDirectory(directoryName: string): void; - writeFile(path: string, content: string): void; - write(message: string): void; - getOutput(): ReadonlyArray; - clearOutput(): void; - realpath(s: string): string; - readonly exitMessage: string; - exitCode: number | undefined; - readonly resolvePath: (s: string) => string; - readonly getExecutingFilePath: () => string; - readonly getCurrentDirectory: () => string; - exit(exitCode?: number): void; - getEnvironmentVariable(name: string): string; - } -} -declare namespace FourSlash { - import ArrayOrSingle = FourSlashInterface.ArrayOrSingle; - const enum FourSlashTestType { - Native = 0, - Shims = 1, - ShimsWithPreprocess = 2, - Server = 3 - } - interface FourSlashFile { - content: string; - fileName: string; - symlinks?: string[]; - version: number; - fileOptions: Harness.TestCaseParser.CompilerSettings; - } - interface FourSlashData { - globalOptions: Harness.TestCaseParser.CompilerSettings; - files: FourSlashFile[]; - markerPositions: ts.Map; - markers: Marker[]; - /** - * Inserted in source files by surrounding desired text - * in a range with `[|` and `|]`. For example, - * - * [|text in range|] - * - * is a range with `text in range` "selected". - */ - ranges: Range[]; - } - interface Marker { - fileName: string; - position: number; - data?: {}; - } - interface Range { - fileName: string; - pos: number; - end: number; - marker?: Marker; - } - interface TextSpan { - start: number; - end: number; - } - class TestCancellationToken implements ts.HostCancellationToken { - private static readonly notCanceled; - private numberOfCallsBeforeCancellation; - isCancellationRequested(): boolean; - setCancelled(numberOfCalls?: number): void; - resetCancelled(): void; - } - function verifyOperationIsCancelled(f: () => void): void; - class TestState { - private basePath; - private testType; - testData: FourSlashData; - private languageServiceAdapterHost; - private languageService; - private cancellationToken; - currentCaretPosition: number; - selectionEnd: number; - lastKnownMarker: string; - activeFile: FourSlashFile; - enableFormatting: boolean; - formatCodeSettings: ts.FormatCodeSettings; - private inputFiles; - private static getDisplayPartsJson; - private addMatchedInputFile; - private getLanguageServiceAdapter; - constructor(basePath: string, testType: FourSlashTestType, testData: FourSlashData); - private getFileContent; - goToMarker(name?: string | Marker): void; - goToEachMarker(markers: ReadonlyArray, action: (marker: Marker, index: number) => void): void; - goToEachRange(action: () => void): void; - markerName(m: Marker): string; - goToPosition(pos: number): void; - select(startMarker: string, endMarker: string): void; - selectRange(range: Range): void; - moveCaretRight(count?: number): void; - openFile(indexOrName: number | string, content?: string, scriptKindName?: string): void; - verifyErrorExistsBetweenMarkers(startMarkerName: string, endMarkerName: string, shouldExist: boolean): void; - private raiseError; - private messageAtLastKnownMarker; - private assertionMessageAtLastKnownMarker; - private getDiagnostics; - private getAllDiagnostics; - verifyErrorExistsAfterMarker(markerName: string, shouldExist: boolean, after: boolean): void; - private anyErrorInRange; - private printErrorLog; - private formatRange; - private formatLineAndCharacterOfPosition; - private formatPosition; - verifyNoErrors(): void; - verifyNumberOfErrorsInCurrentFile(expected: number): void; - verifyEval(expr: string, value: any): void; - verifyGoToDefinitionIs(endMarker: ArrayOrSingle): void; - verifyGoToDefinition(arg0: any, endMarkerNames?: ArrayOrSingle): void; - private getGoToDefinition; - private getGoToDefinitionAndBoundSpan; - verifyGoToType(arg0: any, endMarkerNames?: ArrayOrSingle): void; - private verifyGoToX; - private verifyGoToXPlain; - verifyGoToDefinitionForMarkers(markerNames: string[]): void; - private verifyGoToXSingle; - private verifyGoToXWorker; - private verifyDefinitionTextSpan; - verifyGetEmitOutputForCurrentFile(expected: string): void; - verifyGetEmitOutputContentsForCurrentFile(expected: ts.OutputFile[]): void; - verifyCompletionListCount(expectedCount: number, negative: boolean): void; - verifyCompletionListItemsCountIsGreaterThan(count: number, negative: boolean): void; - verifyCompletionListStartsWithItemsInOrder(items: string[]): void; - noItemsWithSameNameButDifferentKind(): void; - verifyCompletionListIsEmpty(negative: boolean): void; - verifyCompletionListAllowsNewIdentifier(negative: boolean): void; - verifyCompletionListIsGlobal(expected: boolean): void; - verifyCompletions(options: FourSlashInterface.VerifyCompletionsOptions): void; - private verifyCompletionsWorker; - private verifyCompletionEntry; - private verifyCompletionsAreExactly; - verifyCompletionsAt(markerName: string | ReadonlyArray, expected: ReadonlyArray, options?: FourSlashInterface.CompletionsAtOptions): void; - verifyCompletionListContains(entryId: ts.Completions.CompletionEntryIdentifier, text?: string, documentation?: string, kind?: string | { - kind?: string; - kindModifiers?: string; - }, spanIndex?: number, hasAction?: boolean, options?: FourSlashInterface.VerifyCompletionListContainsOptions): void; - /** - * Verify that the completion list does NOT contain the given symbol. - * The symbol is considered matched with the symbol in the list if and only if all given parameters must matched. - * When any parameter is omitted, the parameter is ignored during comparison and assumed that the parameter with - * that property of the symbol in the list. - * @param symbol the name of symbol - * @param expectedText the text associated with the symbol - * @param expectedDocumentation the documentation text associated with the symbol - * @param expectedKind the kind of symbol (see ScriptElementKind) - * @param spanIndex the index of the range that the completion item's replacement text span should match - */ - verifyCompletionListDoesNotContain(entryId: ts.Completions.CompletionEntryIdentifier, expectedText?: string, expectedDocumentation?: string, expectedKind?: string | { - kind?: string; - kindModifiers?: string; - }, spanIndex?: number, options?: FourSlashInterface.CompletionsAtOptions): void; - verifyCompletionEntryDetails(entryName: string, expectedText: string, expectedDocumentation?: string, kind?: string, tags?: ts.JSDocTagInfo[]): void; - /** Use `getProgram` instead of accessing this directly. */ - private _program; - /** Use `getChecker` instead of accessing this directly. */ - private _checker; - private getProgram; - private getChecker; - private getSourceFile; - private getNode; - private goToAndGetNode; - private verifyRange; - private verifySymbol; - verifySymbolAtLocation(startRange: Range, declarationRanges: Range[]): void; - symbolsInScope(range: Range): ts.Symbol[]; - setTypesRegistry(map: ts.MapLike): void; - verifyTypeOfSymbolAtLocation(range: Range, symbol: ts.Symbol, expected: string): void; - private verifyDocumentHighlightsRespectFilesList; - verifyReferenceGroups(starts: ArrayOrSingle | ArrayOrSingle, parts: ReadonlyArray): void; - verifyNoReferences(markerNameOrRange?: string | Range): void; - verifyGetReferencesForServerTest(expected: ReadonlyArray): void; - verifySingleReferenceGroup(definition: FourSlashInterface.ReferenceGroupDefinition, ranges?: Range[]): void; - private assertObjectsEqual; - verifyDisplayPartsOfReferencedSymbol(expected: ts.SymbolDisplayPart[]): void; - private getCompletionListAtCaret; - private getCompletionEntryDetails; - private getReferencesAtCaret; - private findReferencesAtCaret; - getSyntacticDiagnostics(expected: ReadonlyArray): void; - getSemanticDiagnostics(expected: ReadonlyArray): void; - getSuggestionDiagnostics(expected: ReadonlyArray): void; - private testDiagnostics; - verifyQuickInfoAt(markerName: string, expectedText: string, expectedDocumentation?: string): void; - verifyQuickInfos(namesAndTexts: { - [name: string]: string | [string, string]; - }): void; - verifyQuickInfoString(expectedText: string, expectedDocumentation?: string): void; - verifyQuickInfoDisplayParts(kind: string, kindModifiers: string, textSpan: TextSpan, displayParts: ts.SymbolDisplayPart[], documentation: ts.SymbolDisplayPart[], tags: ts.JSDocTagInfo[]): void; - verifyRangesAreRenameLocations(options?: Range[] | { - findInStrings?: boolean; - findInComments?: boolean; - ranges?: Range[]; - }): void; - verifyRenameLocations(startRanges: ArrayOrSingle, options: Range[] | { - findInStrings?: boolean; - findInComments?: boolean; - ranges: Range[]; - }): void; - verifyQuickInfoExists(negative: boolean): void; - verifyNoSignatureHelp(markers: ReadonlyArray): void; - verifySignatureHelp(optionses: ReadonlyArray): void; - private verifySignatureHelpWorker; - private validate; - verifyRenameInfoSucceeded(displayName?: string, fullDisplayName?: string, kind?: string, kindModifiers?: string): void; - verifyRenameInfoFailed(message?: string): void; - private alignmentForExtraInfo; - private spanInfoToString; - private baselineCurrentFileLocations; - getBreakpointStatementLocation(pos: number): ts.TextSpan | undefined; - baselineCurrentFileBreakpointLocations(): void; - baselineGetEmitOutput(insertResultsIntoVfs?: boolean): void; - baselineQuickInfo(): void; - printBreakpointLocation(pos: number): void; - printBreakpointAtCurrentLocation(): void; - printCurrentParameterHelp(): void; - printCurrentQuickInfo(): void; - printErrorList(): void; - printCurrentFileState(showWhitespace: boolean, makeCaretVisible: boolean): void; - printCurrentSignatureHelp(): void; - private getSignatureHelp; - printCompletionListMembers(preferences: ts.UserPreferences | undefined): void; - private printMembersOrCompletions; - printContext(): void; - deleteChar(count?: number): void; - replace(start: number, length: number, text: string): void; - deleteCharBehindMarker(count?: number): void; - type(text: string, highFidelity?: boolean): void; - paste(text: string): void; - private checkPostEditInvariants; - /** - * @returns The number of characters added to the file as a result of the edits. - * May be negative. - */ - private applyEdits; - copyFormatOptions(): ts.FormatCodeSettings; - setFormatOptions(formatCodeOptions: ts.FormatCodeOptions | ts.FormatCodeSettings): ts.FormatCodeSettings; - formatDocument(): void; - formatSelection(start: number, end: number): void; - formatOnType(pos: number, key: string): void; - private editScriptAndUpdateMarkers; - private removeWhitespace; - goToBOF(): void; - goToEOF(): void; - goToRangeStart({ fileName, pos }: Range): void; - goToTypeDefinition(definitionIndex: number): void; - verifyTypeDefinitionsCount(negative: boolean, expectedCount: number): void; - verifyImplementationListIsEmpty(negative: boolean): void; - verifyGoToDefinitionName(expectedName: string, expectedContainerName: string): void; - goToImplementation(): void; - verifyRangesInImplementationList(markerName: string): void; - getMarkers(): Marker[]; - getMarkerNames(): string[]; - getRanges(): Range[]; - rangesByText(): ts.Map; - private rangeText; - verifyCaretAtMarker(markerName?: string): void; - private getIndentation; - verifyIndentationAtCurrentPosition(numberOfSpaces: number, indentStyle?: ts.IndentStyle, baseIndentSize?: number): void; - verifyIndentationAtPosition(fileName: string, position: number, numberOfSpaces: number, indentStyle?: ts.IndentStyle, baseIndentSize?: number): void; - verifyCurrentLineContent(text: string): void; - verifyCurrentFileContent(text: string): void; - private verifyFileContent; - verifyTextAtCaretIs(text: string): void; - verifyCurrentNameOrDottedNameSpanText(text: string): undefined; - private getNameOrDottedNameSpan; - baselineCurrentFileNameOrDottedNameSpans(): void; - printNameOrDottedNameSpans(pos: number): void; - private verifyClassifications; - verifyProjectInfo(expected: string[]): void; - verifySemanticClassifications(expected: { - classificationType: string; - text: string; - }[]): void; - verifySyntacticClassifications(expected: { - classificationType: string; - text: string; - }[]): void; - printOutliningSpans(): void; - verifyOutliningSpans(spans: Range[], kind?: "comment" | "region" | "code" | "imports"): void; - verifyTodoComments(descriptors: string[], spans: Range[]): void; - /** - * Finds and applies a code action corresponding to the supplied parameters. - * If index is undefined, applies the unique code action available. - * @param errorCode The error code that generated the code action. - * @param index The nth (0-index-based) codeaction available generated by errorCode. - */ - getAndApplyCodeActions(errorCode?: number, index?: number): void; - applyCodeActionFromCompletion(markerName: string, options: FourSlashInterface.VerifyCompletionActionOptions): void; - verifyRangeIs(expectedText: string, includeWhiteSpace?: boolean): void; - /** - * Compares expected text to the text that would be in the sole range - * (ie: [|...|]) in the file after applying the codefix sole codefix - * in the source file. - */ - verifyRangeAfterCodeFix(expectedText: string, includeWhiteSpace?: boolean, errorCode?: number, index?: number): void; - verifyCodeFixAll({ fixId, fixAllDescription, newFileContent, commands: expectedCommands }: FourSlashInterface.VerifyCodeFixAllOptions): void; - /** - * Applies fixes for the errors in fileName and compares the results to - * expectedContents after all fixes have been applied. - * - * Note: applying one codefix may generate another (eg: remove duplicate implements - * may generate an extends -> interface conversion fix). - * @param expectedContents The contents of the file after the fixes are applied. - * @param fileName The file to check. If not supplied, the current open file is used. - */ - verifyFileAfterCodeFix(expectedContents: string, fileName?: string): void; - verifyCodeFix(options: FourSlashInterface.VerifyCodeFixOptions): void; - private verifyNewContent; - /** - * Rerieves a codefix satisfying the parameters, or undefined if no such codefix is found. - * @param fileName Path to file where error should be retrieved from. - */ - private getCodeFixes; - private applyCodeActions; - private applyChanges; - verifyImportFixAtPosition(expectedTextArray: string[], errorCode: number | undefined, preferences: ts.UserPreferences | undefined): void; - verifyDocCommentTemplate(expected: ts.TextInsertion | undefined): void; - verifyBraceCompletionAtPosition(negative: boolean, openingBrace: string): void; - verifyJsxClosingTag(map: { - [markerName: string]: ts.JsxClosingTagInfo | undefined; - }): void; - verifyMatchingBracePosition(bracePosition: number, expectedMatchPosition: number): void; - verifyNoMatchingBracePosition(bracePosition: number): void; - verifySpanOfEnclosingComment(negative: boolean, onlyMultiLineDiverges?: boolean): void; - verifyNavigationItemsCount(expected: number, searchValue: string, matchKind?: string, fileName?: string): void; - verifyNavigationItemsListContains(name: string, kind: string, searchValue: string, matchKind: string, fileName?: string, parentName?: string): void; - verifyNavigationBar(json: any, options: { - checkSpans?: boolean; - } | undefined): void; - verifyNavigationTree(json: any, options: { - checkSpans?: boolean; - } | undefined): void; - private verifyNavigationTreeOrBar; - printNavigationItems(searchValue: string): void; - printNavigationBar(): void; - private getOccurrencesAtCurrentPosition; - verifyOccurrencesAtPositionListContains(fileName: string, start: number, end: number, isWriteAccess?: boolean): undefined; - verifyOccurrencesAtPositionListCount(expectedCount: number): void; - private getDocumentHighlightsAtCurrentPosition; - verifyRangesAreOccurrences(isWriteAccess?: boolean): void; - verifyRangesWithSameTextAreRenameLocations(): void; - verifyRangesWithSameTextAreDocumentHighlights(): void; - verifyDocumentHighlightsOf(startRange: Range, ranges: Range[], options: FourSlashInterface.VerifyDocumentHighlightsOptions | undefined): void; - verifyRangesAreDocumentHighlights(ranges: Range[] | undefined, options: FourSlashInterface.VerifyDocumentHighlightsOptions | undefined): void; - verifyNoDocumentHighlights(startRange: Range): void; - private verifyDocumentHighlights; - verifyCodeFixAvailable(negative: boolean, expected: FourSlashInterface.VerifyCodeFixAvailableOptions[] | undefined): void; - verifyApplicableRefactorAvailableAtMarker(negative: boolean, markerName: string): void; - private getSelection; - verifyRefactorAvailable(negative: boolean, name: string, actionName?: string): void; - verifyRefactor({ name, actionName, refactors }: FourSlashInterface.VerifyRefactorOptions): void; - verifyApplicableRefactorAvailableForRange(negative: boolean): void; - applyRefactor({ refactorName, actionName, actionDescription, newContent: newContentWithRenameMarker }: FourSlashInterface.ApplyRefactorOptions): void; - noMoveToNewFile(): void; - moveToNewFile(options: FourSlashInterface.MoveToNewFileOptions): void; - private testNewFileContents; - verifyFileAfterApplyingRefactorAtMarker(markerName: string, expectedContent: string, refactorNameToApply: string, actionName: string, formattingOptions?: ts.FormatCodeSettings): void; - printAvailableCodeFixes(): void; - private getCurrentLineContent; - private assertItemInCompletionList; - private findFile; - private getLineColStringAtPosition; - private getTextSpanForRangeAtIndex; - getMarkerByName(markerName: string): Marker; - setCancelled(numberOfCalls: number): void; - resetCancelled(): void; - private static textSpansEqual; - getEditsForFileRename(options: FourSlashInterface.GetEditsForFileRenameOptions): void; - private getApplicableRefactors; - } - function runFourSlashTest(basePath: string, testType: FourSlashTestType, fileName: string): void; - function runFourSlashTestContent(basePath: string, testType: FourSlashTestType, content: string, fileName: string): void; -} -declare namespace FourSlashInterface { - class Test { - private state; - constructor(state: FourSlash.TestState); - markers(): FourSlash.Marker[]; - markerNames(): string[]; - marker(name: string): FourSlash.Marker; - markerName(m: FourSlash.Marker): string; - ranges(): FourSlash.Range[]; - spans(): ts.TextSpan[]; - rangesByText(): ts.Map; - markerByName(s: string): FourSlash.Marker; - symbolsInScope(range: FourSlash.Range): ts.Symbol[]; - setTypesRegistry(map: ts.MapLike): void; - } - class GoTo { - private state; - constructor(state: FourSlash.TestState); - marker(name?: string | FourSlash.Marker): void; - eachMarker(markers: ReadonlyArray, action: (marker: FourSlash.Marker, index: number) => void): void; - eachMarker(action: (marker: FourSlash.Marker, index: number) => void): void; - rangeStart(range: FourSlash.Range): void; - eachRange(action: () => void): void; - bof(): void; - eof(): void; - implementation(): void; - position(position: number, fileNameOrIndex?: string | number): void; - file(indexOrName: number | string, content?: string, scriptKindName?: string): void; - select(startMarker: string, endMarker: string): void; - selectRange(range: FourSlash.Range): void; - } - class VerifyNegatable { - protected state: FourSlash.TestState; - private negative; - not: VerifyNegatable; - allowedClassElementKeywords: string[]; - allowedConstructorParameterKeywords: string[]; - constructor(state: FourSlash.TestState, negative?: boolean); - completionListCount(expectedCount: number): void; - completionListContains(entryId: string | ts.Completions.CompletionEntryIdentifier, text?: string, documentation?: string, kind?: string | { - kind?: string; - kindModifiers?: string; - }, spanIndex?: number, hasAction?: boolean, options?: VerifyCompletionListContainsOptions): void; - completionListItemsCountIsGreaterThan(count: number): void; - assertHasRanges(ranges: FourSlash.Range[]): void; - completionListIsEmpty(): void; - completionListContainsClassElementKeywords(): void; - completionListContainsConstructorParameterKeywords(): void; - completionListIsGlobal(expected: boolean): void; - completionListAllowsNewIdentifier(): void; - noSignatureHelp(...markers: string[]): void; - signatureHelp(...options: VerifySignatureHelpOptions[]): void; - errorExistsBetweenMarkers(startMarker: string, endMarker: string): void; - errorExistsAfterMarker(markerName?: string): void; - errorExistsBeforeMarker(markerName?: string): void; - quickInfoExists(): void; - typeDefinitionCountIs(expectedCount: number): void; - implementationListIsEmpty(): void; - isValidBraceCompletionAtPosition(openingBrace: string): void; - jsxClosingTag(map: { - [markerName: string]: ts.JsxClosingTagInfo | undefined; - }): void; - isInCommentAtPosition(onlyMultiLineDiverges?: boolean): void; - codeFix(options: VerifyCodeFixOptions): void; - codeFixAvailable(options?: VerifyCodeFixAvailableOptions[]): void; - applicableRefactorAvailableAtMarker(markerName: string): void; - applicableRefactorAvailableForRange(): void; - refactor(options: VerifyRefactorOptions): void; - refactorAvailable(name: string, actionName?: string): void; - } - class Verify extends VerifyNegatable { - constructor(state: FourSlash.TestState); - completionsAt(markerName: ArrayOrSingle, completions: ReadonlyArray, options?: CompletionsAtOptions): void; - completions(...optionsArray: VerifyCompletionsOptions[]): void; - quickInfoIs(expectedText: string, expectedDocumentation?: string): void; - quickInfoAt(markerName: string, expectedText: string, expectedDocumentation?: string): void; - quickInfos(namesAndTexts: { - [name: string]: string; - }): void; - caretAtMarker(markerName?: string): void; - indentationIs(numberOfSpaces: number): void; - indentationAtPositionIs(fileName: string, position: number, numberOfSpaces: number, indentStyle?: ts.IndentStyle, baseIndentSize?: number): void; - textAtCaretIs(text: string): void; - /** - * Compiles the current file and evaluates 'expr' in a context containing - * the emitted output, then compares (using ===) the result of that expression - * to 'value'. Do not use this function with external modules as it is not supported. - */ - eval(expr: string, value: any): void; - currentLineContentIs(text: string): void; - currentFileContentIs(text: string): void; - goToDefinitionIs(endMarkers: ArrayOrSingle): void; - goToDefinition(startMarkerName: ArrayOrSingle, endMarkerName: ArrayOrSingle, range?: FourSlash.Range): void; - goToDefinition(startsAndEnds: [ArrayOrSingle, ArrayOrSingle][] | { - [startMarkerName: string]: ArrayOrSingle; - }): void; - goToType(startMarkerName: ArrayOrSingle, endMarkerName: ArrayOrSingle): void; - goToType(startsAndEnds: [ArrayOrSingle, ArrayOrSingle][] | { - [startMarkerName: string]: ArrayOrSingle; - }): void; - goToDefinitionForMarkers(...markerNames: string[]): void; - goToDefinitionName(name: string, containerName: string): void; - verifyGetEmitOutputForCurrentFile(expected: string): void; - verifyGetEmitOutputContentsForCurrentFile(expected: ts.OutputFile[]): void; - symbolAtLocation(startRange: FourSlash.Range, ...declarationRanges: FourSlash.Range[]): void; - typeOfSymbolAtLocation(range: FourSlash.Range, symbol: ts.Symbol, expected: string): void; - referenceGroups(starts: ArrayOrSingle | ArrayOrSingle, parts: ReferenceGroup[]): void; - noReferences(markerNameOrRange?: string | FourSlash.Range): void; - getReferencesForServerTest(expected: ReadonlyArray): void; - singleReferenceGroup(definition: ReferenceGroupDefinition, ranges?: FourSlash.Range[]): void; - findReferencesDefinitionDisplayPartsAtCaretAre(expected: ts.SymbolDisplayPart[]): void; - noErrors(): void; - numberOfErrorsInCurrentFile(expected: number): void; - baselineCurrentFileBreakpointLocations(): void; - baselineCurrentFileNameOrDottedNameSpans(): void; - baselineGetEmitOutput(insertResultsIntoVfs?: boolean): void; - baselineQuickInfo(): void; - nameOrDottedNameSpanTextIs(text: string): void; - outliningSpansInCurrentFile(spans: FourSlash.Range[], kind?: "comment" | "region" | "code" | "imports"): void; - todoCommentsInCurrentFile(descriptors: string[]): void; - matchingBracePositionInCurrentFile(bracePosition: number, expectedMatchPosition: number): void; - noMatchingBracePositionInCurrentFile(bracePosition: number): void; - docCommentTemplateAt(marker: string | FourSlash.Marker, expectedOffset: number, expectedText: string): void; - noDocCommentTemplateAt(marker: string | FourSlash.Marker): void; - rangeAfterCodeFix(expectedText: string, includeWhiteSpace?: boolean, errorCode?: number, index?: number): void; - codeFixAll(options: VerifyCodeFixAllOptions): void; - fileAfterApplyingRefactorAtMarker(markerName: string, expectedContent: string, refactorNameToApply: string, actionName: string, formattingOptions?: ts.FormatCodeSettings): void; - rangeIs(expectedText: string, includeWhiteSpace?: boolean): void; - getAndApplyCodeFix(errorCode?: number, index?: number): void; - applyCodeActionFromCompletion(markerName: string, options: VerifyCompletionActionOptions): void; - importFixAtPosition(expectedTextArray: string[], errorCode?: number, preferences?: ts.UserPreferences): void; - navigationBar(json: any, options?: { - checkSpans?: boolean; - }): void; - navigationTree(json: any, options?: { - checkSpans?: boolean; - }): void; - navigationItemsListCount(count: number, searchValue: string, matchKind?: string, fileName?: string): void; - navigationItemsListContains(name: string, kind: string, searchValue: string, matchKind: string, fileName?: string, parentName?: string): void; - occurrencesAtPositionContains(range: FourSlash.Range, isWriteAccess?: boolean): void; - occurrencesAtPositionCount(expectedCount: number): void; - rangesAreOccurrences(isWriteAccess?: boolean): void; - rangesWithSameTextAreRenameLocations(): void; - rangesAreRenameLocations(options?: FourSlash.Range[] | { - findInStrings?: boolean; - findInComments?: boolean; - ranges?: FourSlash.Range[]; - }): void; - rangesAreDocumentHighlights(ranges?: FourSlash.Range[], options?: VerifyDocumentHighlightsOptions): void; - rangesWithSameTextAreDocumentHighlights(): void; - documentHighlightsOf(startRange: FourSlash.Range, ranges: FourSlash.Range[], options?: VerifyDocumentHighlightsOptions): void; - noDocumentHighlights(startRange: FourSlash.Range): void; - completionEntryDetailIs(entryName: string, text: string, documentation?: string, kind?: string, tags?: ts.JSDocTagInfo[]): void; - /** - * This method *requires* a contiguous, complete, and ordered stream of classifications for a file. - */ - syntacticClassificationsAre(...classifications: { - classificationType: string; - text: string; - }[]): void; - /** - * This method *requires* an ordered stream of classifications for a file, and spans are highly recommended. - */ - semanticClassificationsAre(...classifications: Classification[]): void; - renameInfoSucceeded(displayName?: string, fullDisplayName?: string, kind?: string, kindModifiers?: string): void; - renameInfoFailed(message?: string): void; - renameLocations(startRanges: ArrayOrSingle, options: FourSlash.Range[] | { - findInStrings?: boolean; - findInComments?: boolean; - ranges: FourSlash.Range[]; - }): void; - verifyQuickInfoDisplayParts(kind: string, kindModifiers: string, textSpan: FourSlash.TextSpan, displayParts: ts.SymbolDisplayPart[], documentation: ts.SymbolDisplayPart[], tags: ts.JSDocTagInfo[]): void; - getSyntacticDiagnostics(expected: ReadonlyArray): void; - getSemanticDiagnostics(expected: ReadonlyArray): void; - getSuggestionDiagnostics(expected: ReadonlyArray): void; - ProjectInfo(expected: string[]): void; - allRangesAppearInImplementationList(markerName: string): void; - getEditsForFileRename(options: GetEditsForFileRenameOptions): void; - moveToNewFile(options: MoveToNewFileOptions): void; - noMoveToNewFile(): void; - } - class Edit { - private state; - constructor(state: FourSlash.TestState); - backspace(count?: number): void; - deleteAtCaret(times?: number): void; - replace(start: number, length: number, text: string): void; - paste(text: string): void; - insert(text: string): void; - insertLine(text: string): void; - insertLines(...lines: string[]): void; - moveRight(count?: number): void; - moveLeft(count?: number): void; - enableFormatting(): void; - disableFormatting(): void; - applyRefactor(options: ApplyRefactorOptions): void; - } - class Debug { - private state; - constructor(state: FourSlash.TestState); - printCurrentParameterHelp(): void; - printCurrentFileState(): void; - printCurrentFileStateWithWhitespace(): void; - printCurrentFileStateWithoutCaret(): void; - printCurrentQuickInfo(): void; - printCurrentSignatureHelp(): void; - printCompletionListMembers(options: ts.UserPreferences | undefined): void; - printAvailableCodeFixes(): void; - printBreakpointLocation(pos: number): void; - printBreakpointAtCurrentLocation(): void; - printNameOrDottedNameSpans(pos: number): void; - printErrorList(): void; - printNavigationItems(searchValue?: string): void; - printNavigationBar(): void; - printContext(): void; - printOutliningSpans(): void; - } - class Format { - private state; - constructor(state: FourSlash.TestState); - document(): void; - copyFormatOptions(): ts.FormatCodeSettings; - setFormatOptions(options: ts.FormatCodeOptions): ts.FormatCodeSettings; - selection(startMarker: string, endMarker: string): void; - onType(posMarker: string, key: string): void; - setOption(name: keyof ts.FormatCodeSettings, value: number | string | boolean): void; - } - class Cancellation { - private state; - constructor(state: FourSlash.TestState); - resetCancelled(): void; - setCancelled(numberOfCalls?: number): void; - } - interface Classification { - classificationType: ts.ClassificationTypeNames; - text: string; - textSpan?: FourSlash.TextSpan; - } - namespace Classification { - function comment(text: string, position?: number): Classification; - function identifier(text: string, position?: number): Classification; - function keyword(text: string, position?: number): Classification; - function numericLiteral(text: string, position?: number): Classification; - function operator(text: string, position?: number): Classification; - function stringLiteral(text: string, position?: number): Classification; - function whiteSpace(text: string, position?: number): Classification; - function text(text: string, position?: number): Classification; - function punctuation(text: string, position?: number): Classification; - function docCommentTagName(text: string, position?: number): Classification; - function className(text: string, position?: number): Classification; - function enumName(text: string, position?: number): Classification; - function interfaceName(text: string, position?: number): Classification; - function moduleName(text: string, position?: number): Classification; - function typeParameterName(text: string, position?: number): Classification; - function parameterName(text: string, position?: number): Classification; - function typeAliasName(text: string, position?: number): Classification; - function jsxOpenTagName(text: string, position?: number): Classification; - function jsxCloseTagName(text: string, position?: number): Classification; - function jsxSelfClosingTagName(text: string, position?: number): Classification; - function jsxAttribute(text: string, position?: number): Classification; - function jsxText(text: string, position?: number): Classification; - function jsxAttributeStringLiteralValue(text: string, position?: number): Classification; - } - interface ReferenceGroup { - definition: ReferenceGroupDefinition; - ranges: FourSlash.Range[]; - } - type ReferenceGroupDefinition = string | { - text: string; - range: FourSlash.Range; - }; - interface ApplyRefactorOptions { - refactorName: string; - actionName: string; - actionDescription: string; - newContent: string; - } - type ExpectedCompletionEntry = string | { - readonly name: string; - readonly insertText?: string; - readonly replacementSpan?: FourSlash.Range; - readonly hasAction?: boolean; - readonly isRecommended?: boolean; - readonly kind?: string; - readonly text: string; - readonly documentation: string; - readonly sourceDisplay?: string; - }; - interface CompletionsAtOptions extends Partial { - triggerCharacter?: ts.CompletionsTriggerCharacter; - isNewIdentifierLocation?: boolean; - } - interface VerifyCompletionsOptions { - readonly marker?: ArrayOrSingle; - readonly isNewIdentifierLocation?: boolean; - readonly exact?: ArrayOrSingle; - readonly includes?: ArrayOrSingle; - readonly excludes?: ArrayOrSingle; - readonly preferences?: ts.UserPreferences; - readonly triggerCharacter?: ts.CompletionsTriggerCharacter; - } - interface VerifySignatureHelpOptions { - readonly marker?: ArrayOrSingle; - /** @default 1 */ - readonly overloadsCount?: number; - /** @default undefined */ - readonly docComment?: string; - readonly text?: string; - readonly parameterName?: string; - readonly parameterSpan?: string; - /** @default undefined */ - readonly parameterDocComment?: string; - readonly parameterCount?: number; - readonly argumentCount?: number; - /** @default false */ - readonly isVariadic?: boolean; - /** @default ts.emptyArray */ - readonly tags?: ReadonlyArray; - } - type ArrayOrSingle = T | ReadonlyArray; - interface VerifyCompletionListContainsOptions extends ts.UserPreferences { - triggerCharacter?: ts.CompletionsTriggerCharacter; - sourceDisplay: string; - isRecommended?: true; - insertText?: string; - replacementSpan?: FourSlash.Range; - } - interface VerifyDocumentHighlightsOptions { - filesToSearch?: ReadonlyArray; - } - interface NewContentOptions { - newFileContent?: string | { - readonly [filename: string]: string; - }; - newRangeContent?: string; - } - interface VerifyCodeFixOptions extends NewContentOptions { - description: string; - errorCode?: number; - index?: number; - preferences?: ts.UserPreferences; - } - interface VerifyCodeFixAvailableOptions { - description: string; - commands?: ts.CodeActionCommand[]; - } - interface VerifyCodeFixAllOptions { - fixId: string; - fixAllDescription: string; - newFileContent: string; - commands: ReadonlyArray<{}>; - } - interface VerifyRefactorOptions { - name: string; - actionName: string; - refactors: ts.ApplicableRefactorInfo[]; - } - interface VerifyCompletionActionOptions extends NewContentOptions { - name: string; - source?: string; - description: string; - preferences?: ts.UserPreferences; - } - interface Diagnostic { - message: string; - range?: FourSlash.Range; - code: number; - reportsUnnecessary?: true; - } - interface GetEditsForFileRenameOptions { - readonly oldPath: string; - readonly newPath: string; - readonly newFileContents: { - readonly [fileName: string]: string; - }; - } - interface MoveToNewFileOptions { - readonly newFileContents: { - readonly [fileName: string]: string; - }; - readonly preferences?: ts.UserPreferences; - } -} -interface TypeWriterTypeResult { - line: number; - syntaxKind: number; - sourceText: string; - type: string; -} -interface TypeWriterSymbolResult { - line: number; - syntaxKind: number; - sourceText: string; - symbol: string; -} -interface TypeWriterResult { - line: number; - syntaxKind: number; - sourceText: string; - symbol?: string; - type?: string; -} -declare class TypeWriterWalker { - private program; - currentSourceFile: ts.SourceFile; - private checker; - constructor(program: ts.Program, fullTypeCheck: boolean); - getSymbols(fileName: string): IterableIterator; - getTypes(fileName: string): IterableIterator; - private visitNode; - private writeTypeOrSymbol; -} -interface FileInformation { - contents?: string; - contentsPath?: string; - codepage: number; - bom?: string; -} -interface FindFileResult { -} -interface IoLogFile { - path: string; - codepage: number; - result?: FileInformation; -} -interface IoLog { - timestamp: string; - arguments: string[]; - executingPath: string; - currentDirectory: string; - useCustomLibraryFile?: boolean; - filesRead: IoLogFile[]; - filesWritten: { - path: string; - contents?: string; - contentsPath?: string; - bom: boolean; - }[]; - filesDeleted: string[]; - filesAppended: { - path: string; - contents?: string; - contentsPath?: string; - }[]; - fileExists: { - path: string; - result?: boolean; - }[]; - filesFound: { - path: string; - pattern: string; - result?: FindFileResult; - }[]; - dirs: { - path: string; - re: string; - re_m: boolean; - re_g: boolean; - re_i: boolean; - opts: { - recursive?: boolean; - }; - result?: string[]; - }[]; - dirExists: { - path: string; - result?: boolean; - }[]; - dirsCreated: string[]; - pathsResolved: { - path: string; - result?: string; - }[]; - directoriesRead: { - path: string; - extensions: ReadonlyArray | undefined; - exclude: ReadonlyArray | undefined; - include: ReadonlyArray | undefined; - depth: number | undefined; - result: ReadonlyArray; - }[]; - useCaseSensitiveFileNames?: boolean; -} -interface PlaybackControl { - startReplayFromFile(logFileName: string): void; - startReplayFromString(logContents: string): void; - startReplayFromData(log: IoLog): void; - endReplay(): void; - startRecord(logFileName: string): void; - endRecord(): void; -} -declare namespace Playback { - interface PlaybackIO extends Harness.IO, PlaybackControl { - } - interface PlaybackSystem extends ts.System, PlaybackControl { - } - function newStyleLogIntoOldStyleLog(log: IoLog, host: ts.System | Harness.IO, baseName: string): IoLog; - function oldStyleLogIntoNewStyleLog(log: IoLog, writeFile: typeof Harness.IO.writeFile, baseTestName: string): IoLog; - function wrapIO(underlying: Harness.IO): PlaybackIO; - function wrapSystem(underlying: ts.System): PlaybackSystem; -} diff --git a/src/built/local/harness.js b/src/built/local/harness.js deleted file mode 100644 index d1db38a129e..00000000000 --- a/src/built/local/harness.js +++ /dev/null @@ -1,11641 +0,0 @@ -"use strict"; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; -var __assign = (this && this.__assign) || Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; -}; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var collections; -(function (collections) { - var SortedMap = /** @class */ (function () { - function SortedMap(comparer, iterable) { - this._keys = []; - this._values = []; - this._version = 0; - this._copyOnWrite = false; - this._comparer = typeof comparer === "object" ? comparer.comparer : comparer; - this._order = typeof comparer === "object" && comparer.sort === "insertion" ? [] : undefined; - if (iterable) { - var iterator = getIterator(iterable); - try { - for (var i = nextResult(iterator); i; i = nextResult(iterator)) { - var _a = i.value, key = _a[0], value = _a[1]; - this.set(key, value); - } - } - finally { - closeIterator(iterator); - } - } - } - Object.defineProperty(SortedMap.prototype, "size", { - get: function () { - return this._keys.length; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SortedMap.prototype, "comparer", { - get: function () { - return this._comparer; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SortedMap.prototype, Symbol.toStringTag, { - get: function () { - return "SortedMap"; - }, - enumerable: true, - configurable: true - }); - SortedMap.prototype.has = function (key) { - return ts.binarySearch(this._keys, key, ts.identity, this._comparer) >= 0; - }; - SortedMap.prototype.get = function (key) { - var index = ts.binarySearch(this._keys, key, ts.identity, this._comparer); - return index >= 0 ? this._values[index] : undefined; - }; - SortedMap.prototype.set = function (key, value) { - var index = ts.binarySearch(this._keys, key, ts.identity, this._comparer); - if (index >= 0) { - this._values[index] = value; - } - else { - this.writePreamble(); - insertAt(this._keys, ~index, key); - insertAt(this._values, ~index, value); - if (this._order) - insertAt(this._order, ~index, this._version); - this.writePostScript(); - } - return this; - }; - SortedMap.prototype.delete = function (key) { - var index = ts.binarySearch(this._keys, key, ts.identity, this._comparer); - if (index >= 0) { - this.writePreamble(); - ts.orderedRemoveItemAt(this._keys, index); - ts.orderedRemoveItemAt(this._values, index); - if (this._order) - ts.orderedRemoveItemAt(this._order, index); - this.writePostScript(); - return true; - } - return false; - }; - SortedMap.prototype.clear = function () { - if (this.size > 0) { - this.writePreamble(); - this._keys.length = 0; - this._values.length = 0; - if (this._order) - this._order.length = 0; - this.writePostScript(); - } - }; - SortedMap.prototype.forEach = function (callback, thisArg) { - var keys = this._keys; - var values = this._values; - var indices = this.getIterationOrder(); - var version = this._version; - this._copyOnWrite = true; - try { - if (indices) { - for (var _i = 0, indices_1 = indices; _i < indices_1.length; _i++) { - var i = indices_1[_i]; - callback.call(thisArg, values[i], keys[i], this); - } - } - else { - for (var i = 0; i < keys.length; i++) { - callback.call(thisArg, values[i], keys[i], this); - } - } - } - finally { - if (version === this._version) { - this._copyOnWrite = false; - } - } - }; - SortedMap.prototype.keys = function () { - var keys, indices, version, _i, indices_2, i; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - keys = this._keys; - indices = this.getIterationOrder(); - version = this._version; - this._copyOnWrite = true; - _a.label = 1; - case 1: - _a.trys.push([1, , 9, 10]); - if (!indices) return [3 /*break*/, 6]; - _i = 0, indices_2 = indices; - _a.label = 2; - case 2: - if (!(_i < indices_2.length)) return [3 /*break*/, 5]; - i = indices_2[_i]; - return [4 /*yield*/, keys[i]]; - case 3: - _a.sent(); - _a.label = 4; - case 4: - _i++; - return [3 /*break*/, 2]; - case 5: return [3 /*break*/, 8]; - case 6: return [5 /*yield**/, __values(keys)]; - case 7: - _a.sent(); - _a.label = 8; - case 8: return [3 /*break*/, 10]; - case 9: - if (version === this._version) { - this._copyOnWrite = false; - } - return [7 /*endfinally*/]; - case 10: return [2 /*return*/]; - } - }); - }; - SortedMap.prototype.values = function () { - var values, indices, version, _i, indices_3, i; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - values = this._values; - indices = this.getIterationOrder(); - version = this._version; - this._copyOnWrite = true; - _a.label = 1; - case 1: - _a.trys.push([1, , 9, 10]); - if (!indices) return [3 /*break*/, 6]; - _i = 0, indices_3 = indices; - _a.label = 2; - case 2: - if (!(_i < indices_3.length)) return [3 /*break*/, 5]; - i = indices_3[_i]; - return [4 /*yield*/, values[i]]; - case 3: - _a.sent(); - _a.label = 4; - case 4: - _i++; - return [3 /*break*/, 2]; - case 5: return [3 /*break*/, 8]; - case 6: return [5 /*yield**/, __values(values)]; - case 7: - _a.sent(); - _a.label = 8; - case 8: return [3 /*break*/, 10]; - case 9: - if (version === this._version) { - this._copyOnWrite = false; - } - return [7 /*endfinally*/]; - case 10: return [2 /*return*/]; - } - }); - }; - SortedMap.prototype.entries = function () { - var keys, values, indices, version, _i, indices_4, i, i; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - keys = this._keys; - values = this._values; - indices = this.getIterationOrder(); - version = this._version; - this._copyOnWrite = true; - _a.label = 1; - case 1: - _a.trys.push([1, , 11, 12]); - if (!indices) return [3 /*break*/, 6]; - _i = 0, indices_4 = indices; - _a.label = 2; - case 2: - if (!(_i < indices_4.length)) return [3 /*break*/, 5]; - i = indices_4[_i]; - return [4 /*yield*/, [keys[i], values[i]]]; - case 3: - _a.sent(); - _a.label = 4; - case 4: - _i++; - return [3 /*break*/, 2]; - case 5: return [3 /*break*/, 10]; - case 6: - i = 0; - _a.label = 7; - case 7: - if (!(i < keys.length)) return [3 /*break*/, 10]; - return [4 /*yield*/, [keys[i], values[i]]]; - case 8: - _a.sent(); - _a.label = 9; - case 9: - i++; - return [3 /*break*/, 7]; - case 10: return [3 /*break*/, 12]; - case 11: - if (version === this._version) { - this._copyOnWrite = false; - } - return [7 /*endfinally*/]; - case 12: return [2 /*return*/]; - } - }); - }; - SortedMap.prototype[Symbol.iterator] = function () { - return this.entries(); - }; - SortedMap.prototype.writePreamble = function () { - if (this._copyOnWrite) { - this._keys = this._keys.slice(); - this._values = this._values.slice(); - if (this._order) - this._order = this._order.slice(); - this._copyOnWrite = false; - } - }; - SortedMap.prototype.writePostScript = function () { - this._version++; - }; - SortedMap.prototype.getIterationOrder = function () { - if (this._order) { - var order_1 = this._order; - return this._order - .map(function (_, i) { return i; }) - .sort(function (x, y) { return order_1[x] - order_1[y]; }); - } - return undefined; - }; - return SortedMap; - }()); - collections.SortedMap = SortedMap; - function insertAt(array, index, value) { - if (index === 0) { - array.unshift(value); - } - else if (index === array.length) { - array.push(value); - } - else { - for (var i = array.length; i > index; i--) { - array[i] = array[i - 1]; - } - array[index] = value; - } - } - collections.insertAt = insertAt; - function getIterator(iterable) { - return iterable[Symbol.iterator](); - } - collections.getIterator = getIterator; - function nextResult(iterator) { - var result = iterator.next(); - return result.done ? undefined : result; - } - collections.nextResult = nextResult; - function closeIterator(iterator) { - var fn = iterator.return; - if (typeof fn === "function") - fn.call(iterator); - } - collections.closeIterator = closeIterator; - /** - * A collection of metadata that supports inheritance. - */ - var Metadata = /** @class */ (function () { - function Metadata(parent) { - this._version = 0; - this._size = -1; - this._parent = parent; - this._map = Object.create(parent ? parent._map : null); // tslint:disable-line:no-null-keyword - } - Object.defineProperty(Metadata.prototype, "size", { - get: function () { - if (this._size === -1 || (this._parent && this._parent._version !== this._parentVersion)) { - var size = 0; - for (var _ in this._map) - size++; - this._size = size; - if (this._parent) { - this._parentVersion = this._parent._version; - } - } - return this._size; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Metadata.prototype, "parent", { - get: function () { - return this._parent; - }, - enumerable: true, - configurable: true - }); - Metadata.prototype.has = function (key) { - return this._map[Metadata._escapeKey(key)] !== undefined; - }; - Metadata.prototype.get = function (key) { - var value = this._map[Metadata._escapeKey(key)]; - return value === Metadata._undefinedValue ? undefined : value; - }; - Metadata.prototype.set = function (key, value) { - this._map[Metadata._escapeKey(key)] = value === undefined ? Metadata._undefinedValue : value; - this._size = -1; - this._version++; - return this; - }; - Metadata.prototype.delete = function (key) { - var escapedKey = Metadata._escapeKey(key); - if (this._map[escapedKey] !== undefined) { - delete this._map[escapedKey]; - this._size = -1; - this._version++; - return true; - } - return false; - }; - Metadata.prototype.clear = function () { - this._map = Object.create(this._parent ? this._parent._map : null); // tslint:disable-line:no-null-keyword - this._size = -1; - this._version++; - }; - Metadata.prototype.forEach = function (callback) { - for (var key in this._map) { - callback(this._map[key], Metadata._unescapeKey(key), this); - } - }; - Metadata._escapeKey = function (text) { - return (text.length >= 2 && text.charAt(0) === "_" && text.charAt(1) === "_" ? "_" + text : text); - }; - Metadata._unescapeKey = function (text) { - return (text.length >= 3 && text.charAt(0) === "_" && text.charAt(1) === "_" && text.charAt(2) === "_" ? text.slice(1) : text); - }; - Metadata._undefinedValue = {}; - return Metadata; - }()); - collections.Metadata = Metadata; -})(collections || (collections = {})); -/** - * Common utilities - */ -var utils; -(function (utils) { - var testPathPrefixRegExp = /(?:(file:\/{3})|\/)\.(ts|lib|src)\//g; - function removeTestPathPrefixes(text, retainTrailingDirectorySeparator) { - return text !== undefined ? text.replace(testPathPrefixRegExp, function (_, scheme) { return scheme || (retainTrailingDirectorySeparator ? "/" : ""); }) : undefined; // TODO: GH#18217 - } - utils.removeTestPathPrefixes = removeTestPathPrefixes; - /** - * Removes leading indentation from a template literal string. - */ - function dedent(array) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - var text = array[0]; - for (var i = 0; i < args.length; i++) { - text += args[i]; - text += array[i + 1]; - } - var lineTerminatorRegExp = /\r\n?|\n/g; - var lines = []; - var lineTerminators = []; - var match; - var lineStart = 0; - while (match = lineTerminatorRegExp.exec(text)) { - if (lineStart !== match.index || lines.length > 0) { - lines.push(text.slice(lineStart, match.index)); - lineTerminators.push(match[0]); - } - lineStart = match.index + match[0].length; - } - if (lineStart < text.length) { - lines.push(text.slice(lineStart)); - } - var indentation = guessIndentation(lines); - var result = ""; - for (var i = 0; i < lines.length; i++) { - var lineText = lines[i]; - var line = indentation ? lineText.slice(indentation) : lineText; - result += line; - if (i < lineTerminators.length) { - result += lineTerminators[i]; - } - } - return result; - } - utils.dedent = dedent; - function guessIndentation(lines) { - var indentation; - for (var _i = 0, lines_1 = lines; _i < lines_1.length; _i++) { - var line = lines_1[_i]; - for (var i = 0; i < line.length && (indentation === undefined || i < indentation); i++) { - if (!ts.isWhiteSpaceLike(line.charCodeAt(i))) { - if (indentation === undefined || i < indentation) { - indentation = i; - break; - } - } - } - } - return indentation; - } - function toUtf8(text) { - return new Buffer(text).toString("utf8"); - } - utils.toUtf8 = toUtf8; - function getByteOrderMarkLength(text) { - if (text.length >= 1) { - var ch0 = text.charCodeAt(0); - if (ch0 === 0xfeff) - return 1; - if (ch0 === 0xfe) - return text.length >= 2 && text.charCodeAt(1) === 0xff ? 2 : 0; - if (ch0 === 0xff) - return text.length >= 2 && text.charCodeAt(1) === 0xfe ? 2 : 0; - if (ch0 === 0xef) - return text.length >= 3 && text.charCodeAt(1) === 0xbb && text.charCodeAt(2) === 0xbf ? 3 : 0; - } - return 0; - } - utils.getByteOrderMarkLength = getByteOrderMarkLength; - function removeByteOrderMark(text) { - var length = getByteOrderMarkLength(text); - return length ? text.slice(length) : text; - } - utils.removeByteOrderMark = removeByteOrderMark; - function addUTF8ByteOrderMark(text) { - return getByteOrderMarkLength(text) === 0 ? "\u00EF\u00BB\u00BF" + text : text; - } - utils.addUTF8ByteOrderMark = addUTF8ByteOrderMark; -})(utils || (utils = {})); -// NOTE: The contents of this file are all exported from the namespace 'documents'. This is to -// support the eventual conversion of harness into a modular system. -var documents; -(function (documents) { - var TextDocument = /** @class */ (function () { - function TextDocument(file, text, meta) { - this.file = file; - this.text = text; - this.meta = meta || new Map(); - } - Object.defineProperty(TextDocument.prototype, "lineStarts", { - get: function () { - return this._lineStarts || (this._lineStarts = ts.computeLineStarts(this.text)); - }, - enumerable: true, - configurable: true - }); - TextDocument.fromTestFile = function (file) { - return new TextDocument(file.unitName, file.content, file.fileOptions && Object.keys(file.fileOptions) - .reduce(function (meta, key) { return meta.set(key, file.fileOptions[key]); }, new Map())); - }; - TextDocument.prototype.asTestFile = function () { - return this._testFile || (this._testFile = { - unitName: this.file, - content: this.text, - fileOptions: Array.from(this.meta) - .reduce(function (obj, _a) { - var key = _a[0], value = _a[1]; - return (obj[key] = value, obj); - }, {}) - }); - }; - return TextDocument; - }()); - documents.TextDocument = TextDocument; - var SourceMap = /** @class */ (function () { - function SourceMap(mapFile, data) { - this.sources = []; - this.mappings = []; - this._emittedLineMappings = []; - this._sourceLineMappings = []; - this.raw = typeof data === "string" ? JSON.parse(data) : data; - this.mapFile = mapFile; - this.version = this.raw.version; - this.file = this.raw.file; - this.sourceRoot = this.raw.sourceRoot; - this.sources = this.raw.sources; - this.sourcesContent = this.raw.sourcesContent; - this.names = this.raw.names; - // populate mappings - var mappings = []; - var emittedLine = 0; - var emittedColumn = 0; - var sourceIndex = 0; - var sourceLine = 0; - var sourceColumn = 0; - var nameIndex = 0; - var match; - while (match = SourceMap._mappingRegExp.exec(this.raw.mappings)) { - if (match[1]) { - var segment = SourceMap._decodeVLQ(match[1]); - if (segment.length !== 1 && segment.length !== 4 && segment.length !== 5) { - throw new Error("Invalid VLQ"); - } - emittedColumn += segment[0]; - if (segment.length >= 4) { - sourceIndex += segment[1]; - sourceLine += segment[2]; - sourceColumn += segment[3]; - } - var mapping = { mappingIndex: mappings.length, emittedLine: emittedLine, emittedColumn: emittedColumn, sourceIndex: sourceIndex, sourceLine: sourceLine, sourceColumn: sourceColumn }; - if (segment.length === 5) { - nameIndex += segment[4]; - mapping.nameIndex = nameIndex; - } - mappings.push(mapping); - var mappingsForEmittedLine = this._emittedLineMappings[mapping.emittedLine] || (this._emittedLineMappings[mapping.emittedLine] = []); - mappingsForEmittedLine.push(mapping); - var mappingsForSource = this._sourceLineMappings[mapping.sourceIndex] || (this._sourceLineMappings[mapping.sourceIndex] = []); - var mappingsForSourceLine = mappingsForSource[mapping.sourceLine] || (mappingsForSource[mapping.sourceLine] = []); - mappingsForSourceLine.push(mapping); - } - else if (match[2]) { - emittedLine++; - emittedColumn = 0; - } - else { - throw new Error("Unrecognized character '" + match[0] + "'."); - } - } - this.mappings = mappings; - } - SourceMap.getUrl = function (text) { - var match; - var lastMatch; - while (match = SourceMap._sourceMappingURLRegExp.exec(text)) { - lastMatch = match; - } - return lastMatch ? lastMatch[1] : undefined; - }; - SourceMap.fromUrl = function (url) { - var match = SourceMap._dataURLRegExp.exec(url); - return match ? new SourceMap(/*mapFile*/ undefined, new Buffer(match[1], "base64").toString("utf8")) : undefined; - }; - SourceMap.fromSource = function (text) { - var url = this.getUrl(text); - return url === undefined ? undefined : this.fromUrl(url); - }; - SourceMap.prototype.getMappingsForEmittedLine = function (emittedLine) { - return this._emittedLineMappings[emittedLine]; - }; - SourceMap.prototype.getMappingsForSourceLine = function (sourceIndex, sourceLine) { - var mappingsForSource = this._sourceLineMappings[sourceIndex]; - return mappingsForSource && mappingsForSource[sourceLine]; - }; - SourceMap._decodeVLQ = function (text) { - var vlq = []; - var shift = 0; - var value = 0; - for (var i = 0; i < text.length; i++) { - var currentByte = SourceMap._base64Chars.indexOf(text.charAt(i)); - value += (currentByte & 31) << shift; - if ((currentByte & 32) === 0) { - vlq.push(value & 1 ? -(value >>> 1) : value >>> 1); - shift = 0; - value = 0; - } - else { - shift += 5; - } - } - return vlq; - }; - SourceMap._mappingRegExp = /([A-Za-z0-9+/]+),?|(;)|./g; - SourceMap._sourceMappingURLRegExp = /^\/\/[#@]\s*sourceMappingURL\s*=\s*(.*?)\s*$/mig; - SourceMap._dataURLRegExp = /^data:application\/json;base64,([a-z0-9+/=]+)$/i; - SourceMap._base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - return SourceMap; - }()); - documents.SourceMap = SourceMap; -})(documents || (documents = {})); -var vpath; -(function (vpath) { - vpath.sep = ts.directorySeparator; - vpath.normalizeSeparators = ts.normalizeSlashes; - vpath.isAbsolute = ts.isRootedDiskPath; - vpath.isRoot = ts.isDiskPathRoot; - vpath.hasTrailingSeparator = ts.hasTrailingDirectorySeparator; - vpath.addTrailingSeparator = ts.ensureTrailingDirectorySeparator; - vpath.removeTrailingSeparator = ts.removeTrailingDirectorySeparator; - vpath.normalize = ts.normalizePath; - vpath.combine = ts.combinePaths; - vpath.parse = ts.getPathComponents; - vpath.reduce = ts.reducePathComponents; - vpath.format = ts.getPathFromPathComponents; - vpath.resolve = ts.resolvePath; - vpath.compare = ts.comparePaths; - vpath.compareCaseSensitive = ts.comparePathsCaseSensitive; - vpath.compareCaseInsensitive = ts.comparePathsCaseInsensitive; - vpath.dirname = ts.getDirectoryPath; - vpath.basename = ts.getBaseFileName; - vpath.extname = ts.getAnyExtensionFromPath; - vpath.relative = ts.getRelativePathFromDirectory; - vpath.beneath = ts.containsPath; - vpath.changeExtension = ts.changeAnyExtension; - vpath.isTypeScript = ts.hasTypeScriptFileExtension; - vpath.isJavaScript = ts.hasJavaScriptFileExtension; - var invalidRootComponentRegExp = /^(?!(\/|\/\/\w+\/|[a-zA-Z]:\/?|)$)/; - var invalidNavigableComponentRegExp = /[:*?"<>|]/; - var invalidNavigableComponentWithWildcardsRegExp = /[:"<>|]/; - var invalidNonNavigableComponentRegExp = /^\.{1,2}$|[:*?"<>|]/; - var invalidNonNavigableComponentWithWildcardsRegExp = /^\.{1,2}$|[:"<>|]/; - var extRegExp = /\.\w+$/; - var ValidationFlags; - (function (ValidationFlags) { - ValidationFlags[ValidationFlags["None"] = 0] = "None"; - ValidationFlags[ValidationFlags["RequireRoot"] = 1] = "RequireRoot"; - ValidationFlags[ValidationFlags["RequireDirname"] = 2] = "RequireDirname"; - ValidationFlags[ValidationFlags["RequireBasename"] = 4] = "RequireBasename"; - ValidationFlags[ValidationFlags["RequireExtname"] = 8] = "RequireExtname"; - ValidationFlags[ValidationFlags["RequireTrailingSeparator"] = 16] = "RequireTrailingSeparator"; - ValidationFlags[ValidationFlags["AllowRoot"] = 32] = "AllowRoot"; - ValidationFlags[ValidationFlags["AllowDirname"] = 64] = "AllowDirname"; - ValidationFlags[ValidationFlags["AllowBasename"] = 128] = "AllowBasename"; - ValidationFlags[ValidationFlags["AllowExtname"] = 256] = "AllowExtname"; - ValidationFlags[ValidationFlags["AllowTrailingSeparator"] = 512] = "AllowTrailingSeparator"; - ValidationFlags[ValidationFlags["AllowNavigation"] = 1024] = "AllowNavigation"; - ValidationFlags[ValidationFlags["AllowWildcard"] = 2048] = "AllowWildcard"; - /** Path must be a valid directory root */ - ValidationFlags[ValidationFlags["Root"] = 545] = "Root"; - /** Path must be a absolute */ - ValidationFlags[ValidationFlags["Absolute"] = 2017] = "Absolute"; - /** Path may be relative or absolute */ - ValidationFlags[ValidationFlags["RelativeOrAbsolute"] = 2016] = "RelativeOrAbsolute"; - /** Path may only be a filename */ - ValidationFlags[ValidationFlags["Basename"] = 260] = "Basename"; - })(ValidationFlags = vpath.ValidationFlags || (vpath.ValidationFlags = {})); - function validateComponents(components, flags, hasTrailingSeparator) { - var hasRoot = !!components[0]; - var hasDirname = components.length > 2; - var hasBasename = components.length > 1; - var hasExtname = hasBasename && extRegExp.test(components[components.length - 1]); - var invalidComponentRegExp = flags & 1024 /* AllowNavigation */ - ? flags & 2048 /* AllowWildcard */ ? invalidNavigableComponentWithWildcardsRegExp : invalidNavigableComponentRegExp - : flags & 2048 /* AllowWildcard */ ? invalidNonNavigableComponentWithWildcardsRegExp : invalidNonNavigableComponentRegExp; - // Validate required components - if (flags & 1 /* RequireRoot */ && !hasRoot) - return false; - if (flags & 2 /* RequireDirname */ && !hasDirname) - return false; - if (flags & 4 /* RequireBasename */ && !hasBasename) - return false; - if (flags & 8 /* RequireExtname */ && !hasExtname) - return false; - if (flags & 16 /* RequireTrailingSeparator */ && !hasTrailingSeparator) - return false; - // Required components indicate allowed components - if (flags & 1 /* RequireRoot */) - flags |= 32 /* AllowRoot */; - if (flags & 2 /* RequireDirname */) - flags |= 64 /* AllowDirname */; - if (flags & 4 /* RequireBasename */) - flags |= 128 /* AllowBasename */; - if (flags & 8 /* RequireExtname */) - flags |= 256 /* AllowExtname */; - if (flags & 16 /* RequireTrailingSeparator */) - flags |= 512 /* AllowTrailingSeparator */; - // Validate disallowed components - if (~flags & 32 /* AllowRoot */ && hasRoot) - return false; - if (~flags & 64 /* AllowDirname */ && hasDirname) - return false; - if (~flags & 128 /* AllowBasename */ && hasBasename) - return false; - if (~flags & 256 /* AllowExtname */ && hasExtname) - return false; - if (~flags & 512 /* AllowTrailingSeparator */ && hasTrailingSeparator) - return false; - // Validate component strings - if (invalidRootComponentRegExp.test(components[0])) - return false; - for (var i = 1; i < components.length; i++) { - if (invalidComponentRegExp.test(components[i])) - return false; - } - return true; - } - function validate(path, flags) { - if (flags === void 0) { flags = 2016 /* RelativeOrAbsolute */; } - var components = vpath.parse(path); - var trailing = vpath.hasTrailingSeparator(path); - if (!validateComponents(components, flags, trailing)) - throw vfs.createIOError("ENOENT"); - return components.length > 1 && trailing ? vpath.format(vpath.reduce(components)) + vpath.sep : vpath.format(vpath.reduce(components)); - } - vpath.validate = validate; - function isDeclaration(path) { - return vpath.extname(path, ".d.ts", /*ignoreCase*/ false).length > 0; - } - vpath.isDeclaration = isDeclaration; - function isSourceMap(path) { - return vpath.extname(path, ".map", /*ignoreCase*/ false).length > 0; - } - vpath.isSourceMap = isSourceMap; - var javaScriptSourceMapExtensions = [".js.map", ".jsx.map"]; - function isJavaScriptSourceMap(path) { - return vpath.extname(path, javaScriptSourceMapExtensions, /*ignoreCase*/ false).length > 0; - } - vpath.isJavaScriptSourceMap = isJavaScriptSourceMap; - function isJson(path) { - return vpath.extname(path, ".json", /*ignoreCase*/ false).length > 0; - } - vpath.isJson = isJson; - function isDefaultLibrary(path) { - return isDeclaration(path) - && vpath.basename(path).startsWith("lib."); - } - vpath.isDefaultLibrary = isDefaultLibrary; - function isTsConfigFile(path) { - return path.indexOf("tsconfig") !== -1 && path.indexOf("json") !== -1; - } - vpath.isTsConfigFile = isTsConfigFile; -})(vpath || (vpath = {})); -// tslint:disable:no-null-keyword -var vfs; -(function (vfs) { - /** - * Posix-style path to the TypeScript compiler build outputs (including tsc.js, lib.d.ts, etc.) - */ - vfs.builtFolder = "/.ts"; - /** - * Posix-style path to additional mountable folders (./tests/projects in this repo) - */ - vfs.projectsFolder = "/.projects"; - /** - * Posix-style path to additional test libraries - */ - vfs.testLibFolder = "/.lib"; - /** - * Posix-style path to sources under test - */ - vfs.srcFolder = "/.src"; - // file type - var S_IFMT = 61440; // file type - var S_IFSOCK = 49152; // socket - var S_IFLNK = 40960; // symbolic link - var S_IFREG = 32768; // regular file - var S_IFBLK = 24576; // block device - var S_IFDIR = 16384; // directory - var S_IFCHR = 8192; // character device - var S_IFIFO = 4096; // FIFO - var devCount = 0; // A monotonically increasing count of device ids - var inoCount = 0; // A monotonically increasing count of inodes - /** - * Represents a virtual POSIX-like file system. - */ - var FileSystem = /** @class */ (function () { - function FileSystem(ignoreCase, options) { - if (options === void 0) { options = {}; } - // lazy-initialized state that should be mutable even if the FileSystem is frozen. - this._lazy = {}; - var _a = options.time, time = _a === void 0 ? -1 : _a, files = options.files, meta = options.meta; - this.ignoreCase = ignoreCase; - this.stringComparer = this.ignoreCase ? vpath.compareCaseInsensitive : vpath.compareCaseSensitive; - this._time = time; - if (meta) { - for (var _i = 0, _b = Object.keys(meta); _i < _b.length; _i++) { - var key = _b[_i]; - this.meta.set(key, meta[key]); - } - } - if (files) { - this._applyFiles(files, /*dirname*/ ""); - } - var cwd = options.cwd; - if ((!cwd || !vpath.isRoot(cwd)) && this._lazy.links) { - var iterator = collections.getIterator(this._lazy.links.keys()); - try { - for (var i = collections.nextResult(iterator); i; i = collections.nextResult(iterator)) { - var name = i.value; - cwd = cwd ? vpath.resolve(name, cwd) : name; - break; - } - } - finally { - collections.closeIterator(iterator); - } - } - if (cwd) { - vpath.validate(cwd, 2017 /* Absolute */); - this.mkdirpSync(cwd); - } - this._cwd = cwd || ""; - } - Object.defineProperty(FileSystem.prototype, "meta", { - /** - * Gets metadata for this `FileSystem`. - */ - get: function () { - if (!this._lazy.meta) { - this._lazy.meta = new collections.Metadata(this._shadowRoot ? this._shadowRoot.meta : undefined); - } - return this._lazy.meta; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FileSystem.prototype, "isReadonly", { - /** - * Gets a value indicating whether the file system is read-only. - */ - get: function () { - return Object.isFrozen(this); - }, - enumerable: true, - configurable: true - }); - /** - * Makes the file system read-only. - */ - FileSystem.prototype.makeReadonly = function () { - Object.freeze(this); - return this; - }; - Object.defineProperty(FileSystem.prototype, "shadowRoot", { - /** - * Gets the file system shadowed by this file system. - */ - get: function () { - return this._shadowRoot; - }, - enumerable: true, - configurable: true - }); - /** - * Gets a shadow copy of this file system. Changes to the shadow copy do not affect the - * original, allowing multiple copies of the same core file system without multiple copies - * of the same data. - */ - FileSystem.prototype.shadow = function (ignoreCase) { - if (ignoreCase === void 0) { ignoreCase = this.ignoreCase; } - if (!this.isReadonly) - throw new Error("Cannot shadow a mutable file system."); - if (ignoreCase && !this.ignoreCase) - throw new Error("Cannot create a case-insensitive file system from a case-sensitive one."); - var fs = new FileSystem(ignoreCase, { time: this._time }); - fs._shadowRoot = this; - fs._cwd = this._cwd; - return fs; - }; - /** - * Gets or sets the timestamp (in milliseconds) used for file status, returning the previous timestamp. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/time.html - */ - FileSystem.prototype.time = function (value) { - if (value !== undefined && this.isReadonly) - throw createIOError("EPERM"); - var result = this._time; - if (typeof result === "function") - result = result(); - if (typeof result === "object") - result = result.getTime(); - if (result === -1) - result = Date.now(); - if (value !== undefined) { - this._time = value; - } - return result; - }; - /** - * Gets the metadata object for a path. - * @param path - */ - FileSystem.prototype.filemeta = function (path) { - var node = this._walk(this._resolve(path)).node; - if (!node) - throw createIOError("ENOENT"); - return this._filemeta(node); - }; - FileSystem.prototype._filemeta = function (node) { - if (!node.meta) { - var parentMeta = node.shadowRoot && this._shadowRoot && this._shadowRoot._filemeta(node.shadowRoot); - node.meta = new collections.Metadata(parentMeta); - } - return node.meta; - }; - /** - * Get the pathname of the current working directory. - * - * @link - http://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html - */ - FileSystem.prototype.cwd = function () { - if (!this._cwd) - throw new Error("The current working directory has not been set."); - var node = this._walk(this._cwd).node; - if (!node) - throw createIOError("ENOENT"); - if (!isDirectory(node)) - throw createIOError("ENOTDIR"); - return this._cwd; - }; - /** - * Changes the current working directory. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html - */ - FileSystem.prototype.chdir = function (path) { - if (this.isReadonly) - throw createIOError("EPERM"); - path = this._resolve(path); - var node = this._walk(path).node; - if (!node) - throw createIOError("ENOENT"); - if (!isDirectory(node)) - throw createIOError("ENOTDIR"); - this._cwd = path; - }; - /** - * Pushes the current directory onto the directory stack and changes the current working directory to the supplied path. - */ - FileSystem.prototype.pushd = function (path) { - if (this.isReadonly) - throw createIOError("EPERM"); - if (path) - path = this._resolve(path); - if (this._cwd) { - if (!this._dirStack) - this._dirStack = []; - this._dirStack.push(this._cwd); - } - if (path && path !== this._cwd) { - this.chdir(path); - } - }; - /** - * Pops the previous directory from the location stack and changes the current directory to that directory. - */ - FileSystem.prototype.popd = function () { - if (this.isReadonly) - throw createIOError("EPERM"); - var path = this._dirStack && this._dirStack.pop(); - if (path) { - this.chdir(path); - } - }; - /** - * Update the file system with a set of files. - */ - FileSystem.prototype.apply = function (files) { - this._applyFiles(files, this._cwd); - }; - /** - * Scan file system entries along a path. If `path` is a symbolic link, it is dereferenced. - * @param path The path at which to start the scan. - * @param axis The axis along which to traverse. - * @param traversal The traversal scheme to use. - */ - FileSystem.prototype.scanSync = function (path, axis, traversal) { - path = this._resolve(path); - var results = []; - this._scan(path, this._stat(this._walk(path)), axis, traversal, /*noFollow*/ false, results); - return results; - }; - /** - * Scan file system entries along a path. - * @param path The path at which to start the scan. - * @param axis The axis along which to traverse. - * @param traversal The traversal scheme to use. - */ - FileSystem.prototype.lscanSync = function (path, axis, traversal) { - path = this._resolve(path); - var results = []; - this._scan(path, this._stat(this._walk(path, /*noFollow*/ true)), axis, traversal, /*noFollow*/ true, results); - return results; - }; - FileSystem.prototype._scan = function (path, stats, axis, traversal, noFollow, results) { - if (axis === "ancestors-or-self" || axis === "self" || axis === "descendants-or-self") { - if (!traversal.accept || traversal.accept(path, stats)) { - results.push(path); - } - } - if (axis === "ancestors-or-self" || axis === "ancestors") { - var dirname = vpath.dirname(path); - if (dirname !== path) { - try { - var stats_1 = this._stat(this._walk(dirname, noFollow)); - if (!traversal.traverse || traversal.traverse(dirname, stats_1)) { - this._scan(dirname, stats_1, "ancestors-or-self", traversal, noFollow, results); - } - } - catch ( /*ignored*/_a) { /*ignored*/ } - } - } - if (axis === "descendants-or-self" || axis === "descendants") { - if (stats.isDirectory() && (!traversal.traverse || traversal.traverse(path, stats))) { - for (var _i = 0, _b = this.readdirSync(path); _i < _b.length; _i++) { - var file = _b[_i]; - try { - var childpath = vpath.combine(path, file); - var stats_2 = this._stat(this._walk(childpath, noFollow)); - this._scan(childpath, stats_2, "descendants-or-self", traversal, noFollow, results); - } - catch ( /*ignored*/_c) { /*ignored*/ } - } - } - } - }; - /** - * Mounts a physical or virtual file system at a location in this virtual file system. - * - * @param source The path in the physical (or other virtual) file system. - * @param target The path in this virtual file system. - * @param resolver An object used to resolve files in `source`. - */ - FileSystem.prototype.mountSync = function (source, target, resolver) { - if (this.isReadonly) - throw createIOError("EROFS"); - source = vpath.validate(source, 2017 /* Absolute */); - var _a = this._walk(this._resolve(target), /*noFollow*/ true), parent = _a.parent, links = _a.links, existingNode = _a.node, basename = _a.basename; - if (existingNode) - throw createIOError("EEXIST"); - var time = this.time(); - var node = this._mknod(parent ? parent.dev : ++devCount, S_IFDIR, /*mode*/ 511, time); - node.source = source; - node.resolver = resolver; - this._addLink(parent, links, basename, node, time); - }; - /** - * Recursively remove all files and directories underneath the provided path. - */ - FileSystem.prototype.rimrafSync = function (path) { - try { - var stats = this.lstatSync(path); - if (stats.isFile() || stats.isSymbolicLink()) { - this.unlinkSync(path); - } - else if (stats.isDirectory()) { - for (var _i = 0, _a = this.readdirSync(path); _i < _a.length; _i++) { - var file = _a[_i]; - this.rimrafSync(vpath.combine(path, file)); - } - this.rmdirSync(path); - } - } - catch (e) { - if (e.code === "ENOENT") - return; - throw e; - } - }; - /** - * Make a directory and all of its parent paths (if they don't exist). - */ - FileSystem.prototype.mkdirpSync = function (path) { - var _this = this; - path = this._resolve(path); - var result = this._walk(path, /*noFollow*/ true, function (error, result) { - if (error.code === "ENOENT") { - _this._mkdir(result); - return "retry"; - } - return "throw"; - }); - if (!result.node) - this._mkdir(result); - }; - FileSystem.prototype.getFileListing = function () { - var _this = this; - var result = ""; - var printLinks = function (dirname, links) { - var iterator = collections.getIterator(links); - try { - for (var i = collections.nextResult(iterator); i; i = collections.nextResult(iterator)) { - var _a = i.value, name = _a[0], node = _a[1]; - var path = dirname ? vpath.combine(dirname, name) : name; - var marker = vpath.compare(_this._cwd, path, _this.ignoreCase) === 0 ? "*" : " "; - if (result) - result += "\n"; - result += marker; - if (isDirectory(node)) { - result += vpath.addTrailingSeparator(path); - printLinks(path, _this._getLinks(node)); - } - else if (isFile(node)) { - result += path; - } - else if (isSymlink(node)) { - result += path + " -> " + node.symlink; - } - } - } - finally { - collections.closeIterator(iterator); - } - }; - printLinks(/*dirname*/ undefined, this._getRootLinks()); - return result; - }; - /** - * Print diagnostic information about the structure of the file system to the console. - */ - FileSystem.prototype.debugPrint = function () { - console.log(this.getFileListing()); - }; - // POSIX API (aligns with NodeJS "fs" module API) - /** - * Determines whether a path exists. - */ - FileSystem.prototype.existsSync = function (path) { - var result = this._walk(this._resolve(path), /*noFollow*/ true, function () { return "stop"; }); - return result !== undefined && result.node !== undefined; - }; - /** - * Get file status. If `path` is a symbolic link, it is dereferenced. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.statSync = function (path) { - return this._stat(this._walk(this._resolve(path))); - }; - /** - * Change file access times - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.utimesSync = function (path, atime, mtime) { - if (this.isReadonly) - throw createIOError("EROFS"); - if (!isFinite(+atime) || !isFinite(+mtime)) - throw createIOError("EINVAL"); - var entry = this._walk(this._resolve(path)); - if (!entry || !entry.node) { - throw createIOError("ENOENT"); - } - entry.node.atimeMs = +atime; - entry.node.mtimeMs = +mtime; - entry.node.ctimeMs = this.time(); - }; - /** - * Get file status. If `path` is a symbolic link, it is dereferenced. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/lstat.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.lstatSync = function (path) { - return this._stat(this._walk(this._resolve(path), /*noFollow*/ true)); - }; - FileSystem.prototype._stat = function (entry) { - var node = entry.node; - if (!node) - throw createIOError("ENOENT", entry.realpath); - return new Stats(node.dev, node.ino, node.mode, node.nlink, - /*rdev*/ 0, - /*size*/ isFile(node) ? this._getSize(node) : isSymlink(node) ? node.symlink.length : 0, - /*blksize*/ 4096, - /*blocks*/ 0, node.atimeMs, node.mtimeMs, node.ctimeMs, node.birthtimeMs); - }; - /** - * Read a directory. If `path` is a symbolic link, it is dereferenced. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.readdirSync = function (path) { - var node = this._walk(this._resolve(path)).node; - if (!node) - throw createIOError("ENOENT"); - if (!isDirectory(node)) - throw createIOError("ENOTDIR"); - return Array.from(this._getLinks(node).keys()); - }; - /** - * Make a directory. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.mkdirSync = function (path) { - if (this.isReadonly) - throw createIOError("EROFS"); - this._mkdir(this._walk(this._resolve(path), /*noFollow*/ true)); - }; - FileSystem.prototype._mkdir = function (_a) { - var parent = _a.parent, links = _a.links, existingNode = _a.node, basename = _a.basename; - if (existingNode) - throw createIOError("EEXIST"); - var time = this.time(); - var node = this._mknod(parent ? parent.dev : ++devCount, S_IFDIR, /*mode*/ 511, time); - this._addLink(parent, links, basename, node, time); - }; - /** - * Remove a directory. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/rmdir.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.rmdirSync = function (path) { - if (this.isReadonly) - throw createIOError("EROFS"); - path = this._resolve(path); - var _a = this._walk(path, /*noFollow*/ true), parent = _a.parent, links = _a.links, node = _a.node, basename = _a.basename; - if (!parent) - throw createIOError("EPERM"); - if (!isDirectory(node)) - throw createIOError("ENOTDIR"); - if (this._getLinks(node).size !== 0) - throw createIOError("ENOTEMPTY"); - this._removeLink(parent, links, basename, node); - }; - /** - * Link one file to another file (also known as a "hard link"). - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.linkSync = function (oldpath, newpath) { - if (this.isReadonly) - throw createIOError("EROFS"); - var node = this._walk(this._resolve(oldpath)).node; - if (!node) - throw createIOError("ENOENT"); - if (isDirectory(node)) - throw createIOError("EPERM"); - var _a = this._walk(this._resolve(newpath), /*noFollow*/ true), parent = _a.parent, links = _a.links, basename = _a.basename, existingNode = _a.node; - if (!parent) - throw createIOError("EPERM"); - if (existingNode) - throw createIOError("EEXIST"); - this._addLink(parent, links, basename, node); - }; - /** - * Remove a directory entry. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/unlink.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.unlinkSync = function (path) { - if (this.isReadonly) - throw createIOError("EROFS"); - var _a = this._walk(this._resolve(path), /*noFollow*/ true), parent = _a.parent, links = _a.links, node = _a.node, basename = _a.basename; - if (!parent) - throw createIOError("EPERM"); - if (!node) - throw createIOError("ENOENT"); - if (isDirectory(node)) - throw createIOError("EISDIR"); - this._removeLink(parent, links, basename, node); - }; - /** - * Rename a file. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.renameSync = function (oldpath, newpath) { - if (this.isReadonly) - throw createIOError("EROFS"); - var _a = this._walk(this._resolve(oldpath), /*noFollow*/ true), oldParent = _a.parent, oldParentLinks = _a.links, node = _a.node, oldBasename = _a.basename; - if (!oldParent) - throw createIOError("EPERM"); - if (!node) - throw createIOError("ENOENT"); - var _b = this._walk(this._resolve(newpath), /*noFollow*/ true), newParent = _b.parent, newParentLinks = _b.links, existingNode = _b.node, newBasename = _b.basename; - if (!newParent) - throw createIOError("EPERM"); - var time = this.time(); - if (existingNode) { - if (isDirectory(node)) { - if (!isDirectory(existingNode)) - throw createIOError("ENOTDIR"); - if (this._getLinks(existingNode).size > 0) - throw createIOError("ENOTEMPTY"); - } - else { - if (isDirectory(existingNode)) - throw createIOError("EISDIR"); - } - this._removeLink(newParent, newParentLinks, newBasename, existingNode, time); - } - this._replaceLink(oldParent, oldParentLinks, oldBasename, newParent, newParentLinks, newBasename, node, time); - }; - /** - * Make a symbolic link. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.symlinkSync = function (target, linkpath) { - if (this.isReadonly) - throw createIOError("EROFS"); - var _a = this._walk(this._resolve(linkpath), /*noFollow*/ true), parent = _a.parent, links = _a.links, existingNode = _a.node, basename = _a.basename; - if (!parent) - throw createIOError("EPERM"); - if (existingNode) - throw createIOError("EEXIST"); - var time = this.time(); - var node = this._mknod(parent.dev, S_IFLNK, /*mode*/ 438, time); - node.symlink = vpath.validate(target, 2016 /* RelativeOrAbsolute */); - this._addLink(parent, links, basename, node, time); - }; - /** - * Resolve a pathname. - * - * @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/realpath.html - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.realpathSync = function (path) { - var realpath = this._walk(this._resolve(path)).realpath; - return realpath; - }; - FileSystem.prototype.readFileSync = function (path, encoding) { - if (encoding === void 0) { encoding = null; } - var node = this._walk(this._resolve(path)).node; - if (!node) - throw createIOError("ENOENT"); - if (isDirectory(node)) - throw createIOError("EISDIR"); - if (!isFile(node)) - throw createIOError("EBADF"); - var buffer = this._getBuffer(node).slice(); - return encoding ? buffer.toString(encoding) : buffer; - }; - /** - * Write to a file. - * - * NOTE: do not rename this method as it is intended to align with the same named export of the "fs" module. - */ - FileSystem.prototype.writeFileSync = function (path, data, encoding) { - if (encoding === void 0) { encoding = null; } - if (this.isReadonly) - throw createIOError("EROFS"); - var _a = this._walk(this._resolve(path), /*noFollow*/ false), parent = _a.parent, links = _a.links, existingNode = _a.node, basename = _a.basename; - if (!parent) - throw createIOError("EPERM"); - var time = this.time(); - var node = existingNode; - if (!node) { - node = this._mknod(parent.dev, S_IFREG, 438, time); - this._addLink(parent, links, basename, node, time); - } - if (isDirectory(node)) - throw createIOError("EISDIR"); - if (!isFile(node)) - throw createIOError("EBADF"); - node.buffer = Buffer.isBuffer(data) ? data.slice() : Buffer.from("" + data, encoding || "utf8"); - node.size = node.buffer.byteLength; - node.mtimeMs = time; - node.ctimeMs = time; - }; - FileSystem.prototype._mknod = function (dev, type, mode, time) { - if (time === void 0) { time = this.time(); } - return { - dev: dev, - ino: ++inoCount, - mode: (mode & ~S_IFMT & ~18 & 4095) | (type & S_IFMT), - atimeMs: time, - mtimeMs: time, - ctimeMs: time, - birthtimeMs: time, - nlink: 0 - }; - }; - FileSystem.prototype._addLink = function (parent, links, name, node, time) { - if (time === void 0) { time = this.time(); } - links.set(name, node); - node.nlink++; - node.ctimeMs = time; - if (parent) - parent.mtimeMs = time; - if (!parent && !this._cwd) - this._cwd = name; - }; - FileSystem.prototype._removeLink = function (parent, links, name, node, time) { - if (time === void 0) { time = this.time(); } - links.delete(name); - node.nlink--; - node.ctimeMs = time; - if (parent) - parent.mtimeMs = time; - }; - FileSystem.prototype._replaceLink = function (oldParent, oldLinks, oldName, newParent, newLinks, newName, node, time) { - if (oldParent !== newParent) { - this._removeLink(oldParent, oldLinks, oldName, node, time); - this._addLink(newParent, newLinks, newName, node, time); - } - else { - oldLinks.delete(oldName); - oldLinks.set(newName, node); - oldParent.mtimeMs = time; - newParent.mtimeMs = time; - } - }; - FileSystem.prototype._getRootLinks = function () { - if (!this._lazy.links) { - this._lazy.links = new collections.SortedMap(this.stringComparer); - if (this._shadowRoot) { - this._copyShadowLinks(this._shadowRoot._getRootLinks(), this._lazy.links); - } - this._lazy.links = this._lazy.links; - } - return this._lazy.links; - }; - FileSystem.prototype._getLinks = function (node) { - if (!node.links) { - var links = new collections.SortedMap(this.stringComparer); - var source = node.source, resolver = node.resolver; - if (source && resolver) { - node.source = undefined; - node.resolver = undefined; - for (var _i = 0, _a = resolver.readdirSync(source); _i < _a.length; _i++) { - var name = _a[_i]; - var path = vpath.combine(source, name); - var stats = resolver.statSync(path); - switch (stats.mode & S_IFMT) { - case S_IFDIR: - var dir = this._mknod(node.dev, S_IFDIR, 511); - dir.source = vpath.combine(source, name); - dir.resolver = resolver; - this._addLink(node, links, name, dir); - break; - case S_IFREG: - var file = this._mknod(node.dev, S_IFREG, 438); - file.source = vpath.combine(source, name); - file.resolver = resolver; - file.size = stats.size; - this._addLink(node, links, name, file); - break; - } - } - } - else if (this._shadowRoot && node.shadowRoot) { - this._copyShadowLinks(this._shadowRoot._getLinks(node.shadowRoot), links); - } - node.links = links; - } - return node.links; - }; - FileSystem.prototype._getShadow = function (root) { - var shadows = this._lazy.shadows || (this._lazy.shadows = new Map()); - var shadow = shadows.get(root.ino); - if (!shadow) { - shadow = { - dev: root.dev, - ino: root.ino, - mode: root.mode, - atimeMs: root.atimeMs, - mtimeMs: root.mtimeMs, - ctimeMs: root.ctimeMs, - birthtimeMs: root.birthtimeMs, - nlink: root.nlink, - shadowRoot: root - }; - if (isSymlink(root)) - shadow.symlink = root.symlink; - shadows.set(shadow.ino, shadow); - } - return shadow; - }; - FileSystem.prototype._copyShadowLinks = function (source, target) { - var iterator = collections.getIterator(source); - try { - for (var i = collections.nextResult(iterator); i; i = collections.nextResult(iterator)) { - var _a = i.value, name = _a[0], root = _a[1]; - target.set(name, this._getShadow(root)); - } - } - finally { - collections.closeIterator(iterator); - } - }; - FileSystem.prototype._getSize = function (node) { - if (node.buffer) - return node.buffer.byteLength; - if (node.size !== undefined) - return node.size; - if (node.source && node.resolver) - return node.size = node.resolver.statSync(node.source).size; - if (this._shadowRoot && node.shadowRoot) - return node.size = this._shadowRoot._getSize(node.shadowRoot); - return 0; - }; - FileSystem.prototype._getBuffer = function (node) { - if (!node.buffer) { - var source = node.source, resolver = node.resolver; - if (source && resolver) { - node.source = undefined; - node.resolver = undefined; - node.size = undefined; - node.buffer = resolver.readFileSync(source); - } - else if (this._shadowRoot && node.shadowRoot) { - node.buffer = this._shadowRoot._getBuffer(node.shadowRoot); - } - else { - node.buffer = Buffer.allocUnsafe(0); - } - } - return node.buffer; - }; - FileSystem.prototype._walk = function (path, noFollow, onError) { - var links = this._getRootLinks(); - var parent; - var components = vpath.parse(path); - var step = 0; - var depth = 0; - var retry = false; - while (true) { - if (depth >= 40) - throw createIOError("ELOOP"); - var lastStep = step === components.length - 1; - var basename = components[step]; - var node = links.get(basename); - if (lastStep && (noFollow || !isSymlink(node))) { - return { realpath: vpath.format(components), basename: basename, parent: parent, links: links, node: node }; - } - if (node === undefined) { - if (trapError(createIOError("ENOENT"), node)) - continue; - return undefined; - } - if (isSymlink(node)) { - var dirname = vpath.format(components.slice(0, step)); - var symlink = vpath.resolve(dirname, node.symlink); - links = this._getRootLinks(); - parent = undefined; - components = vpath.parse(symlink).concat(components.slice(step + 1)); - step = 0; - depth++; - retry = false; - continue; - } - if (isDirectory(node)) { - links = this._getLinks(node); - parent = node; - step++; - retry = false; - continue; - } - if (trapError(createIOError("ENOTDIR"), node)) - continue; - return undefined; - } - function trapError(error, node) { - var realpath = vpath.format(components.slice(0, step + 1)); - var basename = components[step]; - var result = !retry && onError ? onError(error, { realpath: realpath, basename: basename, parent: parent, links: links, node: node }) : "throw"; - if (result === "stop") - return false; - if (result === "retry") { - retry = true; - return true; - } - throw error; - } - }; - /** - * Resolve a path relative to the current working directory. - */ - FileSystem.prototype._resolve = function (path) { - return this._cwd - ? vpath.resolve(this._cwd, vpath.validate(path, 2016 /* RelativeOrAbsolute */ | 2048 /* AllowWildcard */)) - : vpath.validate(path, 2017 /* Absolute */ | 2048 /* AllowWildcard */); - }; - FileSystem.prototype._applyFiles = function (files, dirname) { - var deferred = []; - this._applyFilesWorker(files, dirname, deferred); - for (var _i = 0, deferred_1 = deferred; _i < deferred_1.length; _i++) { - var _a = deferred_1[_i], entry = _a[0], path = _a[1]; - this.mkdirpSync(vpath.dirname(path)); - this.pushd(vpath.dirname(path)); - if (entry instanceof Symlink) { - if (this.stringComparer(vpath.dirname(path), path) === 0) { - throw new TypeError("Roots cannot be symbolic links."); - } - this.symlinkSync(entry.symlink, path); - this._applyFileExtendedOptions(path, entry); - } - else if (entry instanceof Link) { - if (this.stringComparer(vpath.dirname(path), path) === 0) { - throw new TypeError("Roots cannot be hard links."); - } - this.linkSync(entry.path, path); - } - else { - this.mountSync(entry.source, path, entry.resolver); - this._applyFileExtendedOptions(path, entry); - } - this.popd(); - } - }; - FileSystem.prototype._applyFileExtendedOptions = function (path, entry) { - var meta = entry.meta; - if (meta !== undefined) { - var filemeta = this.filemeta(path); - for (var _i = 0, _a = Object.keys(meta); _i < _a.length; _i++) { - var key = _a[_i]; - filemeta.set(key, meta[key]); - } - } - }; - FileSystem.prototype._applyFilesWorker = function (files, dirname, deferred) { - for (var _i = 0, _a = Object.keys(files); _i < _a.length; _i++) { - var key = _a[_i]; - var value = this._normalizeFileSetEntry(files[key]); - var path = dirname ? vpath.resolve(dirname, key) : key; - vpath.validate(path, 2017 /* Absolute */); - if (value === null || value === undefined) { - if (this.stringComparer(vpath.dirname(path), path) === 0) { - throw new TypeError("Roots cannot be deleted."); - } - this.rimrafSync(path); - } - else if (value instanceof File) { - if (this.stringComparer(vpath.dirname(path), path) === 0) { - throw new TypeError("Roots cannot be files."); - } - this.mkdirpSync(vpath.dirname(path)); - this.writeFileSync(path, value.data, value.encoding); - this._applyFileExtendedOptions(path, value); - } - else if (value instanceof Directory) { - this.mkdirpSync(path); - this._applyFileExtendedOptions(path, value); - this._applyFilesWorker(value.files, path, deferred); - } - else { - deferred.push([value, path]); - } - } - }; - FileSystem.prototype._normalizeFileSetEntry = function (value) { - if (value === undefined || - value === null || - value instanceof Directory || - value instanceof File || - value instanceof Link || - value instanceof Symlink || - value instanceof Mount) { - return value; - } - return typeof value === "string" || Buffer.isBuffer(value) ? new File(value) : new Directory(value); - }; - return FileSystem; - }()); - vfs.FileSystem = FileSystem; - function createResolver(host) { - return { - readdirSync: function (path) { - var _a = host.getAccessibleFileSystemEntries(path), files = _a.files, directories = _a.directories; - return directories.concat(files); - }, - statSync: function (path) { - if (host.directoryExists(path)) { - return { mode: S_IFDIR | 511, size: 0 }; - } - else if (host.fileExists(path)) { - return { mode: S_IFREG | 438, size: host.getFileSize(path) }; - } - else { - throw new Error("ENOENT: path does not exist"); - } - }, - readFileSync: function (path) { - return Buffer.from(host.readFile(path), "utf8"); // TODO: GH#18217 - } - }; - } - vfs.createResolver = createResolver; - /** - * Create a virtual file system from a physical file system using the following path mappings: - * - * - `/.ts` is a directory mapped to `${workspaceRoot}/built/local` - * - `/.lib` is a directory mapped to `${workspaceRoot}/tests/lib` - * - `/.src` is a virtual directory to be used for tests. - * - * Unless overridden, `/.src` will be the current working directory for the virtual file system. - */ - function createFromFileSystem(host, ignoreCase, _a) { - var _b = _a === void 0 ? {} : _a, documents = _b.documents, cwd = _b.cwd; - var fs = getBuiltLocal(host, ignoreCase).shadow(); - if (cwd) { - fs.mkdirpSync(cwd); - fs.chdir(cwd); - } - if (documents) { - for (var _i = 0, documents_1 = documents; _i < documents_1.length; _i++) { - var document = documents_1[_i]; - fs.mkdirpSync(vpath.dirname(document.file)); - fs.writeFileSync(document.file, document.text, "utf8"); - fs.filemeta(document.file).set("document", document); - // Add symlinks - var symlink = document.meta.get("symlink"); - if (symlink) { - for (var _c = 0, _d = symlink.split(",").map(function (link) { return link.trim(); }); _c < _d.length; _c++) { - var link = _d[_c]; - fs.mkdirpSync(vpath.dirname(link)); - fs.symlinkSync(document.file, link); - fs.filemeta(link).set("document", document); - } - } - } - } - return fs; - } - vfs.createFromFileSystem = createFromFileSystem; - var Stats = /** @class */ (function () { - function Stats(dev, ino, mode, nlink, rdev, size, blksize, blocks, atimeMs, mtimeMs, ctimeMs, birthtimeMs) { - if (dev === void 0) { dev = 0; } - if (ino === void 0) { ino = 0; } - if (mode === void 0) { mode = 0; } - if (nlink === void 0) { nlink = 0; } - if (rdev === void 0) { rdev = 0; } - if (size === void 0) { size = 0; } - if (blksize === void 0) { blksize = 0; } - if (blocks === void 0) { blocks = 0; } - if (atimeMs === void 0) { atimeMs = 0; } - if (mtimeMs === void 0) { mtimeMs = 0; } - if (ctimeMs === void 0) { ctimeMs = 0; } - if (birthtimeMs === void 0) { birthtimeMs = 0; } - this.dev = dev; - this.ino = ino; - this.mode = mode; - this.nlink = nlink; - this.uid = 0; - this.gid = 0; - this.rdev = rdev; - this.size = size; - this.blksize = blksize; - this.blocks = blocks; - this.atimeMs = atimeMs; - this.mtimeMs = mtimeMs; - this.ctimeMs = ctimeMs; - this.birthtimeMs = birthtimeMs; - this.atime = new Date(this.atimeMs); - this.mtime = new Date(this.mtimeMs); - this.ctime = new Date(this.ctimeMs); - this.birthtime = new Date(this.birthtimeMs); - } - Stats.prototype.isFile = function () { return (this.mode & S_IFMT) === S_IFREG; }; - Stats.prototype.isDirectory = function () { return (this.mode & S_IFMT) === S_IFDIR; }; - Stats.prototype.isSymbolicLink = function () { return (this.mode & S_IFMT) === S_IFLNK; }; - Stats.prototype.isBlockDevice = function () { return (this.mode & S_IFMT) === S_IFBLK; }; - Stats.prototype.isCharacterDevice = function () { return (this.mode & S_IFMT) === S_IFCHR; }; - Stats.prototype.isFIFO = function () { return (this.mode & S_IFMT) === S_IFIFO; }; - Stats.prototype.isSocket = function () { return (this.mode & S_IFMT) === S_IFSOCK; }; - return Stats; - }()); - vfs.Stats = Stats; - // tslint:disable-next-line:variable-name - vfs.IOErrorMessages = Object.freeze({ - EACCES: "access denied", - EIO: "an I/O error occurred", - ENOENT: "no such file or directory", - EEXIST: "file already exists", - ELOOP: "too many symbolic links encountered", - ENOTDIR: "no such directory", - EISDIR: "path is a directory", - EBADF: "invalid file descriptor", - EINVAL: "invalid value", - ENOTEMPTY: "directory not empty", - EPERM: "operation not permitted", - EROFS: "file system is read-only" - }); - function createIOError(code, details) { - if (details === void 0) { details = ""; } - var err = new Error(code + ": " + vfs.IOErrorMessages[code] + " " + details); - err.code = code; - if (Error.captureStackTrace) - Error.captureStackTrace(err, createIOError); - return err; - } - vfs.createIOError = createIOError; - /** Extended options for a directory in a `FileSet` */ - var Directory = /** @class */ (function () { - function Directory(files, _a) { - var meta = (_a === void 0 ? {} : _a).meta; - this.files = files; - this.meta = meta; - } - return Directory; - }()); - vfs.Directory = Directory; - /** Extended options for a file in a `FileSet` */ - var File = /** @class */ (function () { - function File(data, _a) { - var _b = _a === void 0 ? {} : _a, meta = _b.meta, encoding = _b.encoding; - this.data = data; - this.encoding = encoding; - this.meta = meta; - } - return File; - }()); - vfs.File = File; - /** Extended options for a hard link in a `FileSet` */ - var Link = /** @class */ (function () { - function Link(path) { - this.path = path; - } - return Link; - }()); - vfs.Link = Link; - /** Extended options for a symbolic link in a `FileSet` */ - var Symlink = /** @class */ (function () { - function Symlink(symlink, _a) { - var meta = (_a === void 0 ? {} : _a).meta; - this.symlink = symlink; - this.meta = meta; - } - return Symlink; - }()); - vfs.Symlink = Symlink; - /** Extended options for mounting a virtual copy of an external file system via a `FileSet` */ - var Mount = /** @class */ (function () { - function Mount(source, resolver, _a) { - var meta = (_a === void 0 ? {} : _a).meta; - this.source = source; - this.resolver = resolver; - this.meta = meta; - } - return Mount; - }()); - vfs.Mount = Mount; - function isFile(node) { - return node !== undefined && (node.mode & S_IFMT) === S_IFREG; - } - function isDirectory(node) { - return node !== undefined && (node.mode & S_IFMT) === S_IFDIR; - } - function isSymlink(node) { - return node !== undefined && (node.mode & S_IFMT) === S_IFLNK; - } - var builtLocalHost; - var builtLocalCI; - var builtLocalCS; - function getBuiltLocal(host, ignoreCase) { - var _a; - if (builtLocalHost !== host) { - builtLocalCI = undefined; - builtLocalCS = undefined; - builtLocalHost = host; - } - if (!builtLocalCI) { - var resolver = createResolver(host); - builtLocalCI = new FileSystem(/*ignoreCase*/ true, { - files: (_a = {}, - _a[vfs.builtFolder] = new Mount(vpath.resolve(host.getWorkspaceRoot(), "built/local"), resolver), - _a[vfs.testLibFolder] = new Mount(vpath.resolve(host.getWorkspaceRoot(), "tests/lib"), resolver), - _a[vfs.projectsFolder] = new Mount(vpath.resolve(host.getWorkspaceRoot(), "tests/projects"), resolver), - _a[vfs.srcFolder] = {}, - _a), - cwd: vfs.srcFolder, - meta: { defaultLibLocation: vfs.builtFolder } - }); - builtLocalCI.makeReadonly(); - } - if (ignoreCase) - return builtLocalCI; - if (!builtLocalCS) { - builtLocalCS = builtLocalCI.shadow(/*ignoreCase*/ false); - builtLocalCS.makeReadonly(); - } - return builtLocalCS; - } -})(vfs || (vfs = {})); -// tslint:enable:no-null-keyword -/** - * Test harness compiler functionality. - */ -var compiler; -(function (compiler) { - function readProject(host, project, existingOptions) { - if (project) { - project = vpath.isTsConfigFile(project) ? project : vpath.combine(project, "tsconfig.json"); - } - else { - project = host.vfs.scanSync(".", "ancestors-or-self", { - accept: function (path, stats) { return stats.isFile() && host.vfs.stringComparer(vpath.basename(path), "tsconfig.json") === 0; } - })[0]; - } - if (project) { - // TODO(rbuckton): Do we need to resolve this? Resolving breaks projects tests. - // project = vpath.resolve(host.vfs.currentDirectory, project); - // read the config file - var readResult = ts.readConfigFile(project, function (path) { return host.readFile(path); }); - if (readResult.error) { - return { file: project, errors: [readResult.error] }; - } - // parse the config file - var config = ts.parseJsonConfigFileContent(readResult.config, host, vpath.dirname(project), existingOptions); - return { file: project, errors: config.errors, config: config }; - } - } - compiler.readProject = readProject; - var CompilationResult = /** @class */ (function () { - function CompilationResult(host, options, program, result, diagnostics) { - this._inputs = []; - this.host = host; - this.program = program; - this.result = result; - this.diagnostics = diagnostics; - this.options = program ? program.getCompilerOptions() : options; - // collect outputs - var js = this.js = new collections.SortedMap({ comparer: this.vfs.stringComparer, sort: "insertion" }); - var dts = this.dts = new collections.SortedMap({ comparer: this.vfs.stringComparer, sort: "insertion" }); - var maps = this.maps = new collections.SortedMap({ comparer: this.vfs.stringComparer, sort: "insertion" }); - for (var _i = 0, _a = this.host.outputs; _i < _a.length; _i++) { - var document = _a[_i]; - if (vpath.isJavaScript(document.file) || ts.fileExtensionIs(document.file, ".json" /* Json */)) { - js.set(document.file, document); - } - else if (vpath.isDeclaration(document.file)) { - dts.set(document.file, document); - } - else if (vpath.isSourceMap(document.file)) { - maps.set(document.file, document); - } - } - // correlate inputs and outputs - this._inputsAndOutputs = new collections.SortedMap({ comparer: this.vfs.stringComparer, sort: "insertion" }); - if (program) { - if (this.options.out || this.options.outFile) { - var outFile = vpath.resolve(this.vfs.cwd(), this.options.outFile || this.options.out); - var inputs = []; - for (var _b = 0, _c = program.getSourceFiles(); _b < _c.length; _b++) { - var sourceFile = _c[_b]; - if (sourceFile) { - var input = new documents.TextDocument(sourceFile.fileName, sourceFile.text); - this._inputs.push(input); - if (!vpath.isDeclaration(sourceFile.fileName)) { - inputs.push(input); - } - } - } - var outputs = { - inputs: inputs, - js: js.get(outFile), - dts: dts.get(vpath.changeExtension(outFile, ".d.ts")), - map: maps.get(outFile + ".map") - }; - if (outputs.js) - this._inputsAndOutputs.set(outputs.js.file, outputs); - if (outputs.dts) - this._inputsAndOutputs.set(outputs.dts.file, outputs); - if (outputs.map) - this._inputsAndOutputs.set(outputs.map.file, outputs); - for (var _d = 0, inputs_1 = inputs; _d < inputs_1.length; _d++) { - var input = inputs_1[_d]; - this._inputsAndOutputs.set(input.file, outputs); - } - } - else { - for (var _e = 0, _f = program.getSourceFiles(); _e < _f.length; _e++) { - var sourceFile = _f[_e]; - if (sourceFile) { - var input = new documents.TextDocument(sourceFile.fileName, sourceFile.text); - this._inputs.push(input); - if (!vpath.isDeclaration(sourceFile.fileName)) { - var extname = ts.getOutputExtension(sourceFile, this.options); - var outputs = { - inputs: [input], - js: js.get(this.getOutputPath(sourceFile.fileName, extname)), - dts: dts.get(this.getOutputPath(sourceFile.fileName, ".d.ts")), - map: maps.get(this.getOutputPath(sourceFile.fileName, extname + ".map")) - }; - this._inputsAndOutputs.set(sourceFile.fileName, outputs); - if (outputs.js) - this._inputsAndOutputs.set(outputs.js.file, outputs); - if (outputs.dts) - this._inputsAndOutputs.set(outputs.dts.file, outputs); - if (outputs.map) - this._inputsAndOutputs.set(outputs.map.file, outputs); - } - } - } - } - } - this.diagnostics = diagnostics; - } - Object.defineProperty(CompilationResult.prototype, "vfs", { - get: function () { - return this.host.vfs; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CompilationResult.prototype, "inputs", { - get: function () { - return this._inputs; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CompilationResult.prototype, "outputs", { - get: function () { - return this.host.outputs; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CompilationResult.prototype, "traces", { - get: function () { - return this.host.traces; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CompilationResult.prototype, "emitSkipped", { - get: function () { - return this.result && this.result.emitSkipped || false; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CompilationResult.prototype, "singleFile", { - get: function () { - return !!this.options.outFile || !!this.options.out; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CompilationResult.prototype, "commonSourceDirectory", { - get: function () { - var common = this.program && this.program.getCommonSourceDirectory() || ""; - return common && vpath.combine(this.vfs.cwd(), common); - }, - enumerable: true, - configurable: true - }); - CompilationResult.prototype.getInputsAndOutputs = function (path) { - return this._inputsAndOutputs.get(vpath.resolve(this.vfs.cwd(), path)); - }; - CompilationResult.prototype.getInputs = function (path) { - var outputs = this.getInputsAndOutputs(path); - return outputs && outputs.inputs; - }; - CompilationResult.prototype.getOutput = function (path, kind) { - var outputs = this.getInputsAndOutputs(path); - return outputs && outputs[kind]; - }; - CompilationResult.prototype.getSourceMapRecord = function () { - if (this.result.sourceMaps && this.result.sourceMaps.length > 0) { - return Harness.SourceMapRecorder.getSourceMapRecord(this.result.sourceMaps, this.program, Array.from(this.js.values()).filter(function (d) { return !ts.fileExtensionIs(d.file, ".json" /* Json */); }), Array.from(this.dts.values())); - } - }; - CompilationResult.prototype.getSourceMap = function (path) { - if (this.options.noEmit || vpath.isDeclaration(path)) - return undefined; - if (this.options.inlineSourceMap) { - var document = this.getOutput(path, "js"); - return document && documents.SourceMap.fromSource(document.text); - } - if (this.options.sourceMap) { - var document = this.getOutput(path, "map"); - return document && new documents.SourceMap(document.file, document.text); - } - }; - CompilationResult.prototype.getOutputPath = function (path, ext) { - if (this.options.outFile || this.options.out) { - path = vpath.resolve(this.vfs.cwd(), this.options.outFile || this.options.out); - } - else { - path = vpath.resolve(this.vfs.cwd(), path); - var outDir = ext === ".d.ts" ? this.options.declarationDir || this.options.outDir : this.options.outDir; - if (outDir) { - var common = this.commonSourceDirectory; - if (common) { - path = vpath.relative(common, path, this.vfs.ignoreCase); - path = vpath.combine(vpath.resolve(this.vfs.cwd(), this.options.outDir), path); - } - } - } - return vpath.changeExtension(path, ext); - }; - CompilationResult.prototype.getNumberOfJsFiles = function () { - var count = this.js.size; - this.js.forEach(function (document) { - if (ts.fileExtensionIs(document.file, ".json" /* Json */)) { - count--; - } - }); - return count; - }; - return CompilationResult; - }()); - compiler.CompilationResult = CompilationResult; - function compileFiles(host, rootFiles, compilerOptions) { - if (compilerOptions.project || !rootFiles || rootFiles.length === 0) { - var project = readProject(host.parseConfigHost, compilerOptions.project, compilerOptions); - if (project) { - if (project.errors && project.errors.length > 0) { - return new CompilationResult(host, compilerOptions, /*program*/ undefined, /*result*/ undefined, project.errors); - } - if (project.config) { - rootFiles = project.config.fileNames; - compilerOptions = project.config.options; - } - } - delete compilerOptions.project; - } - // establish defaults (aligns with old harness) - if (compilerOptions.target === undefined) - compilerOptions.target = 0 /* ES3 */; - if (compilerOptions.newLine === undefined) - compilerOptions.newLine = 0 /* CarriageReturnLineFeed */; - if (compilerOptions.skipDefaultLibCheck === undefined) - compilerOptions.skipDefaultLibCheck = true; - if (compilerOptions.noErrorTruncation === undefined) - compilerOptions.noErrorTruncation = true; - var program = ts.createProgram(rootFiles || [], compilerOptions, host); - var emitResult = program.emit(); - var errors = ts.getPreEmitDiagnostics(program); - return new CompilationResult(host, compilerOptions, program, emitResult, errors); - } - compiler.compileFiles = compileFiles; -})(compiler || (compiler = {})); -var evaluator; -(function (evaluator) { - var sourceFile = vpath.combine(vfs.srcFolder, "source.ts"); - function compile(sourceText, options) { - var fs = vfs.createFromFileSystem(Harness.IO, /*ignoreCase*/ false); - fs.writeFileSync(sourceFile, sourceText); - var compilerOptions = __assign({ target: 1 /* ES5 */, module: ts.ModuleKind.CommonJS, lib: ["lib.esnext.d.ts", "lib.dom.d.ts"] }, options); - var host = new fakes.CompilerHost(fs, compilerOptions); - return compiler.compileFiles(host, [sourceFile], compilerOptions); - } - function noRequire(id) { - throw new Error("Module '" + id + "' could not be found."); - } - // Define a custom "Symbol" constructor to attach missing built-in symbols without - // modifying the global "Symbol" constructor - // tslint:disable-next-line:variable-name - var FakeSymbol = (function (description) { return Symbol(description); }); - FakeSymbol.prototype = Symbol.prototype; - for (var _i = 0, _a = Object.getOwnPropertyNames(Symbol); _i < _a.length; _i++) { - var key = _a[_i]; - Object.defineProperty(FakeSymbol, key, Object.getOwnPropertyDescriptor(Symbol, key)); - } - // Add "asyncIterator" if missing - if (!ts.hasProperty(FakeSymbol, "asyncIterator")) - Object.defineProperty(FakeSymbol, "asyncIterator", { value: Symbol.for("Symbol.asyncIterator"), configurable: true }); - function evaluate(result, globals) { - globals = __assign({ Symbol: FakeSymbol }, globals); - if (ts.some(result.diagnostics)) { - assert.ok(/*value*/ false, "Syntax error in evaluation source text:\n" + ts.formatDiagnostics(result.diagnostics, { - getCanonicalFileName: function (file) { return file; }, - getCurrentDirectory: function () { return ""; }, - getNewLine: function () { return "\n"; } - })); - } - var output = result.getOutput(sourceFile, "js"); - assert.isDefined(output); - var globalNames = []; - var globalArgs = []; - for (var name in globals) { - if (ts.hasProperty(globals, name)) { - globalNames.push(name); - globalArgs.push(globals[name]); - } - } - var evaluateText = "(function (module, exports, require, __dirname, __filename, " + globalNames.join(", ") + ") { " + output.text + " })"; - var evaluateThunk = eval(evaluateText); - var module = { exports: {} }; - evaluateThunk.call.apply(evaluateThunk, [globals, module, module.exports, noRequire, vpath.dirname(output.file), output.file, FakeSymbol].concat(globalArgs)); - return module.exports; - } - function evaluateTypeScript(sourceText, options, globals) { - return evaluate(compile(sourceText, options), globals); - } - evaluator.evaluateTypeScript = evaluateTypeScript; -})(evaluator || (evaluator = {})); -/** - * Fake implementations of various compiler dependencies. - */ -var fakes; -(function (fakes) { - var processExitSentinel = new Error("System exit"); - /** - * A fake `ts.System` that leverages a virtual file system. - */ - var System = /** @class */ (function () { - function System(vfs, _a) { - var _b = _a === void 0 ? {} : _a, executingFilePath = _b.executingFilePath, _c = _b.newLine, newLine = _c === void 0 ? "\r\n" : _c, env = _b.env; - this.args = []; - this.output = []; - this.vfs = vfs.isReadonly ? vfs.shadow() : vfs; - this.useCaseSensitiveFileNames = !this.vfs.ignoreCase; - this.newLine = newLine; - this._executingFilePath = executingFilePath; - this._env = env; - } - System.prototype.write = function (message) { - this.output.push(message); - }; - System.prototype.readFile = function (path) { - try { - var content = this.vfs.readFileSync(path, "utf8"); - return content === undefined ? undefined : utils.removeByteOrderMark(content); - } - catch (_a) { - return undefined; - } - }; - System.prototype.writeFile = function (path, data, writeByteOrderMark) { - this.vfs.mkdirpSync(vpath.dirname(path)); - this.vfs.writeFileSync(path, writeByteOrderMark ? utils.addUTF8ByteOrderMark(data) : data); - }; - System.prototype.deleteFile = function (path) { - this.vfs.unlinkSync(path); - }; - System.prototype.fileExists = function (path) { - var stats = this._getStats(path); - return stats ? stats.isFile() : false; - }; - System.prototype.directoryExists = function (path) { - var stats = this._getStats(path); - return stats ? stats.isDirectory() : false; - }; - System.prototype.createDirectory = function (path) { - this.vfs.mkdirpSync(path); - }; - System.prototype.getCurrentDirectory = function () { - return this.vfs.cwd(); - }; - System.prototype.getDirectories = function (path) { - var result = []; - try { - for (var _i = 0, _a = this.vfs.readdirSync(path); _i < _a.length; _i++) { - var file = _a[_i]; - if (this.vfs.statSync(vpath.combine(path, file)).isDirectory()) { - result.push(file); - } - } - } - catch ( /*ignore*/_b) { /*ignore*/ } - return result; - }; - System.prototype.readDirectory = function (path, extensions, exclude, include, depth) { - var _this = this; - return ts.matchFiles(path, extensions, exclude, include, this.useCaseSensitiveFileNames, this.getCurrentDirectory(), depth, function (path) { return _this.getAccessibleFileSystemEntries(path); }); - }; - System.prototype.getAccessibleFileSystemEntries = function (path) { - var files = []; - var directories = []; - try { - for (var _i = 0, _a = this.vfs.readdirSync(path); _i < _a.length; _i++) { - var file = _a[_i]; - try { - var stats = this.vfs.statSync(vpath.combine(path, file)); - if (stats.isFile()) { - files.push(file); - } - else if (stats.isDirectory()) { - directories.push(file); - } - } - catch ( /*ignored*/_b) { /*ignored*/ } - } - } - catch ( /*ignored*/_c) { /*ignored*/ } - return { files: files, directories: directories }; - }; - System.prototype.exit = function (exitCode) { - this.exitCode = exitCode; - throw processExitSentinel; - }; - System.prototype.getFileSize = function (path) { - var stats = this._getStats(path); - return stats && stats.isFile() ? stats.size : 0; - }; - System.prototype.resolvePath = function (path) { - return vpath.resolve(this.vfs.cwd(), path); - }; - System.prototype.getExecutingFilePath = function () { - if (this._executingFilePath === undefined) - return ts.notImplemented(); - return this._executingFilePath; - }; - System.prototype.getModifiedTime = function (path) { - var stats = this._getStats(path); - return stats ? stats.mtime : undefined; // TODO: GH#18217 - }; - System.prototype.setModifiedTime = function (path, time) { - this.vfs.utimesSync(path, time, time); - }; - System.prototype.createHash = function (data) { - return data; - }; - System.prototype.realpath = function (path) { - try { - return this.vfs.realpathSync(path); - } - catch (_a) { - return path; - } - }; - System.prototype.getEnvironmentVariable = function (name) { - return (this._env && this._env[name]); // TODO: GH#18217 - }; - System.prototype._getStats = function (path) { - try { - return this.vfs.existsSync(path) ? this.vfs.statSync(path) : undefined; - } - catch (_a) { - return undefined; - } - }; - return System; - }()); - fakes.System = System; - /** - * A fake `ts.ParseConfigHost` that leverages a virtual file system. - */ - var ParseConfigHost = /** @class */ (function () { - function ParseConfigHost(sys) { - if (sys instanceof vfs.FileSystem) - sys = new System(sys); - this.sys = sys; - } - Object.defineProperty(ParseConfigHost.prototype, "vfs", { - get: function () { - return this.sys.vfs; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ParseConfigHost.prototype, "useCaseSensitiveFileNames", { - get: function () { - return this.sys.useCaseSensitiveFileNames; - }, - enumerable: true, - configurable: true - }); - ParseConfigHost.prototype.fileExists = function (fileName) { - return this.sys.fileExists(fileName); - }; - ParseConfigHost.prototype.directoryExists = function (directoryName) { - return this.sys.directoryExists(directoryName); - }; - ParseConfigHost.prototype.readFile = function (path) { - return this.sys.readFile(path); - }; - ParseConfigHost.prototype.readDirectory = function (path, extensions, excludes, includes, depth) { - return this.sys.readDirectory(path, extensions, excludes, includes, depth); - }; - return ParseConfigHost; - }()); - fakes.ParseConfigHost = ParseConfigHost; - /** - * A fake `ts.CompilerHost` that leverages a virtual file system. - */ - var CompilerHost = /** @class */ (function () { - function CompilerHost(sys, options, setParentNodes) { - if (options === void 0) { options = ts.getDefaultCompilerOptions(); } - if (setParentNodes === void 0) { setParentNodes = false; } - var _this = this; - this.outputs = []; - this.traces = []; - this.shouldAssertInvariants = !Harness.lightMode; - if (sys instanceof vfs.FileSystem) - sys = new System(sys); - this.sys = sys; - this.defaultLibLocation = sys.vfs.meta.get("defaultLibLocation") || ""; - this._newLine = ts.getNewLineCharacter(options, function () { return _this.sys.newLine; }); - this._sourceFiles = new collections.SortedMap({ comparer: sys.vfs.stringComparer, sort: "insertion" }); - this._setParentNodes = setParentNodes; - this._outputsMap = new collections.SortedMap(this.vfs.stringComparer); - } - Object.defineProperty(CompilerHost.prototype, "vfs", { - get: function () { - return this.sys.vfs; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CompilerHost.prototype, "parseConfigHost", { - get: function () { - return this._parseConfigHost || (this._parseConfigHost = new ParseConfigHost(this.sys)); - }, - enumerable: true, - configurable: true - }); - CompilerHost.prototype.getCurrentDirectory = function () { - return this.sys.getCurrentDirectory(); - }; - CompilerHost.prototype.useCaseSensitiveFileNames = function () { - return this.sys.useCaseSensitiveFileNames; - }; - CompilerHost.prototype.getNewLine = function () { - return this._newLine; - }; - CompilerHost.prototype.getCanonicalFileName = function (fileName) { - return this.sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); - }; - CompilerHost.prototype.deleteFile = function (fileName) { - this.sys.deleteFile(fileName); - }; - CompilerHost.prototype.fileExists = function (fileName) { - return this.sys.fileExists(fileName); - }; - CompilerHost.prototype.directoryExists = function (directoryName) { - return this.sys.directoryExists(directoryName); - }; - CompilerHost.prototype.getModifiedTime = function (fileName) { - return this.sys.getModifiedTime(fileName); - }; - CompilerHost.prototype.setModifiedTime = function (fileName, time) { - return this.sys.setModifiedTime(fileName, time); - }; - CompilerHost.prototype.getDirectories = function (path) { - return this.sys.getDirectories(path); - }; - CompilerHost.prototype.readDirectory = function (path, extensions, exclude, include, depth) { - return this.sys.readDirectory(path, extensions, exclude, include, depth); - }; - CompilerHost.prototype.readFile = function (path) { - return this.sys.readFile(path); - }; - CompilerHost.prototype.writeFile = function (fileName, content, writeByteOrderMark) { - if (writeByteOrderMark) - content = utils.addUTF8ByteOrderMark(content); - this.sys.writeFile(fileName, content); - var document = new documents.TextDocument(fileName, content); - document.meta.set("fileName", fileName); - this.vfs.filemeta(fileName).set("document", document); - if (!this._outputsMap.has(document.file)) { - this._outputsMap.set(document.file, this.outputs.length); - this.outputs.push(document); - } - this.outputs[this._outputsMap.get(document.file)] = document; - }; - CompilerHost.prototype.trace = function (s) { - this.traces.push(s); - }; - CompilerHost.prototype.realpath = function (path) { - return this.sys.realpath(path); - }; - CompilerHost.prototype.getDefaultLibLocation = function () { - return vpath.resolve(this.getCurrentDirectory(), this.defaultLibLocation); - }; - CompilerHost.prototype.getDefaultLibFileName = function (options) { - return vpath.resolve(this.getDefaultLibLocation(), ts.getDefaultLibFileName(options)); - }; - CompilerHost.prototype.getSourceFile = function (fileName, languageVersion) { - var canonicalFileName = this.getCanonicalFileName(vpath.resolve(this.getCurrentDirectory(), fileName)); - var existing = this._sourceFiles.get(canonicalFileName); - if (existing) - return existing; - var content = this.readFile(canonicalFileName); - if (content === undefined) - return undefined; - // A virtual file system may shadow another existing virtual file system. This - // allows us to reuse a common virtual file system structure across multiple - // tests. If a virtual file is a shadow, it is likely that the file will be - // reused across multiple tests. In that case, we cache the SourceFile we parse - // so that it can be reused across multiple tests to avoid the cost of - // repeatedly parsing the same file over and over (such as lib.d.ts). - var cacheKey = this.vfs.shadowRoot && "SourceFile[languageVersion=" + languageVersion + ",setParentNodes=" + this._setParentNodes + "]"; - if (cacheKey) { - var meta = this.vfs.filemeta(canonicalFileName); - var sourceFileFromMetadata = meta.get(cacheKey); - if (sourceFileFromMetadata && sourceFileFromMetadata.getFullText() === content) { - this._sourceFiles.set(canonicalFileName, sourceFileFromMetadata); - return sourceFileFromMetadata; - } - } - var parsed = ts.createSourceFile(fileName, content, languageVersion, this._setParentNodes || this.shouldAssertInvariants); - if (this.shouldAssertInvariants) { - Utils.assertInvariants(parsed, /*parent*/ undefined); - } - this._sourceFiles.set(canonicalFileName, parsed); - if (cacheKey) { - // store the cached source file on the unshadowed file with the same version. - var stats = this.vfs.statSync(canonicalFileName); - var fs = this.vfs; - while (fs.shadowRoot) { - try { - var shadowRootStats = fs.shadowRoot.existsSync(canonicalFileName) ? fs.shadowRoot.statSync(canonicalFileName) : undefined; // TODO: GH#18217 - if (shadowRootStats.dev !== stats.dev || - shadowRootStats.ino !== stats.ino || - shadowRootStats.mtimeMs !== stats.mtimeMs) { - break; - } - fs = fs.shadowRoot; - } - catch (_a) { - break; - } - } - if (fs !== this.vfs) { - fs.filemeta(canonicalFileName).set(cacheKey, parsed); - } - } - return parsed; - }; - return CompilerHost; - }()); - fakes.CompilerHost = CompilerHost; -})(fakes || (fakes = {})); -var ts; -(function (ts) { - var server; - (function (server) { - /* @internal */ - function extractMessage(message) { - // Read the content length - var contentLengthPrefix = "Content-Length: "; - var lines = message.split(/\r?\n/); - ts.Debug.assert(lines.length >= 2, "Malformed response: Expected 3 lines in the response."); - var contentLengthText = lines[0]; - ts.Debug.assert(contentLengthText.indexOf(contentLengthPrefix) === 0, "Malformed response: Response text did not contain content-length header."); - var contentLength = parseInt(contentLengthText.substring(contentLengthPrefix.length)); - // Read the body - var responseBody = lines[2]; - // Verify content length - ts.Debug.assert(responseBody.length + 1 === contentLength, "Malformed response: Content length did not match the response's body length."); - return responseBody; - } - server.extractMessage = extractMessage; - var SessionClient = /** @class */ (function () { - function SessionClient(host) { - this.host = host; - this.sequence = 0; - this.lineMaps = ts.createMap(); - this.messages = []; - this.getCombinedCodeFix = ts.notImplemented; - this.applyCodeActionCommand = ts.notImplemented; - } - SessionClient.prototype.onMessage = function (message) { - this.messages.push(message); - }; - SessionClient.prototype.writeMessage = function (message) { - this.host.writeMessage(message); - }; - SessionClient.prototype.getLineMap = function (fileName) { - var lineMap = this.lineMaps.get(fileName); - if (!lineMap) { - lineMap = ts.computeLineStarts(ts.getSnapshotText(this.host.getScriptSnapshot(fileName))); - this.lineMaps.set(fileName, lineMap); - } - return lineMap; - }; - SessionClient.prototype.lineOffsetToPosition = function (fileName, lineOffset, lineMap) { - lineMap = lineMap || this.getLineMap(fileName); - return ts.computePositionOfLineAndCharacter(lineMap, lineOffset.line - 1, lineOffset.offset - 1); - }; - SessionClient.prototype.positionToOneBasedLineOffset = function (fileName, position) { - var lineOffset = ts.computeLineAndCharacterOfPosition(this.getLineMap(fileName), position); - return { - line: lineOffset.line + 1, - offset: lineOffset.character + 1 - }; - }; - SessionClient.prototype.convertCodeEditsToTextChange = function (fileName, codeEdit) { - return { span: this.decodeSpan(codeEdit, fileName), newText: codeEdit.newText }; - }; - SessionClient.prototype.processRequest = function (command, args) { - var request = { - seq: this.sequence, - type: "request", - arguments: args, - command: command - }; - this.sequence++; - this.writeMessage(JSON.stringify(request)); - return request; - }; - SessionClient.prototype.processResponse = function (request) { - var foundResponseMessage = false; - var response; - while (!foundResponseMessage) { - var lastMessage = this.messages.shift(); - ts.Debug.assert(!!lastMessage, "Did not receive any responses."); - var responseBody = extractMessage(lastMessage); - try { - response = JSON.parse(responseBody); - // the server may emit events before emitting the response. We - // want to ignore these events for testing purpose. - if (response.type === "response") { - foundResponseMessage = true; - } - } - catch (e) { - throw new Error("Malformed response: Failed to parse server response: " + lastMessage + ". \r\n Error details: " + e.message); - } - } - // verify the sequence numbers - ts.Debug.assert(response.request_seq === request.seq, "Malformed response: response sequence number did not match request sequence number."); - // unmarshal errors - if (!response.success) { - throw new Error("Error " + response.message); - } - ts.Debug.assert(!!response.body, "Malformed response: Unexpected empty response body."); - return response; - }; - SessionClient.prototype.openFile = function (file, fileContent, scriptKindName) { - var args = { file: file, fileContent: fileContent, scriptKindName: scriptKindName }; - this.processRequest(server.CommandNames.Open, args); - }; - SessionClient.prototype.closeFile = function (file) { - var args = { file: file }; - this.processRequest(server.CommandNames.Close, args); - }; - SessionClient.prototype.changeFile = function (fileName, start, end, insertString) { - // clear the line map after an edit - this.lineMaps.set(fileName, undefined); // TODO: GH#18217 - var args = __assign({}, this.createFileLocationRequestArgsWithEndLineAndOffset(fileName, start, end), { insertString: insertString }); - this.processRequest(server.CommandNames.Change, args); - }; - SessionClient.prototype.toLineColumnOffset = function (fileName, position) { - var _a = this.positionToOneBasedLineOffset(fileName, position), line = _a.line, offset = _a.offset; - return { line: line, character: offset }; - }; - SessionClient.prototype.getQuickInfoAtPosition = function (fileName, position) { - var args = this.createFileLocationRequestArgs(fileName, position); - var request = this.processRequest(server.CommandNames.Quickinfo, args); - var response = this.processResponse(request); - var body = response.body; // TODO: GH#18217 - return { - kind: body.kind, - kindModifiers: body.kindModifiers, - textSpan: this.decodeSpan(body, fileName), - displayParts: [{ kind: "text", text: body.displayString }], - documentation: [{ kind: "text", text: body.documentation }], - tags: body.tags - }; - }; - SessionClient.prototype.getProjectInfo = function (file, needFileNameList) { - var args = { file: file, needFileNameList: needFileNameList }; - var request = this.processRequest(server.CommandNames.ProjectInfo, args); - var response = this.processResponse(request); - return { - configFileName: response.body.configFileName, - fileNames: response.body.fileNames - }; - }; - SessionClient.prototype.getCompletionsAtPosition = function (fileName, position, _preferences) { - var _this = this; - // Not passing along 'preferences' because server should already have those from the 'configure' command - var args = this.createFileLocationRequestArgs(fileName, position); - var request = this.processRequest(server.CommandNames.Completions, args); - var response = this.processResponse(request); - return { - isGlobalCompletion: false, - isMemberCompletion: false, - isNewIdentifierLocation: false, - entries: response.body.map(function (entry) { - if (entry.replacementSpan !== undefined) { - var name = entry.name, kind = entry.kind, kindModifiers = entry.kindModifiers, sortText = entry.sortText, replacementSpan = entry.replacementSpan, hasAction = entry.hasAction, source = entry.source, isRecommended = entry.isRecommended; - // TODO: GH#241 - var res = { name: name, kind: kind, kindModifiers: kindModifiers, sortText: sortText, replacementSpan: _this.decodeSpan(replacementSpan, fileName), hasAction: hasAction, source: source, isRecommended: isRecommended }; - return res; - } - return entry; // TODO: GH#18217 - }) - }; - }; - SessionClient.prototype.getCompletionEntryDetails = function (fileName, position, entryName, _options, source) { - var _this = this; - var args = __assign({}, this.createFileLocationRequestArgs(fileName, position), { entryNames: [{ name: entryName, source: source }] }); - var request = this.processRequest(server.CommandNames.CompletionDetails, args); - var response = this.processResponse(request); - ts.Debug.assert(response.body.length === 1, "Unexpected length of completion details response body."); - var convertedCodeActions = ts.map(response.body[0].codeActions, function (_a) { - var description = _a.description, changes = _a.changes; - return ({ description: description, changes: _this.convertChanges(changes, fileName) }); - }); - return __assign({}, response.body[0], { codeActions: convertedCodeActions }); - }; - SessionClient.prototype.getCompletionEntrySymbol = function (_fileName, _position, _entryName) { - return ts.notImplemented(); - }; - SessionClient.prototype.getNavigateToItems = function (searchValue) { - var _this = this; - var args = { - searchValue: searchValue, - file: this.host.getScriptFileNames()[0] - }; - var request = this.processRequest(server.CommandNames.Navto, args); - var response = this.processResponse(request); - return response.body.map(function (entry) { return ({ - name: entry.name, - containerName: entry.containerName || "", - containerKind: entry.containerKind || "" /* unknown */, - kind: entry.kind, - kindModifiers: entry.kindModifiers, - matchKind: entry.matchKind, - isCaseSensitive: entry.isCaseSensitive, - fileName: entry.file, - textSpan: _this.decodeSpan(entry), - }); }); - }; - SessionClient.prototype.getFormattingEditsForRange = function (file, start, end, _options) { - var _this = this; - var args = this.createFileLocationRequestArgsWithEndLineAndOffset(file, start, end); - // TODO: handle FormatCodeOptions - var request = this.processRequest(server.CommandNames.Format, args); - var response = this.processResponse(request); - return response.body.map(function (entry) { return _this.convertCodeEditsToTextChange(file, entry); }); // TODO: GH#18217 - }; - SessionClient.prototype.getFormattingEditsForDocument = function (fileName, options) { - return this.getFormattingEditsForRange(fileName, 0, this.host.getScriptSnapshot(fileName).getLength(), options); - }; - SessionClient.prototype.getFormattingEditsAfterKeystroke = function (fileName, position, key, _options) { - var _this = this; - var args = __assign({}, this.createFileLocationRequestArgs(fileName, position), { key: key }); - // TODO: handle FormatCodeOptions - var request = this.processRequest(server.CommandNames.Formatonkey, args); - var response = this.processResponse(request); - return response.body.map(function (entry) { return _this.convertCodeEditsToTextChange(fileName, entry); }); // TODO: GH#18217 - }; - SessionClient.prototype.getDefinitionAtPosition = function (fileName, position) { - var _this = this; - var args = this.createFileLocationRequestArgs(fileName, position); - var request = this.processRequest(server.CommandNames.Definition, args); - var response = this.processResponse(request); - return response.body.map(function (entry) { return ({ - containerKind: "" /* unknown */, - containerName: "", - fileName: entry.file, - textSpan: _this.decodeSpan(entry), - kind: "" /* unknown */, - name: "" - }); }); - }; - SessionClient.prototype.getDefinitionAndBoundSpan = function (fileName, position) { - var _this = this; - var args = this.createFileLocationRequestArgs(fileName, position); - var request = this.processRequest(server.CommandNames.DefinitionAndBoundSpan, args); - var response = this.processResponse(request); - return { - definitions: response.body.definitions.map(function (entry) { return ({ - containerKind: "" /* unknown */, - containerName: "", - fileName: entry.file, - textSpan: _this.decodeSpan(entry), - kind: "" /* unknown */, - name: "" - }); }), - textSpan: this.decodeSpan(response.body.textSpan, request.arguments.file) - }; - }; - SessionClient.prototype.getTypeDefinitionAtPosition = function (fileName, position) { - var _this = this; - var args = this.createFileLocationRequestArgs(fileName, position); - var request = this.processRequest(server.CommandNames.TypeDefinition, args); - var response = this.processResponse(request); - return response.body.map(function (entry) { return ({ - containerKind: "" /* unknown */, - containerName: "", - fileName: entry.file, - textSpan: _this.decodeSpan(entry), - kind: "" /* unknown */, - name: "" - }); }); - }; - SessionClient.prototype.getImplementationAtPosition = function (fileName, position) { - var _this = this; - var args = this.createFileLocationRequestArgs(fileName, position); - var request = this.processRequest(server.CommandNames.Implementation, args); - var response = this.processResponse(request); - return response.body.map(function (entry) { return ({ - fileName: entry.file, - textSpan: _this.decodeSpan(entry), - kind: "" /* unknown */, - displayParts: [] - }); }); - }; - SessionClient.prototype.findReferences = function (_fileName, _position) { - // Not yet implemented. - return []; - }; - SessionClient.prototype.getReferencesAtPosition = function (fileName, position) { - var _this = this; - var args = this.createFileLocationRequestArgs(fileName, position); - var request = this.processRequest(server.CommandNames.References, args); - var response = this.processResponse(request); - return response.body.refs.map(function (entry) { return ({ - fileName: entry.file, - textSpan: _this.decodeSpan(entry), - isWriteAccess: entry.isWriteAccess, - isDefinition: entry.isDefinition, - }); }); - }; - SessionClient.prototype.getEmitOutput = function (_fileName) { - return ts.notImplemented(); - }; - SessionClient.prototype.getSyntacticDiagnostics = function (file) { - return this.getDiagnostics(file, server.CommandNames.SyntacticDiagnosticsSync); - }; - SessionClient.prototype.getSemanticDiagnostics = function (file) { - return this.getDiagnostics(file, server.CommandNames.SemanticDiagnosticsSync); - }; - SessionClient.prototype.getSuggestionDiagnostics = function (file) { - return this.getDiagnostics(file, server.CommandNames.SuggestionDiagnosticsSync); - }; - SessionClient.prototype.getDiagnostics = function (file, command) { - var request = this.processRequest(command, { file: file, includeLinePosition: true }); - var response = this.processResponse(request); - return response.body.map(function (entry) { - var category = ts.firstDefined(Object.keys(ts.DiagnosticCategory), function (id) { - return ts.isString(id) && entry.category === id.toLowerCase() ? ts.DiagnosticCategory[id] : undefined; - }); - return { - file: undefined, - start: entry.start, - length: entry.length, - messageText: entry.message, - category: ts.Debug.assertDefined(category, "convertDiagnostic: category should not be undefined"), - code: entry.code, - reportsUnnecessary: entry.reportsUnnecessary, - }; - }); - }; - SessionClient.prototype.getCompilerOptionsDiagnostics = function () { - return ts.notImplemented(); - }; - SessionClient.prototype.getRenameInfo = function (fileName, position, findInStrings, findInComments) { - var args = __assign({}, this.createFileLocationRequestArgs(fileName, position), { findInStrings: findInStrings, findInComments: findInComments }); - var request = this.processRequest(server.CommandNames.Rename, args); - var response = this.processResponse(request); - var body = response.body; // TODO: GH#18217 - var locations = []; - for (var _i = 0, _a = body.locs; _i < _a.length; _i++) { - var entry = _a[_i]; - var fileName_1 = entry.file; - for (var _b = 0, _c = entry.locs; _b < _c.length; _b++) { - var loc = _c[_b]; - locations.push({ textSpan: this.decodeSpan(loc, fileName_1), fileName: fileName_1 }); - } - } - return this.lastRenameEntry = { - canRename: body.info.canRename, - displayName: body.info.displayName, - fullDisplayName: body.info.fullDisplayName, - kind: body.info.kind, - kindModifiers: body.info.kindModifiers, - localizedErrorMessage: body.info.localizedErrorMessage, - triggerSpan: ts.createTextSpanFromBounds(position, position), - fileName: fileName, - position: position, - findInStrings: !!findInStrings, - findInComments: !!findInComments, - locations: locations, - }; - }; - SessionClient.prototype.findRenameLocations = function (fileName, position, findInStrings, findInComments) { - if (!this.lastRenameEntry || - this.lastRenameEntry.fileName !== fileName || - this.lastRenameEntry.position !== position || - this.lastRenameEntry.findInStrings !== findInStrings || - this.lastRenameEntry.findInComments !== findInComments) { - this.getRenameInfo(fileName, position, findInStrings, findInComments); - } - return this.lastRenameEntry.locations; - }; - SessionClient.prototype.decodeNavigationBarItems = function (items, fileName, lineMap) { - var _this = this; - if (!items) { - return []; - } - return items.map(function (item) { return ({ - text: item.text, - kind: item.kind, - kindModifiers: item.kindModifiers || "", - spans: item.spans.map(function (span) { return _this.decodeSpan(span, fileName, lineMap); }), - childItems: _this.decodeNavigationBarItems(item.childItems, fileName, lineMap), - indent: item.indent, - bolded: false, - grayed: false - }); }); - }; - SessionClient.prototype.getNavigationBarItems = function (file) { - var request = this.processRequest(server.CommandNames.NavBar, { file: file }); - var response = this.processResponse(request); - var lineMap = this.getLineMap(file); - return this.decodeNavigationBarItems(response.body, file, lineMap); - }; - SessionClient.prototype.decodeNavigationTree = function (tree, fileName, lineMap) { - var _this = this; - return { - text: tree.text, - kind: tree.kind, - kindModifiers: tree.kindModifiers, - spans: tree.spans.map(function (span) { return _this.decodeSpan(span, fileName, lineMap); }), - nameSpan: tree.nameSpan && this.decodeSpan(tree.nameSpan, fileName, lineMap), - childItems: ts.map(tree.childItems, function (item) { return _this.decodeNavigationTree(item, fileName, lineMap); }) - }; - }; - SessionClient.prototype.getNavigationTree = function (file) { - var request = this.processRequest(server.CommandNames.NavTree, { file: file }); - var response = this.processResponse(request); - var lineMap = this.getLineMap(file); - return this.decodeNavigationTree(response.body, file, lineMap); // TODO: GH#18217 - }; - SessionClient.prototype.decodeSpan = function (span, fileName, lineMap) { - fileName = fileName || span.file; - lineMap = lineMap || this.getLineMap(fileName); - return ts.createTextSpanFromBounds(this.lineOffsetToPosition(fileName, span.start, lineMap), this.lineOffsetToPosition(fileName, span.end, lineMap)); - }; - SessionClient.prototype.getNameOrDottedNameSpan = function (_fileName, _startPos, _endPos) { - return ts.notImplemented(); - }; - SessionClient.prototype.getBreakpointStatementAtPosition = function (_fileName, _position) { - return ts.notImplemented(); - }; - SessionClient.prototype.getSignatureHelpItems = function (fileName, position) { - var args = this.createFileLocationRequestArgs(fileName, position); - var request = this.processRequest(server.CommandNames.SignatureHelp, args); - var response = this.processResponse(request); - if (!response.body) { - return undefined; // TODO: GH#18217 - } - var _a = response.body, items = _a.items, encodedApplicableSpan = _a.applicableSpan, selectedItemIndex = _a.selectedItemIndex, argumentIndex = _a.argumentIndex, argumentCount = _a.argumentCount; - var applicableSpan = this.decodeSpan(encodedApplicableSpan, fileName); - return { items: items, applicableSpan: applicableSpan, selectedItemIndex: selectedItemIndex, argumentIndex: argumentIndex, argumentCount: argumentCount }; - }; - SessionClient.prototype.getOccurrencesAtPosition = function (fileName, position) { - var _this = this; - var args = this.createFileLocationRequestArgs(fileName, position); - var request = this.processRequest(server.CommandNames.Occurrences, args); - var response = this.processResponse(request); - return response.body.map(function (entry) { return ({ - fileName: entry.file, - textSpan: _this.decodeSpan(entry), - isWriteAccess: entry.isWriteAccess, - isDefinition: false - }); }); - }; - SessionClient.prototype.getDocumentHighlights = function (fileName, position, filesToSearch) { - var _this = this; - var args = __assign({}, this.createFileLocationRequestArgs(fileName, position), { filesToSearch: filesToSearch }); - var request = this.processRequest(server.CommandNames.DocumentHighlights, args); - var response = this.processResponse(request); - return response.body.map(function (item) { return ({ - fileName: item.file, - highlightSpans: item.highlightSpans.map(function (span) { return ({ - textSpan: _this.decodeSpan(span, item.file), - kind: span.kind - }); }), - }); }); - }; - SessionClient.prototype.getOutliningSpans = function (file) { - var _this = this; - var request = this.processRequest(server.CommandNames.GetOutliningSpans, { file: file }); - var response = this.processResponse(request); - return response.body.map(function (item) { return ({ - textSpan: _this.decodeSpan(item.textSpan, file), - hintSpan: _this.decodeSpan(item.hintSpan, file), - bannerText: item.bannerText, - autoCollapse: item.autoCollapse, - kind: item.kind - }); }); - }; - SessionClient.prototype.getTodoComments = function (_fileName, _descriptors) { - return ts.notImplemented(); - }; - SessionClient.prototype.getDocCommentTemplateAtPosition = function (_fileName, _position) { - return ts.notImplemented(); - }; - SessionClient.prototype.isValidBraceCompletionAtPosition = function (_fileName, _position, _openingBrace) { - return ts.notImplemented(); - }; - SessionClient.prototype.getJsxClosingTagAtPosition = function (_fileName, _position) { - return ts.notImplemented(); - }; - SessionClient.prototype.getSpanOfEnclosingComment = function (_fileName, _position, _onlyMultiLine) { - return ts.notImplemented(); - }; - SessionClient.prototype.getCodeFixesAtPosition = function (file, start, end, errorCodes) { - var _this = this; - var args = __assign({}, this.createFileRangeRequestArgs(file, start, end), { errorCodes: errorCodes }); - var request = this.processRequest(server.CommandNames.GetCodeFixes, args); - var response = this.processResponse(request); - return response.body.map(function (_a) { - var fixName = _a.fixName, description = _a.description, changes = _a.changes, commands = _a.commands, fixId = _a.fixId, fixAllDescription = _a.fixAllDescription; - return ({ fixName: fixName, description: description, changes: _this.convertChanges(changes, file), commands: commands, fixId: fixId, fixAllDescription: fixAllDescription }); - }); - }; - SessionClient.prototype.createFileLocationOrRangeRequestArgs = function (positionOrRange, fileName) { - return typeof positionOrRange === "number" - ? this.createFileLocationRequestArgs(fileName, positionOrRange) - : this.createFileRangeRequestArgs(fileName, positionOrRange.pos, positionOrRange.end); - }; - SessionClient.prototype.createFileLocationRequestArgs = function (file, position) { - var _a = this.positionToOneBasedLineOffset(file, position), line = _a.line, offset = _a.offset; - return { file: file, line: line, offset: offset }; - }; - SessionClient.prototype.createFileRangeRequestArgs = function (file, start, end) { - var _a = this.positionToOneBasedLineOffset(file, start), startLine = _a.line, startOffset = _a.offset; - var _b = this.positionToOneBasedLineOffset(file, end), endLine = _b.line, endOffset = _b.offset; - return { file: file, startLine: startLine, startOffset: startOffset, endLine: endLine, endOffset: endOffset }; - }; - SessionClient.prototype.createFileLocationRequestArgsWithEndLineAndOffset = function (file, start, end) { - var _a = this.positionToOneBasedLineOffset(file, start), line = _a.line, offset = _a.offset; - var _b = this.positionToOneBasedLineOffset(file, end), endLine = _b.line, endOffset = _b.offset; - return { file: file, line: line, offset: offset, endLine: endLine, endOffset: endOffset }; - }; - SessionClient.prototype.getApplicableRefactors = function (fileName, positionOrRange) { - var args = this.createFileLocationOrRangeRequestArgs(positionOrRange, fileName); - var request = this.processRequest(server.CommandNames.GetApplicableRefactors, args); - var response = this.processResponse(request); - return response.body; // TODO: GH#18217 - }; - SessionClient.prototype.getEditsForRefactor = function (fileName, _formatOptions, positionOrRange, refactorName, actionName) { - var args = this.createFileLocationOrRangeRequestArgs(positionOrRange, fileName); - args.refactor = refactorName; - args.action = actionName; - var request = this.processRequest(server.CommandNames.GetEditsForRefactor, args); - var response = this.processResponse(request); - if (!response.body) { - return { edits: [], renameFilename: undefined, renameLocation: undefined }; - } - var edits = this.convertCodeEditsToTextChanges(response.body.edits); - var renameFilename = response.body.renameFilename; - var renameLocation; - if (renameFilename !== undefined) { - renameLocation = this.lineOffsetToPosition(renameFilename, response.body.renameLocation); // TODO: GH#18217 - } - return { - edits: edits, - renameFilename: renameFilename, - renameLocation: renameLocation - }; - }; - SessionClient.prototype.organizeImports = function (_scope, _formatOptions) { - return ts.notImplemented(); - }; - SessionClient.prototype.getEditsForFileRename = function () { - return ts.notImplemented(); - }; - SessionClient.prototype.convertCodeEditsToTextChanges = function (edits) { - var _this = this; - return edits.map(function (edit) { - var fileName = edit.fileName; - return { - fileName: fileName, - textChanges: edit.textChanges.map(function (t) { return _this.convertTextChangeToCodeEdit(t, fileName); }) - }; - }); - }; - SessionClient.prototype.convertChanges = function (changes, fileName) { - var _this = this; - return changes.map(function (change) { return ({ - fileName: change.fileName, - textChanges: change.textChanges.map(function (textChange) { return _this.convertTextChangeToCodeEdit(textChange, fileName); }) - }); }); - }; - SessionClient.prototype.convertTextChangeToCodeEdit = function (change, fileName) { - return { - span: this.decodeSpan(change, fileName), - newText: change.newText ? change.newText : "" - }; - }; - SessionClient.prototype.getBraceMatchingAtPosition = function (fileName, position) { - var _this = this; - var args = this.createFileLocationRequestArgs(fileName, position); - var request = this.processRequest(server.CommandNames.Brace, args); - var response = this.processResponse(request); - return response.body.map(function (entry) { return _this.decodeSpan(entry, fileName); }); // TODO: GH#18217 - }; - SessionClient.prototype.getIndentationAtPosition = function (_fileName, _position, _options) { - return ts.notImplemented(); - }; - SessionClient.prototype.getSyntacticClassifications = function (_fileName, _span) { - return ts.notImplemented(); - }; - SessionClient.prototype.getSemanticClassifications = function (_fileName, _span) { - return ts.notImplemented(); - }; - SessionClient.prototype.getEncodedSyntacticClassifications = function (_fileName, _span) { - return ts.notImplemented(); - }; - SessionClient.prototype.getEncodedSemanticClassifications = function (_fileName, _span) { - return ts.notImplemented(); - }; - SessionClient.prototype.getProgram = function () { - throw new Error("SourceFile objects are not serializable through the server protocol."); - }; - SessionClient.prototype.getNonBoundSourceFile = function (_fileName) { - throw new Error("SourceFile objects are not serializable through the server protocol."); - }; - SessionClient.prototype.getSourceFile = function (_fileName) { - throw new Error("SourceFile objects are not serializable through the server protocol."); - }; - SessionClient.prototype.cleanupSemanticCache = function () { - throw new Error("cleanupSemanticCache is not available through the server layer."); - }; - SessionClient.prototype.dispose = function () { - throw new Error("dispose is not available through the server layer."); - }; - return SessionClient; - }()); - server.SessionClient = SessionClient; - })(server = ts.server || (ts.server = {})); -})(ts || (ts = {})); -var RunnerBase = /** @class */ (function () { - function RunnerBase() { - // contains the tests to run - this.tests = []; - /** The working directory where tests are found. Needed for batch testing where the input path will differ from the output path inside baselines */ - this.workingDirectory = ""; - } - /** Add a source file to the runner's list of tests that need to be initialized with initializeTests */ - RunnerBase.prototype.addTest = function (fileName) { - this.tests.push(fileName); - }; - RunnerBase.prototype.enumerateFiles = function (folder, regex, options) { - return ts.map(Harness.IO.listFiles(Harness.userSpecifiedRoot + folder, regex, { recursive: (options ? options.recursive : false) }), ts.normalizeSlashes); - }; - /** Replaces instances of full paths with fileNames only */ - RunnerBase.removeFullPaths = function (path) { - // If its a full path (starts with "C:" or "/") replace with just the filename - var fixedPath = /^(\w:|\/)/.test(path) ? ts.getBaseFileName(path) : path; - // when running in the browser the 'full path' is the host name, shows up in error baselines - var localHost = /http:\/localhost:\d+/g; - fixedPath = fixedPath.replace(localHost, ""); - return fixedPath; - }; - return RunnerBase; -}()); -var Harness; -(function (Harness) { - var SourceMapRecorder; - (function (SourceMapRecorder) { - var SourceMapDecoder; - (function (SourceMapDecoder) { - var sourceMapMappings; - var sourceMapNames; - var decodingIndex; - var prevNameIndex; - var decodeOfEncodedMapping; - var errorDecodeOfEncodedMapping; - function initializeSourceMapDecoding(sourceMapData) { - sourceMapMappings = sourceMapData.sourceMapMappings; - sourceMapNames = sourceMapData.sourceMapNames; - decodingIndex = 0; - prevNameIndex = 0; - decodeOfEncodedMapping = { - emittedLine: 1, - emittedColumn: 1, - sourceLine: 1, - sourceColumn: 1, - sourceIndex: 0, - }; - errorDecodeOfEncodedMapping = undefined; - } - SourceMapDecoder.initializeSourceMapDecoding = initializeSourceMapDecoding; - function isSourceMappingSegmentEnd() { - if (decodingIndex === sourceMapMappings.length) { - return true; - } - if (sourceMapMappings.charAt(decodingIndex) === ",") { - return true; - } - if (sourceMapMappings.charAt(decodingIndex) === ";") { - return true; - } - return false; - } - function decodeNextEncodedSourceMapSpan() { - errorDecodeOfEncodedMapping = undefined; - function createErrorIfCondition(condition, errormsg) { - if (errorDecodeOfEncodedMapping) { - // there was existing error: - return true; - } - if (condition) { - errorDecodeOfEncodedMapping = errormsg; - } - return condition; - } - function base64VLQFormatDecode() { - function base64FormatDecode() { - return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(sourceMapMappings.charAt(decodingIndex)); - } - var moreDigits = true; - var shiftCount = 0; - var value = 0; - for (; moreDigits; decodingIndex++) { - if (createErrorIfCondition(decodingIndex >= sourceMapMappings.length, "Error in decoding base64VLQFormatDecode, past the mapping string")) { - return undefined; // TODO: GH#18217 - } - // 6 digit number - var currentByte = base64FormatDecode(); - // If msb is set, we still have more bits to continue - moreDigits = (currentByte & 32) !== 0; - // least significant 5 bits are the next msbs in the final value. - value = value | ((currentByte & 31) << shiftCount); - shiftCount += 5; - } - // Least significant bit if 1 represents negative and rest of the msb is actual absolute value - if ((value & 1) === 0) { - // + number - value = value >> 1; - } - else { - // - number - value = value >> 1; - value = -value; - } - return value; - } - while (decodingIndex < sourceMapMappings.length) { - if (sourceMapMappings.charAt(decodingIndex) === ";") { - // New line - decodeOfEncodedMapping.emittedLine++; - decodeOfEncodedMapping.emittedColumn = 1; - decodingIndex++; - continue; - } - if (sourceMapMappings.charAt(decodingIndex) === ",") { - // Next entry is on same line - no action needed - decodingIndex++; - continue; - } - // Read the current span - // 1. Column offset from prev read jsColumn - decodeOfEncodedMapping.emittedColumn += base64VLQFormatDecode(); - // Incorrect emittedColumn dont support this map - if (createErrorIfCondition(decodeOfEncodedMapping.emittedColumn < 1, "Invalid emittedColumn found")) { - return { error: errorDecodeOfEncodedMapping, sourceMapSpan: decodeOfEncodedMapping }; - } - // Dont support reading mappings that dont have information about original source and its line numbers - if (createErrorIfCondition(isSourceMappingSegmentEnd(), "Unsupported Error Format: No entries after emitted column")) { - return { error: errorDecodeOfEncodedMapping, sourceMapSpan: decodeOfEncodedMapping }; - } - // 2. Relative sourceIndex - decodeOfEncodedMapping.sourceIndex += base64VLQFormatDecode(); - // Incorrect sourceIndex dont support this map - if (createErrorIfCondition(decodeOfEncodedMapping.sourceIndex < 0, "Invalid sourceIndex found")) { - return { error: errorDecodeOfEncodedMapping, sourceMapSpan: decodeOfEncodedMapping }; - } - // Dont support reading mappings that dont have information about original source span - if (createErrorIfCondition(isSourceMappingSegmentEnd(), "Unsupported Error Format: No entries after sourceIndex")) { - return { error: errorDecodeOfEncodedMapping, sourceMapSpan: decodeOfEncodedMapping }; - } - // 3. Relative sourceLine 0 based - decodeOfEncodedMapping.sourceLine += base64VLQFormatDecode(); - // Incorrect sourceLine dont support this map - if (createErrorIfCondition(decodeOfEncodedMapping.sourceLine < 1, "Invalid sourceLine found")) { - return { error: errorDecodeOfEncodedMapping, sourceMapSpan: decodeOfEncodedMapping }; - } - // Dont support reading mappings that dont have information about original source and its line numbers - if (createErrorIfCondition(isSourceMappingSegmentEnd(), "Unsupported Error Format: No entries after emitted Line")) { - return { error: errorDecodeOfEncodedMapping, sourceMapSpan: decodeOfEncodedMapping }; - } - // 4. Relative sourceColumn 0 based - decodeOfEncodedMapping.sourceColumn += base64VLQFormatDecode(); - // Incorrect sourceColumn dont support this map - if (createErrorIfCondition(decodeOfEncodedMapping.sourceColumn < 1, "Invalid sourceLine found")) { - return { error: errorDecodeOfEncodedMapping, sourceMapSpan: decodeOfEncodedMapping }; - } - // 5. Check if there is name: - if (!isSourceMappingSegmentEnd()) { - prevNameIndex += base64VLQFormatDecode(); - decodeOfEncodedMapping.nameIndex = prevNameIndex; - // Incorrect nameIndex dont support this map - if (createErrorIfCondition(decodeOfEncodedMapping.nameIndex < 0 || decodeOfEncodedMapping.nameIndex >= sourceMapNames.length, "Invalid name index for the source map entry")) { - return { error: errorDecodeOfEncodedMapping, sourceMapSpan: decodeOfEncodedMapping }; - } - } - // Dont support reading mappings that dont have information about original source and its line numbers - if (createErrorIfCondition(!isSourceMappingSegmentEnd(), "Unsupported Error Format: There are more entries after " + (decodeOfEncodedMapping.nameIndex === -1 ? "sourceColumn" : "nameIndex"))) { - return { error: errorDecodeOfEncodedMapping, sourceMapSpan: decodeOfEncodedMapping }; - } - // Populated the entry - return { error: errorDecodeOfEncodedMapping, sourceMapSpan: decodeOfEncodedMapping }; - } - createErrorIfCondition(/*condition*/ true, "No encoded entry found"); - return undefined; // TODO: GH#18217 - } - SourceMapDecoder.decodeNextEncodedSourceMapSpan = decodeNextEncodedSourceMapSpan; - function hasCompletedDecoding() { - return decodingIndex === sourceMapMappings.length; - } - SourceMapDecoder.hasCompletedDecoding = hasCompletedDecoding; - function getRemainingDecodeString() { - return sourceMapMappings.substr(decodingIndex); - } - SourceMapDecoder.getRemainingDecodeString = getRemainingDecodeString; - })(SourceMapDecoder || (SourceMapDecoder = {})); - var SourceMapSpanWriter; - (function (SourceMapSpanWriter) { - var sourceMapRecorder; - var sourceMapSources; - var sourceMapNames; - var jsFile; - var jsLineMap; - var tsCode; - var tsLineMap; - var spansOnSingleLine; - var prevWrittenSourcePos; - var prevWrittenJsLine; - var spanMarkerContinues; - function initializeSourceMapSpanWriter(sourceMapRecordWriter, sourceMapData, currentJsFile) { - sourceMapRecorder = sourceMapRecordWriter; - sourceMapSources = sourceMapData.sourceMapSources; - sourceMapNames = sourceMapData.sourceMapNames; - jsFile = currentJsFile; - jsLineMap = jsFile.lineStarts; - spansOnSingleLine = []; - prevWrittenSourcePos = 0; - prevWrittenJsLine = 0; - spanMarkerContinues = false; - SourceMapDecoder.initializeSourceMapDecoding(sourceMapData); - sourceMapRecorder.WriteLine("==================================================================="); - sourceMapRecorder.WriteLine("JsFile: " + sourceMapData.sourceMapFile); - sourceMapRecorder.WriteLine("mapUrl: " + sourceMapData.jsSourceMappingURL); - sourceMapRecorder.WriteLine("sourceRoot: " + sourceMapData.sourceMapSourceRoot); - sourceMapRecorder.WriteLine("sources: " + sourceMapData.sourceMapSources); - if (sourceMapData.sourceMapSourcesContent) { - sourceMapRecorder.WriteLine("sourcesContent: " + JSON.stringify(sourceMapData.sourceMapSourcesContent)); - } - sourceMapRecorder.WriteLine("==================================================================="); - } - SourceMapSpanWriter.initializeSourceMapSpanWriter = initializeSourceMapSpanWriter; - function getSourceMapSpanString(mapEntry, getAbsentNameIndex) { - var mapString = "Emitted(" + mapEntry.emittedLine + ", " + mapEntry.emittedColumn + ") Source(" + mapEntry.sourceLine + ", " + mapEntry.sourceColumn + ") + SourceIndex(" + mapEntry.sourceIndex + ")"; - if (mapEntry.nameIndex >= 0 && mapEntry.nameIndex < sourceMapNames.length) { - mapString += " name (" + sourceMapNames[mapEntry.nameIndex] + ")"; - } - else { - if ((mapEntry.nameIndex && mapEntry.nameIndex !== -1) || getAbsentNameIndex) { - mapString += " nameIndex (" + mapEntry.nameIndex + ")"; - } - } - return mapString; - } - function recordSourceMapSpan(sourceMapSpan) { - // verify the decoded span is same as the new span - var decodeResult = SourceMapDecoder.decodeNextEncodedSourceMapSpan(); - var decodeErrors; - if (decodeResult.error - || decodeResult.sourceMapSpan.emittedLine !== sourceMapSpan.emittedLine - || decodeResult.sourceMapSpan.emittedColumn !== sourceMapSpan.emittedColumn - || decodeResult.sourceMapSpan.sourceLine !== sourceMapSpan.sourceLine - || decodeResult.sourceMapSpan.sourceColumn !== sourceMapSpan.sourceColumn - || decodeResult.sourceMapSpan.sourceIndex !== sourceMapSpan.sourceIndex - || decodeResult.sourceMapSpan.nameIndex !== sourceMapSpan.nameIndex) { - if (decodeResult.error) { - decodeErrors = ["!!^^ !!^^ There was decoding error in the sourcemap at this location: " + decodeResult.error]; - } - else { - decodeErrors = ["!!^^ !!^^ The decoded span from sourcemap's mapping entry does not match what was encoded for this span:"]; - } - decodeErrors.push("!!^^ !!^^ Decoded span from sourcemap's mappings entry: " + getSourceMapSpanString(decodeResult.sourceMapSpan, /*getAbsentNameIndex*/ true) + " Span encoded by the emitter:" + getSourceMapSpanString(sourceMapSpan, /*getAbsentNameIndex*/ true)); - } - if (spansOnSingleLine.length && spansOnSingleLine[0].sourceMapSpan.emittedLine !== sourceMapSpan.emittedLine) { - // On different line from the one that we have been recording till now, - writeRecordedSpans(); - spansOnSingleLine = []; - } - spansOnSingleLine.push({ sourceMapSpan: sourceMapSpan, decodeErrors: decodeErrors }); - } - SourceMapSpanWriter.recordSourceMapSpan = recordSourceMapSpan; - function recordNewSourceFileSpan(sourceMapSpan, newSourceFileCode) { - assert.isTrue(spansOnSingleLine.length === 0 || spansOnSingleLine[0].sourceMapSpan.emittedLine !== sourceMapSpan.emittedLine, "new file source map span should be on new line. We currently handle only that scenario"); - recordSourceMapSpan(sourceMapSpan); - assert.isTrue(spansOnSingleLine.length === 1); - sourceMapRecorder.WriteLine("-------------------------------------------------------------------"); - sourceMapRecorder.WriteLine("emittedFile:" + jsFile.file); - sourceMapRecorder.WriteLine("sourceFile:" + sourceMapSources[spansOnSingleLine[0].sourceMapSpan.sourceIndex]); - sourceMapRecorder.WriteLine("-------------------------------------------------------------------"); - tsLineMap = ts.computeLineStarts(newSourceFileCode); - tsCode = newSourceFileCode; - prevWrittenSourcePos = 0; - } - SourceMapSpanWriter.recordNewSourceFileSpan = recordNewSourceFileSpan; - function close() { - // Write the lines pending on the single line - writeRecordedSpans(); - if (!SourceMapDecoder.hasCompletedDecoding()) { - sourceMapRecorder.WriteLine("!!!! **** There are more source map entries in the sourceMap's mapping than what was encoded"); - sourceMapRecorder.WriteLine("!!!! **** Remaining decoded string: " + SourceMapDecoder.getRemainingDecodeString()); - } - // write remaining js lines - writeJsFileLines(jsLineMap.length); - } - SourceMapSpanWriter.close = close; - function getTextOfLine(line, lineMap, code) { - var startPos = lineMap[line]; - var endPos = lineMap[line + 1]; - var text = code.substring(startPos, endPos); - return line === 0 ? utils.removeByteOrderMark(text) : text; - } - function writeJsFileLines(endJsLine) { - for (; prevWrittenJsLine < endJsLine; prevWrittenJsLine++) { - sourceMapRecorder.Write(">>>" + getTextOfLine(prevWrittenJsLine, jsLineMap, jsFile.text)); - } - } - function writeRecordedSpans() { - var markerIds = []; - function getMarkerId(markerIndex) { - var markerId = ""; - if (spanMarkerContinues) { - assert.isTrue(markerIndex === 0); - markerId = "1->"; - } - else { - markerId = "" + (markerIndex + 1); - if (markerId.length < 2) { - markerId = markerId + " "; - } - markerId += ">"; - } - return markerId; - } - var prevEmittedCol; - function iterateSpans(fn) { - prevEmittedCol = 1; - for (var i = 0; i < spansOnSingleLine.length; i++) { - fn(spansOnSingleLine[i], i); - prevEmittedCol = spansOnSingleLine[i].sourceMapSpan.emittedColumn; - } - } - function writeSourceMapIndent(indentLength, indentPrefix) { - sourceMapRecorder.Write(indentPrefix); - for (var i = 1; i < indentLength; i++) { - sourceMapRecorder.Write(" "); - } - } - function writeSourceMapMarker(currentSpan, index, endColumn, endContinues) { - if (endColumn === void 0) { endColumn = currentSpan.sourceMapSpan.emittedColumn; } - if (endContinues === void 0) { endContinues = false; } - var markerId = getMarkerId(index); - markerIds.push(markerId); - writeSourceMapIndent(prevEmittedCol, markerId); - for (var i = prevEmittedCol; i < endColumn; i++) { - sourceMapRecorder.Write("^"); - } - if (endContinues) { - sourceMapRecorder.Write("->"); - } - sourceMapRecorder.WriteLine(""); - spanMarkerContinues = endContinues; - } - function writeSourceMapSourceText(currentSpan, index) { - var sourcePos = tsLineMap[currentSpan.sourceMapSpan.sourceLine - 1] + (currentSpan.sourceMapSpan.sourceColumn - 1); - var sourceText = ""; - if (prevWrittenSourcePos < sourcePos) { - // Position that goes forward, get text - sourceText = tsCode.substring(prevWrittenSourcePos, sourcePos); - } - if (currentSpan.decodeErrors) { - // If there are decode errors, write - for (var _i = 0, _a = currentSpan.decodeErrors; _i < _a.length; _i++) { - var decodeError = _a[_i]; - writeSourceMapIndent(prevEmittedCol, markerIds[index]); - sourceMapRecorder.WriteLine(decodeError); - } - } - var tsCodeLineMap = ts.computeLineStarts(sourceText); - for (var i = 0; i < tsCodeLineMap.length; i++) { - writeSourceMapIndent(prevEmittedCol, i === 0 ? markerIds[index] : " >"); - sourceMapRecorder.Write(getTextOfLine(i, tsCodeLineMap, sourceText)); - if (i === tsCodeLineMap.length - 1) { - sourceMapRecorder.WriteLine(""); - } - } - prevWrittenSourcePos = sourcePos; - } - function writeSpanDetails(currentSpan, index) { - sourceMapRecorder.WriteLine(markerIds[index] + getSourceMapSpanString(currentSpan.sourceMapSpan)); - } - if (spansOnSingleLine.length) { - var currentJsLine = spansOnSingleLine[0].sourceMapSpan.emittedLine; - // Write js line - writeJsFileLines(currentJsLine); - // Emit markers - iterateSpans(writeSourceMapMarker); - var jsFileText = getTextOfLine(currentJsLine, jsLineMap, jsFile.text); - if (prevEmittedCol < jsFileText.length) { - // There is remaining text on this line that will be part of next source span so write marker that continues - writeSourceMapMarker(/*currentSpan*/ undefined, spansOnSingleLine.length, /*endColumn*/ jsFileText.length, /*endContinues*/ true); // TODO: GH#18217 - } - // Emit Source text - iterateSpans(writeSourceMapSourceText); - // Emit column number etc - iterateSpans(writeSpanDetails); - sourceMapRecorder.WriteLine("---"); - } - } - })(SourceMapSpanWriter || (SourceMapSpanWriter = {})); - function getSourceMapRecord(sourceMapDataList, program, jsFiles, declarationFiles) { - var sourceMapRecorder = new Harness.Compiler.WriterAggregator(); - for (var i = 0; i < sourceMapDataList.length; i++) { - var sourceMapData = sourceMapDataList[i]; - var prevSourceFile = void 0; - var currentFile = void 0; - if (ts.endsWith(sourceMapData.sourceMapFile, ".d.ts" /* Dts */)) { - if (sourceMapDataList.length > jsFiles.length) { - currentFile = declarationFiles[Math.floor(i / 2)]; // When both kinds of source map are present, they alternate js/dts - } - else { - currentFile = declarationFiles[i]; - } - } - else { - if (sourceMapDataList.length > jsFiles.length) { - currentFile = jsFiles[Math.floor(i / 2)]; - } - else { - currentFile = jsFiles[i]; - } - } - SourceMapSpanWriter.initializeSourceMapSpanWriter(sourceMapRecorder, sourceMapData, currentFile); - for (var _i = 0, _a = sourceMapData.sourceMapDecodedMappings; _i < _a.length; _i++) { - var decodedSourceMapping = _a[_i]; - var currentSourceFile = program.getSourceFile(sourceMapData.inputSourceFileNames[decodedSourceMapping.sourceIndex]); - if (currentSourceFile !== prevSourceFile) { - SourceMapSpanWriter.recordNewSourceFileSpan(decodedSourceMapping, currentSourceFile.text); - prevSourceFile = currentSourceFile; - } - else { - SourceMapSpanWriter.recordSourceMapSpan(decodedSourceMapping); - } - } - SourceMapSpanWriter.close(); // If the last spans werent emitted, emit them - } - sourceMapRecorder.Close(); - return sourceMapRecorder.lines.join("\r\n"); - } - SourceMapRecorder.getSourceMapRecord = getSourceMapRecord; - })(SourceMapRecorder = Harness.SourceMapRecorder || (Harness.SourceMapRecorder = {})); -})(Harness || (Harness = {})); -// Block scoped definitions work poorly for global variables, temporarily enable var -/* tslint:disable:no-var-keyword */ -// this will work in the browser via browserify -var _chai = require("chai"); -var assert = _chai.assert; -{ - // chai's builtin `assert.isFalse` is featureful but slow - we don't use those features, - // so we'll just overwrite it as an alterative to migrating a bunch of code off of chai - assert.isFalse = function (expr, msg) { if (expr !== false) - throw new Error(msg); }; - var assertDeepImpl_1 = assert.deepEqual; - assert.deepEqual = function (a, b, msg) { - if (ts.isArray(a) && ts.isArray(b)) { - assertDeepImpl_1(arrayExtraKeysObject(a), arrayExtraKeysObject(b), "Array extra keys differ"); - } - assertDeepImpl_1(a, b, msg); - function arrayExtraKeysObject(a) { - var obj = {}; - for (var key in a) { - if (Number.isNaN(Number(key))) { - obj[key] = a[key]; - } - } - return obj; - } - }; -} -var global = Function("return this").call(undefined); -/* tslint:enable:no-var-keyword prefer-const */ -var Utils; -(function (Utils) { - // Setup some globals based on the current environment - var ExecutionEnvironment; - (function (ExecutionEnvironment) { - ExecutionEnvironment[ExecutionEnvironment["Node"] = 0] = "Node"; - ExecutionEnvironment[ExecutionEnvironment["Browser"] = 1] = "Browser"; - })(ExecutionEnvironment = Utils.ExecutionEnvironment || (Utils.ExecutionEnvironment = {})); - function getExecutionEnvironment() { - if (typeof window !== "undefined") { - return 1 /* Browser */; - } - else { - return 0 /* Node */; - } - } - Utils.getExecutionEnvironment = getExecutionEnvironment; - Utils.currentExecutionEnvironment = getExecutionEnvironment(); - // Thanks to browserify, Buffer is always available nowadays - var Buffer = require("buffer").Buffer; - function encodeString(s) { - return Buffer.from(s).toString("utf8"); - } - Utils.encodeString = encodeString; - function byteLength(s, encoding) { - // stub implementation if Buffer is not available (in-browser case) - return Buffer.byteLength(s, encoding); - } - Utils.byteLength = byteLength; - function evalFile(fileContents, fileName, nodeContext) { - var environment = getExecutionEnvironment(); - switch (environment) { - case 1 /* Browser */: - eval(fileContents); - break; - case 0 /* Node */: - var vm = require("vm"); - if (nodeContext) { - vm.runInNewContext(fileContents, nodeContext, fileName); - } - else { - vm.runInThisContext(fileContents, fileName); - } - break; - default: - throw new Error("Unknown context"); - } - } - Utils.evalFile = evalFile; - /** Splits the given string on \r\n, or on only \n if that fails, or on only \r if *that* fails. */ - function splitContentByNewlines(content) { - // Split up the input file by line - // Note: IE JS engine incorrectly handles consecutive delimiters here when using RegExp split, so - // we have to use string-based splitting instead and try to figure out the delimiting chars - var lines = content.split("\r\n"); - if (lines.length === 1) { - lines = content.split("\n"); - if (lines.length === 1) { - lines = content.split("\r"); - } - } - return lines; - } - Utils.splitContentByNewlines = splitContentByNewlines; - /** Reads a file under /tests */ - function readTestFile(path) { - if (path.indexOf("tests") < 0) { - path = "tests/" + path; - } - var content; - try { - content = Harness.IO.readFile(Harness.userSpecifiedRoot + path); - } - catch (err) { - return undefined; - } - return content; - } - Utils.readTestFile = readTestFile; - function memoize(f, memoKey) { - var cache = ts.createMap(); - return (function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var key = memoKey.apply(void 0, args); - if (cache.has(key)) { - return cache.get(key); - } - else { - var value = f.apply(this, args); - cache.set(key, value); - return value; - } - }); - } - Utils.memoize = memoize; - Utils.canonicalizeForHarness = ts.createGetCanonicalFileName(/*caseSensitive*/ false); // This is done so tests work on windows _and_ linux - function assertInvariants(node, parent) { - if (node) { - assert.isFalse(node.pos < 0, "node.pos < 0"); - assert.isFalse(node.end < 0, "node.end < 0"); - assert.isFalse(node.end < node.pos, "node.end < node.pos"); - assert.equal(node.parent, parent, "node.parent !== parent"); - if (parent) { - // Make sure each child is contained within the parent. - assert.isFalse(node.pos < parent.pos, "node.pos < parent.pos"); - assert.isFalse(node.end > parent.end, "node.end > parent.end"); - } - ts.forEachChild(node, function (child) { - assertInvariants(child, node); - }); - // Make sure each of the children is in order. - var currentPos_1 = 0; - ts.forEachChild(node, function (child) { - assert.isFalse(child.pos < currentPos_1, "child.pos < currentPos"); - currentPos_1 = child.end; - }, function (array) { - assert.isFalse(array.pos < node.pos, "array.pos < node.pos"); - assert.isFalse(array.end > node.end, "array.end > node.end"); - assert.isFalse(array.pos < currentPos_1, "array.pos < currentPos"); - for (var _i = 0, array_1 = array; _i < array_1.length; _i++) { - var item = array_1[_i]; - assert.isFalse(item.pos < currentPos_1, "array[i].pos < currentPos"); - currentPos_1 = item.end; - } - currentPos_1 = array.end; - }); - var childNodesAndArrays_1 = []; - ts.forEachChild(node, function (child) { childNodesAndArrays_1.push(child); }, function (array) { childNodesAndArrays_1.push(array); }); - for (var childName in node) { - if (childName === "parent" || childName === "nextContainer" || childName === "modifiers" || childName === "externalModuleIndicator" || - // for now ignore jsdoc comments - childName === "jsDocComment" || childName === "checkJsDirective" || childName === "commonJsModuleIndicator") { - continue; - } - var child = node[childName]; - if (isNodeOrArray(child)) { - assert.isFalse(childNodesAndArrays_1.indexOf(child) < 0, "Missing child when forEach'ing over node: " + ts.SyntaxKind[node.kind] + "-" + childName); - } - } - } - } - Utils.assertInvariants = assertInvariants; - function isNodeOrArray(a) { - return a !== undefined && typeof a.pos === "number"; - } - function convertDiagnostics(diagnostics) { - return diagnostics.map(convertDiagnostic); - } - Utils.convertDiagnostics = convertDiagnostics; - function convertDiagnostic(diagnostic) { - return { - start: diagnostic.start, - length: diagnostic.length, - messageText: ts.flattenDiagnosticMessageText(diagnostic.messageText, Harness.IO.newLine()), - category: ts.diagnosticCategoryName(diagnostic, /*lowerCase*/ false), - code: diagnostic.code - }; - } - function sourceFileToJSON(file) { - return JSON.stringify(file, function (_, v) { return isNodeOrArray(v) ? serializeNode(v) : v; }, " "); - function getKindName(k) { - if (ts.isString(k)) { - return k; - } - // For some markers in SyntaxKind, we should print its original syntax name instead of - // the marker name in tests. - if (k === ts.SyntaxKind.FirstJSDocNode || - k === ts.SyntaxKind.LastJSDocNode || - k === ts.SyntaxKind.FirstJSDocTagNode || - k === ts.SyntaxKind.LastJSDocTagNode) { - for (var kindName in ts.SyntaxKind) { - if (ts.SyntaxKind[kindName] === k) { - return kindName; - } - } - } - return ts.SyntaxKind[k]; - } - function getFlagName(flags, f) { - if (f === 0) { - return 0; - } - var result = ""; - ts.forEach(Object.getOwnPropertyNames(flags), function (v) { - if (isFinite(v)) { - v = +v; - if (f === +v) { - result = flags[v]; - return true; - } - else if ((f & v) > 0) { - if (result.length) { - result += " | "; - } - result += flags[v]; - return false; - } - } - }); - return result; - } - function getNodeFlagName(f) { return getFlagName(ts.NodeFlags, f); } - function serializeNode(n) { - var o = { kind: getKindName(n.kind) }; - if (ts.containsParseError(n)) { - o.containsParseError = true; - } - for (var _i = 0, _a = Object.getOwnPropertyNames(n); _i < _a.length; _i++) { - var propertyName = _a[_i]; - switch (propertyName) { - case "parent": - case "symbol": - case "locals": - case "localSymbol": - case "kind": - case "id": - case "nodeCount": - case "symbolCount": - case "identifierCount": - case "scriptSnapshot": - // Blacklist of items we never put in the baseline file. - break; - case "originalKeywordKind": - o[propertyName] = getKindName(n[propertyName]); - break; - case "flags": - // Clear the flags that are produced by aggregating child values. That is ephemeral - // data we don't care about in the dump. We only care what the parser set directly - // on the AST. - var flags = n.flags & ~(65536 /* JavaScriptFile */ | 262144 /* HasAggregatedChildData */); - if (flags) { - o[propertyName] = getNodeFlagName(flags); - } - break; - case "parseDiagnostics": - o[propertyName] = convertDiagnostics(n[propertyName]); - break; - case "nextContainer": - if (n.nextContainer) { - o[propertyName] = { kind: n.nextContainer.kind, pos: n.nextContainer.pos, end: n.nextContainer.end }; - } - break; - case "text": - // Include 'text' field for identifiers/literals, but not for source files. - if (n.kind !== 274 /* SourceFile */) { - o[propertyName] = n[propertyName]; - } - break; - default: - o[propertyName] = n[propertyName]; - } - } - return o; - } - } - Utils.sourceFileToJSON = sourceFileToJSON; - function assertDiagnosticsEquals(array1, array2) { - if (array1 === array2) { - return; - } - assert(array1, "array1"); - assert(array2, "array2"); - assert.equal(array1.length, array2.length, "array1.length !== array2.length"); - for (var i = 0; i < array1.length; i++) { - var d1 = array1[i]; - var d2 = array2[i]; - assert.equal(d1.start, d2.start, "d1.start !== d2.start"); - assert.equal(d1.length, d2.length, "d1.length !== d2.length"); - assert.equal(ts.flattenDiagnosticMessageText(d1.messageText, Harness.IO.newLine()), ts.flattenDiagnosticMessageText(d2.messageText, Harness.IO.newLine()), "d1.messageText !== d2.messageText"); - assert.equal(d1.category, d2.category, "d1.category !== d2.category"); - assert.equal(d1.code, d2.code, "d1.code !== d2.code"); - } - } - Utils.assertDiagnosticsEquals = assertDiagnosticsEquals; - function assertStructuralEquals(node1, node2) { - if (node1 === node2) { - return; - } - assert(node1, "node1"); - assert(node2, "node2"); - assert.equal(node1.pos, node2.pos, "node1.pos !== node2.pos"); - assert.equal(node1.end, node2.end, "node1.end !== node2.end"); - assert.equal(node1.kind, node2.kind, "node1.kind !== node2.kind"); - // call this on both nodes to ensure all propagated flags have been set (and thus can be - // compared). - assert.equal(ts.containsParseError(node1), ts.containsParseError(node2)); - assert.equal(node1.flags & ~1408 /* ReachabilityAndEmitFlags */, node2.flags & ~1408 /* ReachabilityAndEmitFlags */, "node1.flags !== node2.flags"); - ts.forEachChild(node1, function (child1) { - var childName = findChildName(node1, child1); - var child2 = node2[childName]; - assertStructuralEquals(child1, child2); - }, function (array1) { - var childName = findChildName(node1, array1); - var array2 = node2[childName]; - assertArrayStructuralEquals(array1, array2); - }); - } - Utils.assertStructuralEquals = assertStructuralEquals; - function assertArrayStructuralEquals(array1, array2) { - if (array1 === array2) { - return; - } - assert(array1, "array1"); - assert(array2, "array2"); - assert.equal(array1.pos, array2.pos, "array1.pos !== array2.pos"); - assert.equal(array1.end, array2.end, "array1.end !== array2.end"); - assert.equal(array1.length, array2.length, "array1.length !== array2.length"); - for (var i = 0; i < array1.length; i++) { - assertStructuralEquals(array1[i], array2[i]); - } - } - function findChildName(parent, child) { - for (var name in parent) { - if (parent.hasOwnProperty(name) && parent[name] === child) { - return name; - } - } - throw new Error("Could not find child in parent"); - } - var maxHarnessFrames = 1; - function filterStack(error, stackTraceLimit) { - if (stackTraceLimit === void 0) { stackTraceLimit = Infinity; } - var stack = error.stack; - if (stack) { - var lines = stack.split(/\r\n?|\n/g); - var filtered = []; - var frameCount = 0; - var harnessFrameCount = 0; - for (var _i = 0, lines_2 = lines; _i < lines_2.length; _i++) { - var line = lines_2[_i]; - if (isStackFrame(line)) { - if (frameCount >= stackTraceLimit - || isMocha(line) - || isNode(line)) { - continue; - } - if (isHarness(line)) { - if (harnessFrameCount >= maxHarnessFrames) { - continue; - } - harnessFrameCount++; - } - line = line.replace(/\bfile:\/\/\/(.*?)(?=(:\d+)*($|\)))/, function (_, path) { return ts.sys.resolvePath(path); }); - frameCount++; - } - filtered.push(line); - } - error.stack = filtered.join(Harness.IO.newLine()); - } - return error; - } - Utils.filterStack = filterStack; - function isStackFrame(line) { - return /^\s+at\s/.test(line); - } - function isMocha(line) { - return /[\\/](node_modules|components)[\\/]mocha(js)?[\\/]|[\\/]mocha\.js/.test(line); - } - function isNode(line) { - return /\((timers|events|node|module)\.js:/.test(line); - } - function isHarness(line) { - return /[\\/]src[\\/]harness[\\/]|[\\/]run\.js/.test(line); - } -})(Utils || (Utils = {})); -var Harness; -(function (Harness) { - // harness always uses one kind of new line - // But note that `parseTestData` in `fourslash.ts` uses "\n" - Harness.harnessNewLine = "\r\n"; - // Root for file paths that are stored in a virtual file system - Harness.virtualFileSystemRoot = "/"; - function createNodeIO() { - var fs, pathModule; - if (require) { - fs = require("fs"); - pathModule = require("path"); - } - else { - fs = pathModule = {}; - } - function deleteFile(path) { - try { - fs.unlinkSync(path); - } - catch ( /*ignore*/_a) { /*ignore*/ } - } - function directoryName(path) { - var dirPath = pathModule.dirname(path); - // Node will just continue to repeat the root path, rather than return null - return dirPath === path ? undefined : dirPath; - } - function enumerateTestFiles(runner) { - return runner.enumerateTestFiles(); - } - function listFiles(path, spec, options) { - if (options === void 0) { options = {}; } - function filesInFolder(folder) { - var paths = []; - for (var _i = 0, _a = fs.readdirSync(folder); _i < _a.length; _i++) { - var file = _a[_i]; - var pathToFile = pathModule.join(folder, file); - var stat = fs.statSync(pathToFile); - if (options.recursive && stat.isDirectory()) { - paths = paths.concat(filesInFolder(pathToFile)); - } - else if (stat.isFile() && (!spec || file.match(spec))) { - paths.push(pathToFile); - } - } - return paths; - } - return filesInFolder(path); - } - function getAccessibleFileSystemEntries(dirname) { - try { - var entries = fs.readdirSync(dirname || ".").sort(ts.sys.useCaseSensitiveFileNames ? ts.compareStringsCaseSensitive : ts.compareStringsCaseInsensitive); - var files = []; - var directories = []; - for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) { - var entry = entries_1[_i]; - if (entry === "." || entry === "..") - continue; - var name = vpath.combine(dirname, entry); - try { - var stat = fs.statSync(name); - if (!stat) - continue; - if (stat.isFile()) { - files.push(entry); - } - else if (stat.isDirectory()) { - directories.push(entry); - } - } - catch ( /*ignore*/_a) { /*ignore*/ } - } - return { files: files, directories: directories }; - } - catch (e) { - return { files: [], directories: [] }; - } - } - function createDirectory(path) { - try { - fs.mkdirSync(path); - } - catch (e) { - if (e.code === "ENOENT") { - createDirectory(vpath.dirname(path)); - createDirectory(path); - } - else if (!ts.sys.directoryExists(path)) { - throw e; - } - } - } - return { - newLine: function () { return Harness.harnessNewLine; }, - getCurrentDirectory: function () { return ts.sys.getCurrentDirectory(); }, - useCaseSensitiveFileNames: function () { return ts.sys.useCaseSensitiveFileNames; }, - resolvePath: function (path) { return ts.sys.resolvePath(path); }, - getFileSize: function (path) { return ts.sys.getFileSize(path); }, - readFile: function (path) { return ts.sys.readFile(path); }, - writeFile: function (path, content) { return ts.sys.writeFile(path, content); }, - directoryName: directoryName, - getDirectories: function (path) { return ts.sys.getDirectories(path); }, - createDirectory: createDirectory, - fileExists: function (path) { return ts.sys.fileExists(path); }, - directoryExists: function (path) { return ts.sys.directoryExists(path); }, - deleteFile: deleteFile, - listFiles: listFiles, - enumerateTestFiles: enumerateTestFiles, - log: function (s) { return console.log(s); }, - args: function () { return ts.sys.args; }, - getExecutingFilePath: function () { return ts.sys.getExecutingFilePath(); }, - getWorkspaceRoot: function () { return vpath.resolve(__dirname, "../.."); }, - exit: function (exitCode) { return ts.sys.exit(exitCode); }, - readDirectory: function (path, extension, exclude, include, depth) { return ts.sys.readDirectory(path, extension, exclude, include, depth); }, - getAccessibleFileSystemEntries: getAccessibleFileSystemEntries, - tryEnableSourceMapsForHost: function () { return ts.sys.tryEnableSourceMapsForHost && ts.sys.tryEnableSourceMapsForHost(); }, - getMemoryUsage: function () { return ts.sys.getMemoryUsage && ts.sys.getMemoryUsage(); }, - getEnvironmentVariable: function (name) { return ts.sys.getEnvironmentVariable(name); }, - }; - } - function createBrowserIO() { - var serverRoot = new URL("http://localhost:8888/"); - var HttpHeaders = /** @class */ (function (_super) { - __extends(HttpHeaders, _super); - function HttpHeaders(template) { - var _this = _super.call(this, ts.compareStringsCaseInsensitive) || this; - if (template) { - for (var key in template) { - if (ts.hasProperty(template, key)) { - _this.set(key, template[key]); - } - } - } - return _this; - } - HttpHeaders.combine = function (left, right) { - if (!left && !right) - return undefined; - var headers = new HttpHeaders(); - if (left) - left.forEach(function (value, key) { headers.set(key, value); }); - if (right) - right.forEach(function (value, key) { headers.set(key, value); }); - return headers; - }; - HttpHeaders.prototype.has = function (key) { - return _super.prototype.has.call(this, key.toLowerCase()); - }; - HttpHeaders.prototype.get = function (key) { - return _super.prototype.get.call(this, key.toLowerCase()); - }; - HttpHeaders.prototype.set = function (key, value) { - return _super.prototype.set.call(this, key.toLowerCase(), value); - }; - HttpHeaders.prototype.delete = function (key) { - return _super.prototype.delete.call(this, key.toLowerCase()); - }; - HttpHeaders.prototype.writeRequestHeaders = function (xhr) { - this.forEach(function (values, key) { - if (key === "access-control-allow-origin" || key === "content-length") - return; - var value = Array.isArray(values) ? values.join(",") : values; - if (key === "content-type") { - xhr.overrideMimeType(value); - return; - } - xhr.setRequestHeader(key, value); - }); - }; - HttpHeaders.readResponseHeaders = function (xhr) { - var allHeaders = xhr.getAllResponseHeaders(); - var headers = new HttpHeaders(); - for (var _i = 0, _a = allHeaders.split(/\r\n/g); _i < _a.length; _i++) { - var header = _a[_i]; - var colonIndex = header.indexOf(":"); - if (colonIndex >= 0) { - var key = header.slice(0, colonIndex).trim(); - var value = header.slice(colonIndex + 1).trim(); - var values = value.split(","); - headers.set(key, values.length > 1 ? values : value); - } - } - return headers; - }; - return HttpHeaders; - }(collections.SortedMap)); - var HttpContent = /** @class */ (function () { - function HttpContent(headers, content) { - this.headers = headers instanceof HttpHeaders ? headers : new HttpHeaders(headers); - this.content = content; - } - HttpContent.fromMediaType = function (mediaType, content) { - return new HttpContent({ "Content-Type": mediaType }, content); - }; - HttpContent.text = function (content) { - return HttpContent.fromMediaType("text/plain", content); - }; - HttpContent.json = function (content) { - return HttpContent.fromMediaType("application/json", JSON.stringify(content)); - }; - HttpContent.readResponseContent = function (xhr) { - if (typeof xhr.responseText === "string") { - return new HttpContent({ - "Content-Type": xhr.getResponseHeader("Content-Type") || undefined, - "Content-Length": xhr.getResponseHeader("Content-Length") || undefined, - }, xhr.responseText); - } - return undefined; - }; - HttpContent.prototype.writeRequestHeaders = function (xhr) { - this.headers.writeRequestHeaders(xhr); - }; - return HttpContent; - }()); - var HttpRequestMessage = /** @class */ (function () { - function HttpRequestMessage(method, url, headers, content) { - this.method = method; - this.url = typeof url === "string" ? new URL(url) : url; - this.headers = headers instanceof HttpHeaders ? headers : new HttpHeaders(headers); - this.content = content; - } - HttpRequestMessage.options = function (url) { - return new HttpRequestMessage("OPTIONS", url); - }; - HttpRequestMessage.head = function (url) { - return new HttpRequestMessage("HEAD", url); - }; - HttpRequestMessage.get = function (url) { - return new HttpRequestMessage("GET", url); - }; - HttpRequestMessage.delete = function (url) { - return new HttpRequestMessage("DELETE", url); - }; - HttpRequestMessage.put = function (url, content) { - return new HttpRequestMessage("PUT", url, /*headers*/ undefined, content); - }; - HttpRequestMessage.post = function (url, content) { - return new HttpRequestMessage("POST", url, /*headers*/ undefined, content); - }; - HttpRequestMessage.prototype.writeRequestHeaders = function (xhr) { - this.headers.writeRequestHeaders(xhr); - if (this.content) { - this.content.writeRequestHeaders(xhr); - } - }; - return HttpRequestMessage; - }()); - var HttpResponseMessage = /** @class */ (function () { - function HttpResponseMessage(statusCode, statusMessage, headers, content) { - this.statusCode = statusCode; - this.statusMessage = statusMessage; - this.headers = headers instanceof HttpHeaders ? headers : new HttpHeaders(headers); - this.content = content; - } - HttpResponseMessage.notFound = function () { - return new HttpResponseMessage(404, "Not Found"); - }; - HttpResponseMessage.hasSuccessStatusCode = function (response) { - return response.statusCode === 304 || (response.statusCode >= 200 && response.statusCode < 300); - }; - HttpResponseMessage.readResponseMessage = function (xhr) { - return new HttpResponseMessage(xhr.status, xhr.statusText, HttpHeaders.readResponseHeaders(xhr), HttpContent.readResponseContent(xhr)); - }; - return HttpResponseMessage; - }()); - function send(request) { - var xhr = new XMLHttpRequest(); - try { - xhr.open(request.method, request.url.toString(), /*async*/ false); - request.writeRequestHeaders(xhr); - xhr.setRequestHeader("Access-Control-Allow-Origin", "*"); - xhr.send(request.content && request.content.content); - while (xhr.readyState !== 4) - ; // block until ready - return HttpResponseMessage.readResponseMessage(xhr); - } - catch (e) { - return HttpResponseMessage.notFound(); - } - } - var caseSensitivity; - function useCaseSensitiveFileNames() { - if (!caseSensitivity) { - var response = send(HttpRequestMessage.options(new URL("*", serverRoot))); - var xCaseSensitivity = response.headers.get("X-Case-Sensitivity"); - caseSensitivity = xCaseSensitivity === "CS" ? "CS" : "CI"; - } - return caseSensitivity === "CS"; - } - function resolvePath(path) { - var response = send(HttpRequestMessage.post(new URL("/api/resolve", serverRoot), HttpContent.text(path))); - return HttpResponseMessage.hasSuccessStatusCode(response) && response.content ? response.content.content : undefined; - } - function getFileSize(path) { - var response = send(HttpRequestMessage.head(new URL(path, serverRoot))); - return HttpResponseMessage.hasSuccessStatusCode(response) ? +response.headers.get("Content-Length").toString() : 0; - } - function readFile(path) { - var response = send(HttpRequestMessage.get(new URL(path, serverRoot))); - return HttpResponseMessage.hasSuccessStatusCode(response) && response.content ? response.content.content : undefined; - } - function writeFile(path, contents) { - send(HttpRequestMessage.put(new URL(path, serverRoot), HttpContent.text(contents))); - } - function fileExists(path) { - var response = send(HttpRequestMessage.head(new URL(path, serverRoot))); - return HttpResponseMessage.hasSuccessStatusCode(response); - } - function directoryExists(path) { - var response = send(HttpRequestMessage.post(new URL("/api/directoryExists", serverRoot), HttpContent.text(path))); - return hasJsonContent(response) && JSON.parse(response.content.content); - } - function deleteFile(path) { - send(HttpRequestMessage.delete(new URL(path, serverRoot))); - } - function directoryName(path) { - var url = new URL(path, serverRoot); - return ts.getDirectoryPath(ts.normalizeSlashes(url.pathname || "/")); - } - function enumerateTestFiles(runner) { - var response = send(HttpRequestMessage.post(new URL("/api/enumerateTestFiles", serverRoot), HttpContent.text(runner.kind()))); - return hasJsonContent(response) ? JSON.parse(response.content.content) : []; - } - function listFiles(dirname, spec, options) { - if (spec || (options && !options.recursive)) { - var results = Harness.IO.listFiles(dirname); - if (spec) { - results = results.filter(function (file) { return spec.test(file); }); - } - if (options && !options.recursive) { - results = results.filter(function (file) { return ts.getDirectoryPath(ts.normalizeSlashes(file)) === dirname; }); - } - return results; - } - var response = send(HttpRequestMessage.post(new URL("/api/listFiles", serverRoot), HttpContent.text(dirname))); - return hasJsonContent(response) ? JSON.parse(response.content.content) : []; - } - function readDirectory(path, extension, exclude, include, depth) { - return ts.matchFiles(path, extension, exclude, include, useCaseSensitiveFileNames(), "", depth, getAccessibleFileSystemEntries); - } - function getAccessibleFileSystemEntries(dirname) { - var response = send(HttpRequestMessage.post(new URL("/api/getAccessibleFileSystemEntries", serverRoot), HttpContent.text(dirname))); - return hasJsonContent(response) ? JSON.parse(response.content.content) : { files: [], directories: [] }; - } - function hasJsonContent(response) { - return HttpResponseMessage.hasSuccessStatusCode(response) - && !!response.content - && /^application\/json(;.*)$/.test("" + response.content.headers.get("Content-Type")); - } - return { - newLine: function () { return Harness.harnessNewLine; }, - getCurrentDirectory: function () { return ""; }, - useCaseSensitiveFileNames: useCaseSensitiveFileNames, - resolvePath: resolvePath, - getFileSize: getFileSize, - readFile: readFile, - writeFile: writeFile, - directoryName: Utils.memoize(directoryName, function (path) { return path; }), - getDirectories: function () { return []; }, - createDirectory: function () { }, - fileExists: fileExists, - directoryExists: directoryExists, - deleteFile: deleteFile, - listFiles: Utils.memoize(listFiles, function (path, spec, options) { return path + "|" + spec + "|" + (options ? options.recursive === true : true); }), - enumerateTestFiles: Utils.memoize(enumerateTestFiles, function (runner) { return runner.kind(); }), - log: function (s) { return console.log(s); }, - args: function () { return []; }, - getExecutingFilePath: function () { return ""; }, - exit: function () { }, - readDirectory: readDirectory, - getAccessibleFileSystemEntries: getAccessibleFileSystemEntries, - getWorkspaceRoot: function () { return "/"; } - }; - } - function mockHash(s) { - return "hash-" + s; - } - Harness.mockHash = mockHash; - var environment = Utils.getExecutionEnvironment(); - switch (environment) { - case 0 /* Node */: - Harness.IO = createNodeIO(); - break; - case 1 /* Browser */: - Harness.IO = createBrowserIO(); - break; - default: - throw new Error("Unknown value '" + environment + "' for ExecutionEnvironment."); - } -})(Harness || (Harness = {})); -if (Harness.IO.tryEnableSourceMapsForHost && /^development$/i.test(Harness.IO.getEnvironmentVariable("NODE_ENV"))) { - Harness.IO.tryEnableSourceMapsForHost(); -} -(function (Harness) { - Harness.libFolder = "built/local/"; - var tcServicesFileName = ts.combinePaths(Harness.libFolder, Utils.getExecutionEnvironment() === 1 /* Browser */ ? "typescriptServicesInBrowserTest.js" : "typescriptServices.js"); - Harness.tcServicesFile = Harness.IO.readFile(tcServicesFileName) + (Utils.getExecutionEnvironment() !== 1 /* Browser */ - ? Harness.IO.newLine() + ("//# sourceURL=" + Harness.IO.resolvePath(tcServicesFileName)) - : ""); - // Settings - Harness.userSpecifiedRoot = ""; - Harness.lightMode = false; - /** Functionality for compiling TypeScript code */ - var Compiler; - (function (Compiler) { - /** Aggregate various writes into a single array of lines. Useful for passing to the - * TypeScript compiler to fill with source code or errors. - */ - var WriterAggregator = /** @class */ (function () { - function WriterAggregator() { - this.lines = []; - this.currentLine = undefined; - } - WriterAggregator.prototype.Write = function (str) { - // out of memory usage concerns avoid using + or += if we're going to do any manipulation of this string later - this.currentLine = [(this.currentLine || ""), str].join(""); - }; - WriterAggregator.prototype.WriteLine = function (str) { - // out of memory usage concerns avoid using + or += if we're going to do any manipulation of this string later - this.lines.push([(this.currentLine || ""), str].join("")); - this.currentLine = undefined; - }; - WriterAggregator.prototype.Close = function () { - if (this.currentLine !== undefined) { - this.lines.push(this.currentLine); - } - this.currentLine = undefined; - }; - WriterAggregator.prototype.reset = function () { - this.lines = []; - this.currentLine = undefined; - }; - return WriterAggregator; - }()); - Compiler.WriterAggregator = WriterAggregator; - function createSourceFileAndAssertInvariants(fileName, sourceText, languageVersion) { - // We'll only assert invariants outside of light mode. - var shouldAssertInvariants = !Harness.lightMode; - // Only set the parent nodes if we're asserting invariants. We don't need them otherwise. - var result = ts.createSourceFile(fileName, sourceText, languageVersion, /*setParentNodes:*/ shouldAssertInvariants); - if (shouldAssertInvariants) { - Utils.assertInvariants(result, /*parent:*/ undefined); - } - return result; - } - Compiler.createSourceFileAndAssertInvariants = createSourceFileAndAssertInvariants; - Compiler.defaultLibFileName = "lib.d.ts"; - Compiler.es2015DefaultLibFileName = "lib.es2015.d.ts"; - // Cache of lib files from "built/local" - var libFileNameSourceFileMap; - function getDefaultLibrarySourceFile(fileName) { - if (fileName === void 0) { fileName = Compiler.defaultLibFileName; } - var _a; - if (!isDefaultLibraryFile(fileName)) { - return undefined; - } - if (!libFileNameSourceFileMap) { - libFileNameSourceFileMap = ts.createMapFromTemplate((_a = {}, - _a[Compiler.defaultLibFileName] = createSourceFileAndAssertInvariants(Compiler.defaultLibFileName, Harness.IO.readFile(Harness.libFolder + "lib.es5.d.ts"), /*languageVersion*/ 6 /* Latest */), - _a)); - } - var sourceFile = libFileNameSourceFileMap.get(fileName); - if (!sourceFile) { - libFileNameSourceFileMap.set(fileName, sourceFile = createSourceFileAndAssertInvariants(fileName, Harness.IO.readFile(Harness.libFolder + fileName), 6 /* Latest */)); - } - return sourceFile; - } - Compiler.getDefaultLibrarySourceFile = getDefaultLibrarySourceFile; - function getDefaultLibFileName(options) { - switch (options.target) { - case 6 /* ESNext */: - case 4 /* ES2017 */: - return "lib.es2017.d.ts"; - case 3 /* ES2016 */: - return "lib.es2016.d.ts"; - case 2 /* ES2015 */: - return Compiler.es2015DefaultLibFileName; - default: - return Compiler.defaultLibFileName; - } - } - Compiler.getDefaultLibFileName = getDefaultLibFileName; - // Cache these between executions so we don't have to re-parse them for every test - Compiler.fourslashFileName = "fourslash.ts"; - function getCanonicalFileName(fileName) { - return fileName; - } - Compiler.getCanonicalFileName = getCanonicalFileName; - // Additional options not already in ts.optionDeclarations - var harnessOptionDeclarations = [ - { name: "allowNonTsExtensions", type: "boolean" }, - { name: "useCaseSensitiveFileNames", type: "boolean" }, - { name: "baselineFile", type: "string" }, - { name: "includeBuiltFile", type: "string" }, - { name: "fileName", type: "string" }, - { name: "libFiles", type: "string" }, - { name: "noErrorTruncation", type: "boolean" }, - { name: "suppressOutputPathCheck", type: "boolean" }, - { name: "noImplicitReferences", type: "boolean" }, - { name: "currentDirectory", type: "string" }, - { name: "symlink", type: "string" }, - // Emitted js baseline will print full paths for every output file - { name: "fullEmitPaths", type: "boolean" } - ]; - var optionsIndex; - function getCommandLineOption(name) { - if (!optionsIndex) { - optionsIndex = ts.createMap(); - var optionDeclarations = harnessOptionDeclarations.concat(ts.optionDeclarations); - for (var _i = 0, optionDeclarations_1 = optionDeclarations; _i < optionDeclarations_1.length; _i++) { - var option = optionDeclarations_1[_i]; - optionsIndex.set(option.name.toLowerCase(), option); - } - } - return optionsIndex.get(name.toLowerCase()); - } - function setCompilerOptionsFromHarnessSetting(settings, options) { - for (var name in settings) { - if (settings.hasOwnProperty(name)) { - var value = settings[name]; - if (value === undefined) { - throw new Error("Cannot have undefined value for compiler option '" + name + "'."); - } - var option = getCommandLineOption(name); - if (option) { - var errors = []; - options[option.name] = optionValue(option, value, errors); - if (errors.length > 0) { - throw new Error("Unknown value '" + value + "' for compiler option '" + name + "'."); - } - } - else { - throw new Error("Unknown compiler option '" + name + "'."); - } - } - } - } - Compiler.setCompilerOptionsFromHarnessSetting = setCompilerOptionsFromHarnessSetting; - function optionValue(option, value, errors) { - switch (option.type) { - case "boolean": - return value.toLowerCase() === "true"; - case "string": - return value; - case "number": { - var numverValue = parseInt(value, 10); - if (isNaN(numverValue)) { - throw new Error("Value must be a number, got: " + JSON.stringify(value)); - } - return numverValue; - } - // If not a primitive, the possible types are specified in what is effectively a map of options. - case "list": - return ts.parseListTypeOption(option, value, errors); - default: - return ts.parseCustomTypeOption(option, value, errors); - } - } - function compileFiles(inputFiles, otherFiles, harnessSettings, compilerOptions, - // Current directory is needed for rwcRunner to be able to use currentDirectory defined in json file - currentDirectory) { - var options = compilerOptions ? ts.cloneCompilerOptions(compilerOptions) : { noResolve: false }; - options.target = options.target || 0 /* ES3 */; - options.newLine = options.newLine || 0 /* CarriageReturnLineFeed */; - options.noErrorTruncation = true; - options.skipDefaultLibCheck = typeof options.skipDefaultLibCheck === "undefined" ? true : options.skipDefaultLibCheck; - if (typeof currentDirectory === "undefined") { - currentDirectory = vfs.srcFolder; - } - // Parse settings - if (harnessSettings) { - setCompilerOptionsFromHarnessSetting(harnessSettings, options); - } - if (options.rootDirs) { - options.rootDirs = ts.map(options.rootDirs, function (d) { return ts.getNormalizedAbsolutePath(d, currentDirectory); }); - } - var useCaseSensitiveFileNames = options.useCaseSensitiveFileNames !== undefined ? options.useCaseSensitiveFileNames : true; - var programFileNames = inputFiles.map(function (file) { return file.unitName; }).filter(function (fileName) { return !ts.fileExtensionIs(fileName, ".json" /* Json */); }); - // Files from built\local that are requested by test "@includeBuiltFiles" to be in the context. - // Treat them as library files, so include them in build, but not in baselines. - if (options.includeBuiltFile) { - programFileNames.push(vpath.combine(vfs.builtFolder, options.includeBuiltFile)); - } - // Files from tests\lib that are requested by "@libFiles" - if (options.libFiles) { - for (var _i = 0, _a = options.libFiles.split(","); _i < _a.length; _i++) { - var fileName = _a[_i]; - programFileNames.push(vpath.combine(vfs.testLibFolder, fileName)); - } - } - var docs = inputFiles.concat(otherFiles).map(documents.TextDocument.fromTestFile); - var fs = vfs.createFromFileSystem(Harness.IO, !useCaseSensitiveFileNames, { documents: docs, cwd: currentDirectory }); - var host = new fakes.CompilerHost(fs, options); - return compiler.compileFiles(host, programFileNames, options); - } - Compiler.compileFiles = compileFiles; - function prepareDeclarationCompilationContext(inputFiles, otherFiles, result, harnessSettings, options, - // Current directory is needed for rwcRunner to be able to use currentDirectory defined in json file - currentDirectory) { - if (options.declaration && result.diagnostics.length === 0) { - if (options.emitDeclarationOnly) { - if (result.js.size > 0 || result.dts.size === 0) { - throw new Error("Only declaration files should be generated when emitDeclarationOnly:true"); - } - } - else if (result.dts.size !== result.getNumberOfJsFiles()) { - throw new Error("There were no errors and declFiles generated did not match number of js files generated"); - } - } - var declInputFiles = []; - var declOtherFiles = []; - // if the .d.ts is non-empty, confirm it compiles correctly as well - if (options.declaration && result.diagnostics.length === 0 && result.dts.size > 0) { - ts.forEach(inputFiles, function (file) { return addDtsFile(file, declInputFiles); }); - ts.forEach(otherFiles, function (file) { return addDtsFile(file, declOtherFiles); }); - return { declInputFiles: declInputFiles, declOtherFiles: declOtherFiles, harnessSettings: harnessSettings, options: options, currentDirectory: currentDirectory || harnessSettings.currentDirectory }; - } - function addDtsFile(file, dtsFiles) { - if (vpath.isDeclaration(file.unitName)) { - dtsFiles.push(file); - } - else if (vpath.isTypeScript(file.unitName)) { - var declFile = findResultCodeFile(file.unitName); - if (declFile && !findUnit(declFile.file, declInputFiles) && !findUnit(declFile.file, declOtherFiles)) { - dtsFiles.push({ unitName: declFile.file, content: utils.removeByteOrderMark(declFile.text) }); - } - } - } - function findResultCodeFile(fileName) { - var sourceFile = result.program.getSourceFile(fileName); - assert(sourceFile, "Program has no source file with name '" + fileName + "'"); - // Is this file going to be emitted separately - var sourceFileName; - var outFile = options.outFile || options.out; - if (!outFile) { - if (options.outDir) { - var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, result.vfs.cwd()); - sourceFilePath = sourceFilePath.replace(result.program.getCommonSourceDirectory(), ""); - sourceFileName = ts.combinePaths(options.outDir, sourceFilePath); - } - else { - sourceFileName = sourceFile.fileName; - } - } - else { - // Goes to single --out file - sourceFileName = outFile; - } - var dTsFileName = ts.removeFileExtension(sourceFileName) + ".d.ts" /* Dts */; - return result.dts.get(dTsFileName); - } - function findUnit(fileName, units) { - return ts.forEach(units, function (unit) { return unit.unitName === fileName ? unit : undefined; }); - } - } - Compiler.prepareDeclarationCompilationContext = prepareDeclarationCompilationContext; - function compileDeclarationFiles(context) { - if (!context) { - return; - } - var declInputFiles = context.declInputFiles, declOtherFiles = context.declOtherFiles, harnessSettings = context.harnessSettings, options = context.options, currentDirectory = context.currentDirectory; - var output = compileFiles(declInputFiles, declOtherFiles, harnessSettings, options, currentDirectory); - return { declInputFiles: declInputFiles, declOtherFiles: declOtherFiles, declResult: output }; - } - Compiler.compileDeclarationFiles = compileDeclarationFiles; - function minimalDiagnosticsToString(diagnostics, pretty) { - var host = { getCanonicalFileName: getCanonicalFileName, getCurrentDirectory: function () { return ""; }, getNewLine: function () { return Harness.IO.newLine(); } }; - return (pretty ? ts.formatDiagnosticsWithColorAndContext : ts.formatDiagnostics)(diagnostics, host); - } - Compiler.minimalDiagnosticsToString = minimalDiagnosticsToString; - function getErrorBaseline(inputFiles, diagnostics, pretty) { - var _a; - var outputLines = ""; - var gen = iterateErrorBaseline(inputFiles, diagnostics, { pretty: pretty }); - for (var _b = gen.next(), done = _b.done, value = _b.value; !done; _a = gen.next(), done = _a.done, value = _a.value, _a) { - var content = value[1]; - outputLines += content; - } - return outputLines; - } - Compiler.getErrorBaseline = getErrorBaseline; - Compiler.diagnosticSummaryMarker = "__diagnosticSummary"; - Compiler.globalErrorsMarker = "__globalErrors"; - function iterateErrorBaseline(inputFiles, diagnostics, options) { - function newLine() { - if (firstLine) { - firstLine = false; - return ""; - } - return "\r\n"; - } - function outputErrorText(error) { - var message = ts.flattenDiagnosticMessageText(error.messageText, Harness.IO.newLine()); - var errLines = utils.removeTestPathPrefixes(message) - .split("\n") - .map(function (s) { return s.length > 0 && s.charAt(s.length - 1) === "\r" ? s.substr(0, s.length - 1) : s; }) - .filter(function (s) { return s.length > 0; }) - .map(function (s) { return "!!! " + ts.diagnosticCategoryName(error) + " TS" + error.code + ": " + s; }); - errLines.forEach(function (e) { return outputLines += (newLine() + e); }); - errorsReported++; - // do not count errors from lib.d.ts here, they are computed separately as numLibraryDiagnostics - // if lib.d.ts is explicitly included in input files and there are some errors in it (i.e. because of duplicate identifiers) - // then they will be added twice thus triggering 'total errors' assertion with condition - // 'totalErrorsReportedInNonLibraryFiles + numLibraryDiagnostics + numTest262HarnessDiagnostics, diagnostics.length - if (!error.file || !isDefaultLibraryFile(error.file.fileName)) { - totalErrorsReportedInNonLibraryFiles++; - } - } - var outputLines, totalErrorsReportedInNonLibraryFiles, errorsReported, firstLine, globalErrors, dupeCase, _loop_1, _i, _a, inputFile, numLibraryDiagnostics, numTest262HarnessDiagnostics; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - diagnostics = ts.sort(diagnostics, ts.compareDiagnostics); - outputLines = ""; - totalErrorsReportedInNonLibraryFiles = 0; - errorsReported = 0; - firstLine = true; - return [4 /*yield*/, [Compiler.diagnosticSummaryMarker, utils.removeTestPathPrefixes(minimalDiagnosticsToString(diagnostics, options && options.pretty)) + Harness.IO.newLine() + Harness.IO.newLine(), diagnostics.length]]; - case 1: - _b.sent(); - globalErrors = diagnostics.filter(function (err) { return !err.file; }); - globalErrors.forEach(outputErrorText); - return [4 /*yield*/, [Compiler.globalErrorsMarker, outputLines, errorsReported]]; - case 2: - _b.sent(); - outputLines = ""; - errorsReported = 0; - dupeCase = ts.createMap(); - _loop_1 = function (inputFile) { - var fileErrors, markedErrorCount, lineStarts, lines, isDupe; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - fileErrors = diagnostics.filter(function (e) { - var errFn = e.file; - return !!errFn && ts.comparePaths(utils.removeTestPathPrefixes(errFn.fileName), utils.removeTestPathPrefixes(inputFile.unitName), options && options.currentDirectory || "", !(options && options.caseSensitive)) === 0 /* EqualTo */; - }); - // Header - outputLines += (newLine() + "==== " + inputFile.unitName + " (" + fileErrors.length + " errors) ===="); - markedErrorCount = 0; - lineStarts = ts.computeLineStarts(inputFile.content); - lines = inputFile.content.split("\n"); - if (lines.length === 1) { - lines = lines[0].split("\r"); - } - lines.forEach(function (line, lineIndex) { - if (line.length > 0 && line.charAt(line.length - 1) === "\r") { - line = line.substr(0, line.length - 1); - } - var thisLineStart = lineStarts[lineIndex]; - var nextLineStart; - // On the last line of the file, fake the next line start number so that we handle errors on the last character of the file correctly - if (lineIndex === lines.length - 1) { - nextLineStart = inputFile.content.length; - } - else { - nextLineStart = lineStarts[lineIndex + 1]; - } - // Emit this line from the original file - outputLines += (newLine() + " " + line); - fileErrors.forEach(function (errDiagnostic) { - var err = errDiagnostic; // TODO: GH#18217 - // Does any error start or continue on to this line? Emit squiggles - var end = ts.textSpanEnd(err); - if ((end >= thisLineStart) && ((err.start < nextLineStart) || (lineIndex === lines.length - 1))) { - // How many characters from the start of this line the error starts at (could be positive or negative) - var relativeOffset = err.start - thisLineStart; - // How many characters of the error are on this line (might be longer than this line in reality) - var length = (end - err.start) - Math.max(0, thisLineStart - err.start); - // Calculate the start of the squiggle - var squiggleStart = Math.max(0, relativeOffset); - // TODO/REVIEW: this doesn't work quite right in the browser if a multi file test has files whose names are just the right length relative to one another - outputLines += (newLine() + " " + line.substr(0, squiggleStart).replace(/[^\s]/g, " ") + new Array(Math.min(length, line.length - squiggleStart) + 1).join("~")); - // If the error ended here, or we're at the end of the file, emit its message - if ((lineIndex === lines.length - 1) || nextLineStart > end) { - // Just like above, we need to do a split on a string instead of on a regex - // because the JS engine does regexes wrong - outputErrorText(errDiagnostic); - markedErrorCount++; - } - } - }); - }); - // Verify we didn't miss any errors in this file - assert.equal(markedErrorCount, fileErrors.length, "count of errors in " + inputFile.unitName); - isDupe = dupeCase.has(sanitizeTestFilePath(inputFile.unitName)); - return [4 /*yield*/, [checkDuplicatedFileName(inputFile.unitName, dupeCase), outputLines, errorsReported]]; - case 1: - _a.sent(); - if (isDupe && !(options && options.caseSensitive)) { - // Case-duplicated files on a case-insensitive build will have errors reported in both the dupe and the original - // thanks to the canse-insensitive path comparison on the error file path - We only want to count those errors once - // for the assert below, so we subtract them here. - totalErrorsReportedInNonLibraryFiles -= errorsReported; - } - outputLines = ""; - errorsReported = 0; - return [2 /*return*/]; - } - }); - }; - _i = 0, _a = inputFiles.filter(function (f) { return f.content !== undefined; }); - _b.label = 3; - case 3: - if (!(_i < _a.length)) return [3 /*break*/, 6]; - inputFile = _a[_i]; - return [5 /*yield**/, _loop_1(inputFile)]; - case 4: - _b.sent(); - _b.label = 5; - case 5: - _i++; - return [3 /*break*/, 3]; - case 6: - numLibraryDiagnostics = ts.countWhere(diagnostics, function (diagnostic) { - return !!diagnostic.file && (isDefaultLibraryFile(diagnostic.file.fileName) || isBuiltFile(diagnostic.file.fileName)); - }); - numTest262HarnessDiagnostics = ts.countWhere(diagnostics, function (diagnostic) { - // Count an error generated from tests262-harness folder.This should only apply for test262 - return !!diagnostic.file && diagnostic.file.fileName.indexOf("test262-harness") >= 0; - }); - // Verify we didn't miss any errors in total - assert.equal(totalErrorsReportedInNonLibraryFiles + numLibraryDiagnostics + numTest262HarnessDiagnostics, diagnostics.length, "total number of errors"); - return [2 /*return*/]; - } - }); - } - Compiler.iterateErrorBaseline = iterateErrorBaseline; - function doErrorBaseline(baselinePath, inputFiles, errors, pretty) { - Baseline.runBaseline(baselinePath.replace(/\.tsx?$/, ".errors.txt"), function () { - if (!errors || (errors.length === 0)) { - /* tslint:disable:no-null-keyword */ - return null; - /* tslint:enable:no-null-keyword */ - } - return getErrorBaseline(inputFiles, errors, pretty); - }); - } - Compiler.doErrorBaseline = doErrorBaseline; - function doTypeAndSymbolBaseline(baselinePath, program, allFiles, opts, multifile, skipTypeBaselines, skipSymbolBaselines) { - // The full walker simulates the types that you would get from doing a full - // compile. The pull walker simulates the types you get when you just do - // a type query for a random node (like how the LS would do it). Most of the - // time, these will be the same. However, occasionally, they can be different. - // Specifically, when the compiler internally depends on symbol IDs to order - // things, then we may see different results because symbols can be created in a - // different order with 'pull' operations, and thus can produce slightly differing - // output. - // - // For example, with a full type check, we may see a type displayed as: number | string - // But with a pull type check, we may see it as: string | number - // - // These types are equivalent, but depend on what order the compiler observed - // certain parts of the program. - var fullWalker = new TypeWriterWalker(program, /*fullTypeCheck*/ true); - // Produce baselines. The first gives the types for all expressions. - // The second gives symbols for all identifiers. - var typesError, symbolsError; - try { - checkBaseLines(/*isSymbolBaseLine*/ false); - } - catch (e) { - typesError = e; - } - try { - checkBaseLines(/*isSymbolBaseLine*/ true); - } - catch (e) { - symbolsError = e; - } - if (typesError && symbolsError) { - throw new Error(typesError.stack + Harness.IO.newLine() + symbolsError.stack); - } - if (typesError) { - throw typesError; - } - if (symbolsError) { - throw symbolsError; - } - return; - function checkBaseLines(isSymbolBaseLine) { - var fullExtension = isSymbolBaseLine ? ".symbols" : ".types"; - // When calling this function from rwc-runner, the baselinePath will have no extension. - // As rwc test- file is stored in json which ".json" will get stripped off. - // When calling this function from compiler-runner, the baselinePath will then has either ".ts" or ".tsx" extension - var outputFileName = ts.endsWith(baselinePath, ".ts" /* Ts */) || ts.endsWith(baselinePath, ".tsx" /* Tsx */) ? - baselinePath.replace(/\.tsx?/, "") : baselinePath; - if (!multifile) { - var fullBaseLine_1 = generateBaseLine(isSymbolBaseLine, isSymbolBaseLine ? skipSymbolBaselines : skipTypeBaselines); - Baseline.runBaseline(outputFileName + fullExtension, function () { return fullBaseLine_1; }, opts); - } - else { - Baseline.runMultifileBaseline(outputFileName, fullExtension, function () { - return iterateBaseLine(isSymbolBaseLine, isSymbolBaseLine ? skipSymbolBaselines : skipTypeBaselines); - }, opts); - } - } - function generateBaseLine(isSymbolBaseline, skipBaseline) { - var _a; - var result = ""; - var gen = iterateBaseLine(isSymbolBaseline, skipBaseline); - for (var _b = gen.next(), done = _b.done, value = _b.value; !done; _a = gen.next(), done = _a.done, value = _a.value, _a) { - var content = value[1]; - result += content; - } - /* tslint:disable:no-null-keyword */ - return result || null; - /* tslint:enable:no-null-keyword */ - } - function iterateBaseLine(isSymbolBaseline, skipBaseline) { - var _a, dupeCase, _i, allFiles_1, file, unitName, typeLines, codeLines, gen, lastIndexWritten, _b, done, result, typeOrSymbolString, formattedLine, _c, codeLines_1, codeLine; - return __generator(this, function (_d) { - switch (_d.label) { - case 0: - if (skipBaseline) { - return [2 /*return*/]; - } - dupeCase = ts.createMap(); - _i = 0, allFiles_1 = allFiles; - _d.label = 1; - case 1: - if (!(_i < allFiles_1.length)) return [3 /*break*/, 4]; - file = allFiles_1[_i]; - unitName = file.unitName; - typeLines = "=== " + unitName + " ===\r\n"; - codeLines = ts.flatMap(file.content.split(/\r?\n/g), function (e) { return e.split(/[\r\u2028\u2029]/g); }); - gen = isSymbolBaseline ? fullWalker.getSymbols(unitName) : fullWalker.getTypes(unitName); - lastIndexWritten = void 0; - for (_b = gen.next(), done = _b.done, result = _b.value; !done; _a = gen.next(), done = _a.done, result = _a.value, _a) { - if (isSymbolBaseline && !result.symbol) { - return [2 /*return*/]; - } - if (lastIndexWritten === undefined) { - typeLines += codeLines.slice(0, result.line + 1).join("\r\n") + "\r\n"; - } - else if (result.line !== lastIndexWritten) { - if (!((lastIndexWritten + 1 < codeLines.length) && (codeLines[lastIndexWritten + 1].match(/^\s*[{|}]\s*$/) || codeLines[lastIndexWritten + 1].trim() === ""))) { - typeLines += "\r\n"; - } - typeLines += codeLines.slice(lastIndexWritten + 1, result.line + 1).join("\r\n") + "\r\n"; - } - lastIndexWritten = result.line; - typeOrSymbolString = isSymbolBaseline ? result.symbol : result.type; - formattedLine = result.sourceText.replace(/\r?\n/g, "") + " : " + typeOrSymbolString; - typeLines += ">" + formattedLine + "\r\n"; - } - // Preserve legacy behavior - if (lastIndexWritten === undefined) { - for (_c = 0, codeLines_1 = codeLines; _c < codeLines_1.length; _c++) { - codeLine = codeLines_1[_c]; - typeLines += codeLine + "\r\nNo type information for this code."; - } - } - else { - if (lastIndexWritten + 1 < codeLines.length) { - if (!((lastIndexWritten + 1 < codeLines.length) && (codeLines[lastIndexWritten + 1].match(/^\s*[{|}]\s*$/) || codeLines[lastIndexWritten + 1].trim() === ""))) { - typeLines += "\r\n"; - } - typeLines += codeLines.slice(lastIndexWritten + 1).join("\r\n"); - } - typeLines += "\r\n"; - } - return [4 /*yield*/, [checkDuplicatedFileName(unitName, dupeCase), utils.removeTestPathPrefixes(typeLines)]]; - case 2: - _d.sent(); - _d.label = 3; - case 3: - _i++; - return [3 /*break*/, 1]; - case 4: return [2 /*return*/]; - } - }); - } - } - Compiler.doTypeAndSymbolBaseline = doTypeAndSymbolBaseline; - function doSourcemapBaseline(baselinePath, options, result, harnessSettings) { - var declMaps = ts.getAreDeclarationMapsEnabled(options); - if (options.inlineSourceMap) { - if (result.maps.size > 0 && !declMaps) { - throw new Error("No sourcemap files should be generated if inlineSourceMaps was set."); - } - return; - } - else if (options.sourceMap || declMaps) { - if (result.maps.size !== (result.getNumberOfJsFiles() * (declMaps && options.sourceMap ? 2 : 1))) { - throw new Error("Number of sourcemap files should be same as js files."); - } - Baseline.runBaseline(baselinePath.replace(/\.tsx?/, ".js.map"), function () { - if ((options.noEmitOnError && result.diagnostics.length !== 0) || result.maps.size === 0) { - // We need to return null here or the runBaseLine will actually create a empty file. - // Baselining isn't required here because there is no output. - /* tslint:disable:no-null-keyword */ - return null; - /* tslint:enable:no-null-keyword */ - } - var sourceMapCode = ""; - result.maps.forEach(function (sourceMap) { - sourceMapCode += fileOutput(sourceMap, harnessSettings); - }); - return sourceMapCode; - }); - } - } - Compiler.doSourcemapBaseline = doSourcemapBaseline; - function doJsEmitBaseline(baselinePath, header, options, result, tsConfigFiles, toBeCompiled, otherFiles, harnessSettings) { - if (!options.noEmit && !options.emitDeclarationOnly && result.js.size === 0 && result.diagnostics.length === 0) { - throw new Error("Expected at least one js file to be emitted or at least one error to be created."); - } - // check js output - Baseline.runBaseline(baselinePath.replace(/\.tsx?/, ".js" /* Js */), function () { - var tsCode = ""; - var tsSources = otherFiles.concat(toBeCompiled); - if (tsSources.length > 1) { - tsCode += "//// [" + header + "] ////\r\n\r\n"; - } - for (var i = 0; i < tsSources.length; i++) { - tsCode += "//// [" + ts.getBaseFileName(tsSources[i].unitName) + "]\r\n"; - tsCode += tsSources[i].content + (i < (tsSources.length - 1) ? "\r\n" : ""); - } - var jsCode = ""; - result.js.forEach(function (file) { - jsCode += fileOutput(file, harnessSettings); - }); - if (result.dts.size > 0) { - jsCode += "\r\n\r\n"; - result.dts.forEach(function (declFile) { - jsCode += fileOutput(declFile, harnessSettings); - }); - } - var declFileContext = prepareDeclarationCompilationContext(toBeCompiled, otherFiles, result, harnessSettings, options, /*currentDirectory*/ undefined); - var declFileCompilationResult = compileDeclarationFiles(declFileContext); - if (declFileCompilationResult && declFileCompilationResult.declResult.diagnostics.length) { - jsCode += "\r\n\r\n//// [DtsFileErrors]\r\n"; - jsCode += "\r\n\r\n"; - jsCode += getErrorBaseline(tsConfigFiles.concat(declFileCompilationResult.declInputFiles, declFileCompilationResult.declOtherFiles), declFileCompilationResult.declResult.diagnostics); - } - if (jsCode.length > 0) { - return tsCode + "\r\n\r\n" + jsCode; - } - else { - /* tslint:disable:no-null-keyword */ - return null; - /* tslint:enable:no-null-keyword */ - } - }); - } - Compiler.doJsEmitBaseline = doJsEmitBaseline; - function fileOutput(file, harnessSettings) { - var fileName = harnessSettings.fullEmitPaths ? utils.removeTestPathPrefixes(file.file) : ts.getBaseFileName(file.file); - return "//// [" + fileName + "]\r\n" + utils.removeTestPathPrefixes(file.text); - } - function collateOutputs(outputFiles) { - var _a; - var gen = iterateOutputs(outputFiles); - // Emit them - var result = ""; - for (var _b = gen.next(), done = _b.done, value = _b.value; !done; _a = gen.next(), done = _a.done, value = _a.value, _a) { - // Some extra spacing if this isn't the first file - if (result.length) { - result += "\r\n\r\n"; - } - // FileName header + content - var content = value[1]; - result += content; - } - return result; - } - Compiler.collateOutputs = collateOutputs; - function iterateOutputs(outputFiles) { - function cleanName(fn) { - var lastSlash = ts.normalizeSlashes(fn).lastIndexOf("/"); - return fn.substr(lastSlash + 1).toLowerCase(); - } - var files, dupeCase, _i, files_1, outputFile; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - files = Array.from(outputFiles); - files.slice().sort(function (a, b) { return ts.compareStringsCaseSensitive(cleanName(a.file), cleanName(b.file)); }); - dupeCase = ts.createMap(); - _i = 0, files_1 = files; - _a.label = 1; - case 1: - if (!(_i < files_1.length)) return [3 /*break*/, 4]; - outputFile = files_1[_i]; - return [4 /*yield*/, [checkDuplicatedFileName(outputFile.file, dupeCase), "/*====== " + outputFile.file + " ======*/\r\n" + utils.removeByteOrderMark(outputFile.text)]]; - case 2: - _a.sent(); - _a.label = 3; - case 3: - _i++; - return [3 /*break*/, 1]; - case 4: return [2 /*return*/]; - } - }); - } - Compiler.iterateOutputs = iterateOutputs; - function checkDuplicatedFileName(resultName, dupeCase) { - resultName = sanitizeTestFilePath(resultName); - if (dupeCase.has(resultName)) { - // A different baseline filename should be manufactured if the names differ only in case, for windows compat - var count = 1 + dupeCase.get(resultName); - dupeCase.set(resultName, count); - resultName = resultName + ".dupe" + count; - } - else { - dupeCase.set(resultName, 0); - } - return resultName; - } - function sanitizeTestFilePath(name) { - var path = ts.toPath(ts.normalizeSlashes(name.replace(/[\^<>:"|?*%]/g, "_")).replace(/\.\.\//g, "__dotdot/"), "", Utils.canonicalizeForHarness); - if (ts.startsWith(path, "/")) { - return path.substring(1); - } - return path; - } - Compiler.sanitizeTestFilePath = sanitizeTestFilePath; - })(Compiler = Harness.Compiler || (Harness.Compiler = {})); - function splitVaryBySettingValue(text) { - if (!text) - return undefined; - var entries = text.split(/,/).map(function (s) { return s.trim().toLowerCase(); }).filter(function (s) { return s.length > 0; }); - return entries && entries.length > 1 ? entries : undefined; - } - function computeFileBasedTestConfigurationVariations(configurations, variationState, varyByEntries, offset) { - if (offset >= varyByEntries.length) { - // make a copy of the current variation state - configurations.push(__assign({}, variationState)); - return; - } - var _a = varyByEntries[offset], varyBy = _a[0], entries = _a[1]; - for (var _i = 0, entries_2 = entries; _i < entries_2.length; _i++) { - var entry = entries_2[_i]; - // set or overwrite the variation, then compute the next variation - variationState[varyBy] = entry; - computeFileBasedTestConfigurationVariations(configurations, variationState, varyByEntries, offset + 1); - } - } - /** - * Compute FileBasedTestConfiguration variations based on a supplied list of variable settings. - */ - function getFileBasedTestConfigurations(settings, varyBy) { - var varyByEntries; - for (var _i = 0, varyBy_1 = varyBy; _i < varyBy_1.length; _i++) { - var varyByKey = varyBy_1[_i]; - if (ts.hasProperty(settings, varyByKey)) { - // we only consider variations when there are 2 or more variable entries. - var entries = splitVaryBySettingValue(settings[varyByKey]); - if (entries) { - if (!varyByEntries) - varyByEntries = []; - varyByEntries.push([varyByKey, entries]); - } - } - } - if (!varyByEntries) - return undefined; - var configurations = []; - computeFileBasedTestConfigurationVariations(configurations, /*variationState*/ {}, varyByEntries, /*offset*/ 0); - return configurations; - } - Harness.getFileBasedTestConfigurations = getFileBasedTestConfigurations; - /** - * Compute a description for this configuration based on its entries - */ - function getFileBasedTestConfigurationDescription(configuration) { - var name = ""; - if (configuration) { - var keys = Object.keys(configuration).sort(); - for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { - var key = keys_1[_i]; - if (name) - name += ", "; - name += "@" + key + ": " + configuration[key]; - } - } - return name; - } - Harness.getFileBasedTestConfigurationDescription = getFileBasedTestConfigurationDescription; - var TestCaseParser; - (function (TestCaseParser) { - // Regex for parsing options in the format "@Alpha: Value of any sort" - var optionRegex = /^[\/]{2}\s*@(\w+)\s*:\s*([^\r\n]*)/gm; // multiple matches on multiple lines - function extractCompilerSettings(content) { - var opts = {}; - var match; - /* tslint:disable:no-null-keyword */ - while ((match = optionRegex.exec(content)) !== null) { - /* tslint:enable:no-null-keyword */ - opts[match[1]] = match[2].trim(); - } - return opts; - } - TestCaseParser.extractCompilerSettings = extractCompilerSettings; - /** Given a test file containing // @FileName directives, return an array of named units of code to be added to an existing compiler instance */ - function makeUnitsFromTest(code, fileName, rootDir, settings) { - if (settings === void 0) { settings = extractCompilerSettings(code); } - // List of all the subfiles we've parsed out - var testUnitData = []; - var lines = Utils.splitContentByNewlines(code); - // Stuff related to the subfile we're parsing - var currentFileContent; - var currentFileOptions = {}; - var currentFileName; - var refs = []; - for (var _i = 0, lines_3 = lines; _i < lines_3.length; _i++) { - var line = lines_3[_i]; - var testMetaData = optionRegex.exec(line); - if (testMetaData) { - // Comment line, check for global/file @options and record them - optionRegex.lastIndex = 0; - var metaDataName = testMetaData[1].toLowerCase(); - currentFileOptions[testMetaData[1]] = testMetaData[2].trim(); - if (metaDataName !== "filename") { - continue; - } - // New metadata statement after having collected some code to go with the previous metadata - if (currentFileName) { - // Store result file - var newTestFile = { - content: currentFileContent, - name: currentFileName, - fileOptions: currentFileOptions, - originalFilePath: fileName, - references: refs - }; - testUnitData.push(newTestFile); - // Reset local data - currentFileContent = undefined; - currentFileOptions = {}; - currentFileName = testMetaData[2].trim(); - refs = []; - } - else { - // First metadata marker in the file - currentFileName = testMetaData[2].trim(); - } - } - else { - // Subfile content line - // Append to the current subfile content, inserting a newline needed - if (currentFileContent === undefined) { - currentFileContent = ""; - } - else if (currentFileContent !== "") { - // End-of-line - currentFileContent = currentFileContent + "\n"; - } - currentFileContent = currentFileContent + line; - } - } - // normalize the fileName for the single file case - currentFileName = testUnitData.length > 0 || currentFileName ? currentFileName : ts.getBaseFileName(fileName); - // EOF, push whatever remains - var newTestFile2 = { - content: currentFileContent || "", - name: currentFileName, - fileOptions: currentFileOptions, - originalFilePath: fileName, - references: refs - }; - testUnitData.push(newTestFile2); - // unit tests always list files explicitly - var parseConfigHost = { - useCaseSensitiveFileNames: false, - readDirectory: function () { return []; }, - fileExists: function () { return true; }, - readFile: function (name) { return ts.forEach(testUnitData, function (data) { return data.name.toLowerCase() === name.toLowerCase() ? data.content : undefined; }); } - }; - // check if project has tsconfig.json in the list of files - var tsConfig; - var tsConfigFileUnitData; - for (var i = 0; i < testUnitData.length; i++) { - var data = testUnitData[i]; - if (getConfigNameFromFileName(data.name)) { - var configJson = ts.parseJsonText(data.name, data.content); - assert.isTrue(configJson.endOfFileToken !== undefined); - var baseDir = ts.normalizePath(ts.getDirectoryPath(data.name)); - if (rootDir) { - baseDir = ts.getNormalizedAbsolutePath(baseDir, rootDir); - } - tsConfig = ts.parseJsonSourceFileConfigFileContent(configJson, parseConfigHost, baseDir); - tsConfig.options.configFilePath = data.name; - tsConfigFileUnitData = data; - // delete entry from the list - ts.orderedRemoveItemAt(testUnitData, i); - break; - } - } - return { settings: settings, testUnitData: testUnitData, tsConfig: tsConfig, tsConfigFileUnitData: tsConfigFileUnitData }; - } - TestCaseParser.makeUnitsFromTest = makeUnitsFromTest; - })(TestCaseParser = Harness.TestCaseParser || (Harness.TestCaseParser = {})); - /** Support class for baseline files */ - var Baseline; - (function (Baseline) { - var noContent = ""; - function localPath(fileName, baselineFolder, subfolder) { - if (baselineFolder === undefined) { - return baselinePath(fileName, "local", "tests/baselines", subfolder); - } - else { - return baselinePath(fileName, "local", baselineFolder, subfolder); - } - } - Baseline.localPath = localPath; - function referencePath(fileName, baselineFolder, subfolder) { - if (baselineFolder === undefined) { - return baselinePath(fileName, "reference", "tests/baselines", subfolder); - } - else { - return baselinePath(fileName, "reference", baselineFolder, subfolder); - } - } - function baselinePath(fileName, type, baselineFolder, subfolder) { - if (subfolder !== undefined) { - return Harness.userSpecifiedRoot + baselineFolder + "/" + subfolder + "/" + type + "/" + fileName; - } - else { - return Harness.userSpecifiedRoot + baselineFolder + "/" + type + "/" + fileName; - } - } - var fileCache = {}; - function generateActual(generateContent) { - var actual = generateContent(); - if (actual === undefined) { - throw new Error("The generated content was \"undefined\". Return \"null\" if no baselining is required.\""); - } - return actual; - } - function compareToBaseline(actual, relativeFileName, opts) { - // actual is now either undefined (the generator had an error), null (no file requested), - // or some real output of the function - if (actual === undefined) { - // Nothing to do - return undefined; // TODO: GH#18217 - } - var refFileName = referencePath(relativeFileName, opts && opts.Baselinefolder, opts && opts.Subfolder); - /* tslint:disable:no-null-keyword */ - if (actual === null) { - /* tslint:enable:no-null-keyword */ - actual = noContent; - } - var expected = ""; - if (Harness.IO.fileExists(refFileName)) { - expected = Harness.IO.readFile(refFileName); // TODO: GH#18217 - } - return { expected: expected, actual: actual }; - } - function writeComparison(expected, actual, relativeFileName, actualFileName) { - // For now this is written using TypeScript, because sys is not available when running old test cases. - // But we need to move to sys once we have - // Creates the directory including its parent if not already present - function createDirectoryStructure(dirName) { - if (fileCache[dirName] || Harness.IO.directoryExists(dirName)) { - fileCache[dirName] = true; - return; - } - var parentDirectory = Harness.IO.directoryName(dirName); // TODO: GH#18217 - if (parentDirectory !== "" && parentDirectory !== dirName) { - createDirectoryStructure(parentDirectory); - } - Harness.IO.createDirectory(dirName); - fileCache[dirName] = true; - } - // Create folders if needed - createDirectoryStructure(Harness.IO.directoryName(actualFileName)); // TODO: GH#18217 - // Delete the actual file in case it fails - if (Harness.IO.fileExists(actualFileName)) { - Harness.IO.deleteFile(actualFileName); - } - var encodedActual = Utils.encodeString(actual); - if (expected !== encodedActual) { - if (actual === noContent) { - Harness.IO.writeFile(actualFileName + ".delete", ""); - } - else { - Harness.IO.writeFile(actualFileName, encodedActual); - } - throw new Error("The baseline file " + relativeFileName + " has changed."); - } - } - function runBaseline(relativeFileName, generateContent, opts) { - var actualFileName = localPath(relativeFileName, opts && opts.Baselinefolder, opts && opts.Subfolder); - var actual = generateActual(generateContent); - var comparison = compareToBaseline(actual, relativeFileName, opts); - writeComparison(comparison.expected, comparison.actual, relativeFileName, actualFileName); - } - Baseline.runBaseline = runBaseline; - function runMultifileBaseline(relativeFileBase, extension, generateContent, opts, referencedExtensions) { - var _a; - var gen = generateContent(); - var writtenFiles = ts.createMap(); - var errors = []; - // tslint:disable-next-line:no-null-keyword - if (gen !== null) { - for (var _b = gen.next(), done = _b.done, value = _b.value; !done; _a = gen.next(), done = _a.done, value = _a.value, _a) { - var _c = value, name = _c[0], content = _c[1], count = _c[2]; - if (count === 0) - continue; // Allow error reporter to skip writing files without errors - var relativeFileName = relativeFileBase + "/" + name + extension; - var actualFileName = localPath(relativeFileName, opts && opts.Baselinefolder, opts && opts.Subfolder); - var comparison = compareToBaseline(content, relativeFileName, opts); - try { - writeComparison(comparison.expected, comparison.actual, relativeFileName, actualFileName); - } - catch (e) { - errors.push(e); - } - writtenFiles.set(relativeFileName, true); - } - } - var referenceDir = referencePath(relativeFileBase, opts && opts.Baselinefolder, opts && opts.Subfolder); - var existing = Harness.IO.readDirectory(referenceDir, referencedExtensions || [extension]); - if (extension === ".ts" || referencedExtensions && referencedExtensions.indexOf(".ts") > -1 && referencedExtensions.indexOf(".d.ts") === -1) { - // special-case and filter .d.ts out of .ts results - existing = existing.filter(function (f) { return !ts.endsWith(f, ".d.ts"); }); - } - var missing = []; - for (var _i = 0, existing_1 = existing; _i < existing_1.length; _i++) { - var name = existing_1[_i]; - var localCopy = name.substring(referenceDir.length - relativeFileBase.length); - if (!writtenFiles.has(localCopy)) { - missing.push(localCopy); - } - } - if (missing.length) { - for (var _d = 0, missing_1 = missing; _d < missing_1.length; _d++) { - var file = missing_1[_d]; - Harness.IO.writeFile(localPath(file + ".delete", opts && opts.Baselinefolder, opts && opts.Subfolder), ""); - } - } - if (errors.length || missing.length) { - var errorMsg = ""; - if (errors.length) { - errorMsg += "The baseline for " + relativeFileBase + " in " + errors.length + " files has changed:" + ("\n " + errors.slice(0, 5).map(function (e) { return e.message; }).join("\n ") + (errors.length > 5 ? "\n" + (" and " + (errors.length - 5) + " more") : "")); - } - if (errors.length && missing.length) { - errorMsg += "\n"; - } - if (missing.length) { - var writtenFilesArray = ts.arrayFrom(writtenFiles.keys()); - errorMsg += "Baseline missing " + missing.length + " files:" + ("\n " + missing.slice(0, 5).join("\n ") + (missing.length > 5 ? "\n" + (" and " + (missing.length - 5) + " more") : "") + "\n") + "Written " + writtenFiles.size + " files:" + ("\n " + writtenFilesArray.slice(0, 5).join("\n ") + (writtenFilesArray.length > 5 ? "\n" + (" and " + (writtenFilesArray.length - 5) + " more") : "")); - } - throw new Error(errorMsg); - } - } - Baseline.runMultifileBaseline = runMultifileBaseline; - })(Baseline = Harness.Baseline || (Harness.Baseline = {})); - function isDefaultLibraryFile(filePath) { - // We need to make sure that the filePath is prefixed with "lib." not just containing "lib." and end with ".d.ts" - var fileName = ts.getBaseFileName(ts.normalizeSlashes(filePath)); - return ts.startsWith(fileName, "lib.") && ts.endsWith(fileName, ".d.ts" /* Dts */); - } - Harness.isDefaultLibraryFile = isDefaultLibraryFile; - function isBuiltFile(filePath) { - return filePath.indexOf(Harness.libFolder) === 0 || - filePath.indexOf(vpath.addTrailingSeparator(vfs.builtFolder)) === 0; - } - Harness.isBuiltFile = isBuiltFile; - function getDefaultLibraryFile(filePath, io) { - var libFile = Harness.userSpecifiedRoot + Harness.libFolder + ts.getBaseFileName(ts.normalizeSlashes(filePath)); - return { unitName: libFile, content: io.readFile(libFile) }; - } - Harness.getDefaultLibraryFile = getDefaultLibraryFile; - function getConfigNameFromFileName(filename) { - var flc = ts.getBaseFileName(filename).toLowerCase(); - return ts.find(["tsconfig.json", "jsconfig.json"], function (x) { return x === flc; }); - } - Harness.getConfigNameFromFileName = getConfigNameFromFileName; - if (Error) - Error.stackTraceLimit = 100; -})(Harness || (Harness = {})); -var Harness; -(function (Harness) { - var LanguageService; - (function (LanguageService) { - var ScriptInfo = /** @class */ (function () { - function ScriptInfo(fileName, content, isRootFile) { - this.fileName = fileName; - this.content = content; - this.isRootFile = isRootFile; - this.version = 1; - this.editRanges = []; - this.setContent(content); - } - ScriptInfo.prototype.setContent = function (content) { - this.content = content; - this.lineMap = undefined; - }; - ScriptInfo.prototype.getLineMap = function () { - return this.lineMap || (this.lineMap = ts.computeLineStarts(this.content)); - }; - ScriptInfo.prototype.updateContent = function (content) { - this.editRanges = []; - this.setContent(content); - this.version++; - }; - ScriptInfo.prototype.editContent = function (start, end, newText) { - // Apply edits - var prefix = this.content.substring(0, start); - var middle = newText; - var suffix = this.content.substring(end); - this.setContent(prefix + middle + suffix); - // Store edit range + new length of script - this.editRanges.push({ - length: this.content.length, - textChangeRange: ts.createTextChangeRange(ts.createTextSpanFromBounds(start, end), newText.length) - }); - // Update version # - this.version++; - }; - ScriptInfo.prototype.getTextChangeRangeBetweenVersions = function (startVersion, endVersion) { - if (startVersion === endVersion) { - // No edits! - return ts.unchangedTextChangeRange; - } - var initialEditRangeIndex = this.editRanges.length - (this.version - startVersion); - var lastEditRangeIndex = this.editRanges.length - (this.version - endVersion); - var entries = this.editRanges.slice(initialEditRangeIndex, lastEditRangeIndex); - return ts.collapseTextChangeRangesAcrossMultipleVersions(entries.map(function (e) { return e.textChangeRange; })); - }; - return ScriptInfo; - }()); - LanguageService.ScriptInfo = ScriptInfo; - var ScriptSnapshot = /** @class */ (function () { - function ScriptSnapshot(scriptInfo) { - this.scriptInfo = scriptInfo; - this.textSnapshot = scriptInfo.content; - this.version = scriptInfo.version; - } - ScriptSnapshot.prototype.getText = function (start, end) { - return this.textSnapshot.substring(start, end); - }; - ScriptSnapshot.prototype.getLength = function () { - return this.textSnapshot.length; - }; - ScriptSnapshot.prototype.getChangeRange = function (oldScript) { - var oldShim = oldScript; - return this.scriptInfo.getTextChangeRangeBetweenVersions(oldShim.version, this.version); - }; - return ScriptSnapshot; - }()); - var ScriptSnapshotProxy = /** @class */ (function () { - function ScriptSnapshotProxy(scriptSnapshot) { - this.scriptSnapshot = scriptSnapshot; - } - ScriptSnapshotProxy.prototype.getText = function (start, end) { - return this.scriptSnapshot.getText(start, end); - }; - ScriptSnapshotProxy.prototype.getLength = function () { - return this.scriptSnapshot.getLength(); - }; - ScriptSnapshotProxy.prototype.getChangeRange = function (oldScript) { - var range = this.scriptSnapshot.getChangeRange(oldScript.scriptSnapshot); - return range && JSON.stringify(range); - }; - return ScriptSnapshotProxy; - }()); - var DefaultHostCancellationToken = /** @class */ (function () { - function DefaultHostCancellationToken() { - } - DefaultHostCancellationToken.prototype.isCancellationRequested = function () { - return false; - }; - DefaultHostCancellationToken.instance = new DefaultHostCancellationToken(); - return DefaultHostCancellationToken; - }()); - var LanguageServiceAdapterHost = /** @class */ (function () { - function LanguageServiceAdapterHost(cancellationToken, settings) { - if (cancellationToken === void 0) { cancellationToken = DefaultHostCancellationToken.instance; } - if (settings === void 0) { settings = ts.getDefaultCompilerOptions(); } - this.cancellationToken = cancellationToken; - this.settings = settings; - this.sys = new fakes.System(new vfs.FileSystem(/*ignoreCase*/ true, { cwd: Harness.virtualFileSystemRoot })); - this.scriptInfos = new collections.SortedMap({ comparer: this.vfs.stringComparer, sort: "insertion" }); - } - Object.defineProperty(LanguageServiceAdapterHost.prototype, "vfs", { - get: function () { - return this.sys.vfs; - }, - enumerable: true, - configurable: true - }); - LanguageServiceAdapterHost.prototype.getNewLine = function () { - return Harness.harnessNewLine; - }; - LanguageServiceAdapterHost.prototype.getFilenames = function () { - var fileNames = []; - this.scriptInfos.forEach(function (scriptInfo) { - if (scriptInfo.isRootFile) { - // only include root files here - // usually it means that we won't include lib.d.ts in the list of root files so it won't mess the computation of compilation root dir. - fileNames.push(scriptInfo.fileName); - } - }); - return fileNames; - }; - LanguageServiceAdapterHost.prototype.getScriptInfo = function (fileName) { - return this.scriptInfos.get(vpath.resolve(this.vfs.cwd(), fileName)); - }; - LanguageServiceAdapterHost.prototype.addScript = function (fileName, content, isRootFile) { - this.vfs.mkdirpSync(vpath.dirname(fileName)); - this.vfs.writeFileSync(fileName, content); - this.scriptInfos.set(vpath.resolve(this.vfs.cwd(), fileName), new ScriptInfo(fileName, content, isRootFile)); - }; - LanguageServiceAdapterHost.prototype.editScript = function (fileName, start, end, newText) { - var script = this.getScriptInfo(fileName); - if (script) { - script.editContent(start, end, newText); - this.vfs.mkdirpSync(vpath.dirname(fileName)); - this.vfs.writeFileSync(fileName, script.content); - return; - } - throw new Error("No script with name '" + fileName + "'"); - }; - LanguageServiceAdapterHost.prototype.openFile = function (_fileName, _content, _scriptKindName) { }; - /** - * @param line 0 based index - * @param col 0 based index - */ - LanguageServiceAdapterHost.prototype.positionToLineAndCharacter = function (fileName, position) { - var script = this.getScriptInfo(fileName); - assert.isOk(script); - return ts.computeLineAndCharacterOfPosition(script.getLineMap(), position); - }; - return LanguageServiceAdapterHost; - }()); - LanguageService.LanguageServiceAdapterHost = LanguageServiceAdapterHost; - /// Native adapter - var NativeLanguageServiceHost = /** @class */ (function (_super) { - __extends(NativeLanguageServiceHost, _super); - function NativeLanguageServiceHost() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.installPackage = ts.notImplemented; - _this.log = ts.noop; - _this.trace = ts.noop; - _this.error = ts.noop; - return _this; - } - NativeLanguageServiceHost.prototype.isKnownTypesPackageName = function (name) { - return !!this.typesRegistry && this.typesRegistry.has(name); - }; - NativeLanguageServiceHost.prototype.getCompilationSettings = function () { return this.settings; }; - NativeLanguageServiceHost.prototype.getCancellationToken = function () { return this.cancellationToken; }; - NativeLanguageServiceHost.prototype.getDirectories = function (path) { - return this.sys.getDirectories(path); - }; - NativeLanguageServiceHost.prototype.getCurrentDirectory = function () { return Harness.virtualFileSystemRoot; }; - NativeLanguageServiceHost.prototype.getDefaultLibFileName = function () { return Harness.Compiler.defaultLibFileName; }; - NativeLanguageServiceHost.prototype.getScriptFileNames = function () { - return this.getFilenames().filter(ts.isAnySupportedFileExtension); - }; - NativeLanguageServiceHost.prototype.getScriptSnapshot = function (fileName) { - var script = this.getScriptInfo(fileName); - return script ? new ScriptSnapshot(script) : undefined; - }; - NativeLanguageServiceHost.prototype.getScriptKind = function () { return 0 /* Unknown */; }; - NativeLanguageServiceHost.prototype.getScriptVersion = function (fileName) { - var script = this.getScriptInfo(fileName); - return script ? script.version.toString() : undefined; // TODO: GH#18217 - }; - NativeLanguageServiceHost.prototype.directoryExists = function (dirName) { - return this.sys.directoryExists(dirName); - }; - NativeLanguageServiceHost.prototype.fileExists = function (fileName) { - return this.sys.fileExists(fileName); - }; - NativeLanguageServiceHost.prototype.readDirectory = function (path, extensions, exclude, include, depth) { - return this.sys.readDirectory(path, extensions, exclude, include, depth); - }; - NativeLanguageServiceHost.prototype.readFile = function (path) { - return this.sys.readFile(path); - }; - NativeLanguageServiceHost.prototype.realpath = function (path) { - return this.sys.realpath(path); - }; - NativeLanguageServiceHost.prototype.getTypeRootsVersion = function () { - return 0; - }; - return NativeLanguageServiceHost; - }(LanguageServiceAdapterHost)); - var NativeLanguageServiceAdapter = /** @class */ (function () { - function NativeLanguageServiceAdapter(cancellationToken, options) { - this.host = new NativeLanguageServiceHost(cancellationToken, options); - } - NativeLanguageServiceAdapter.prototype.getHost = function () { return this.host; }; - NativeLanguageServiceAdapter.prototype.getLanguageService = function () { return ts.createLanguageService(this.host); }; - NativeLanguageServiceAdapter.prototype.getClassifier = function () { return ts.createClassifier(); }; - NativeLanguageServiceAdapter.prototype.getPreProcessedFileInfo = function (fileName, fileContents) { return ts.preProcessFile(fileContents, /* readImportFiles */ true, ts.hasJavaScriptFileExtension(fileName)); }; - return NativeLanguageServiceAdapter; - }()); - LanguageService.NativeLanguageServiceAdapter = NativeLanguageServiceAdapter; - /// Shim adapter - var ShimLanguageServiceHost = /** @class */ (function (_super) { - __extends(ShimLanguageServiceHost, _super); - function ShimLanguageServiceHost(preprocessToResolve, cancellationToken, options) { - var _this = _super.call(this, cancellationToken, options) || this; - _this.readDirectory = ts.notImplemented; - _this.readDirectoryNames = ts.notImplemented; - _this.readFileNames = ts.notImplemented; - _this.nativeHost = new NativeLanguageServiceHost(cancellationToken, options); - if (preprocessToResolve) { - var compilerOptions_1 = _this.nativeHost.getCompilationSettings(); - var moduleResolutionHost_1 = { - fileExists: function (fileName) { return _this.getScriptInfo(fileName) !== undefined; }, - readFile: function (fileName) { - var scriptInfo = _this.getScriptInfo(fileName); - return scriptInfo && scriptInfo.content; - } - }; - _this.getModuleResolutionsForFile = function (fileName) { - var scriptInfo = _this.getScriptInfo(fileName); - var preprocessInfo = ts.preProcessFile(scriptInfo.content, /*readImportFiles*/ true); - var imports = {}; - for (var _i = 0, _a = preprocessInfo.importedFiles; _i < _a.length; _i++) { - var module_1 = _a[_i]; - var resolutionInfo = ts.resolveModuleName(module_1.fileName, fileName, compilerOptions_1, moduleResolutionHost_1); - if (resolutionInfo.resolvedModule) { - imports[module_1.fileName] = resolutionInfo.resolvedModule.resolvedFileName; - } - } - return JSON.stringify(imports); - }; - _this.getTypeReferenceDirectiveResolutionsForFile = function (fileName) { - var scriptInfo = _this.getScriptInfo(fileName); - if (scriptInfo) { - var preprocessInfo = ts.preProcessFile(scriptInfo.content, /*readImportFiles*/ false); - var resolutions = {}; - var settings = _this.nativeHost.getCompilationSettings(); - for (var _i = 0, _a = preprocessInfo.typeReferenceDirectives; _i < _a.length; _i++) { - var typeReferenceDirective = _a[_i]; - var resolutionInfo = ts.resolveTypeReferenceDirective(typeReferenceDirective.fileName, fileName, settings, moduleResolutionHost_1); - if (resolutionInfo.resolvedTypeReferenceDirective.resolvedFileName) { - resolutions[typeReferenceDirective.fileName] = resolutionInfo.resolvedTypeReferenceDirective; - } - } - return JSON.stringify(resolutions); - } - else { - return "[]"; - } - }; - } - return _this; - } - ShimLanguageServiceHost.prototype.getFilenames = function () { return this.nativeHost.getFilenames(); }; - ShimLanguageServiceHost.prototype.getScriptInfo = function (fileName) { return this.nativeHost.getScriptInfo(fileName); }; - ShimLanguageServiceHost.prototype.addScript = function (fileName, content, isRootFile) { this.nativeHost.addScript(fileName, content, isRootFile); }; - ShimLanguageServiceHost.prototype.editScript = function (fileName, start, end, newText) { this.nativeHost.editScript(fileName, start, end, newText); }; - ShimLanguageServiceHost.prototype.positionToLineAndCharacter = function (fileName, position) { return this.nativeHost.positionToLineAndCharacter(fileName, position); }; - ShimLanguageServiceHost.prototype.getCompilationSettings = function () { return JSON.stringify(this.nativeHost.getCompilationSettings()); }; - ShimLanguageServiceHost.prototype.getCancellationToken = function () { return this.nativeHost.getCancellationToken(); }; - ShimLanguageServiceHost.prototype.getCurrentDirectory = function () { return this.nativeHost.getCurrentDirectory(); }; - ShimLanguageServiceHost.prototype.getDirectories = function (path) { return JSON.stringify(this.nativeHost.getDirectories(path)); }; - ShimLanguageServiceHost.prototype.getDefaultLibFileName = function () { return this.nativeHost.getDefaultLibFileName(); }; - ShimLanguageServiceHost.prototype.getScriptFileNames = function () { return JSON.stringify(this.nativeHost.getScriptFileNames()); }; - ShimLanguageServiceHost.prototype.getScriptSnapshot = function (fileName) { - var nativeScriptSnapshot = this.nativeHost.getScriptSnapshot(fileName); // TODO: GH#18217 - return nativeScriptSnapshot && new ScriptSnapshotProxy(nativeScriptSnapshot); - }; - ShimLanguageServiceHost.prototype.getScriptKind = function () { return this.nativeHost.getScriptKind(); }; - ShimLanguageServiceHost.prototype.getScriptVersion = function (fileName) { return this.nativeHost.getScriptVersion(fileName); }; - ShimLanguageServiceHost.prototype.getLocalizedDiagnosticMessages = function () { return JSON.stringify({}); }; - ShimLanguageServiceHost.prototype.fileExists = function (fileName) { return this.getScriptInfo(fileName) !== undefined; }; - ShimLanguageServiceHost.prototype.readFile = function (fileName) { - var snapshot = this.nativeHost.getScriptSnapshot(fileName); - return snapshot && ts.getSnapshotText(snapshot); - }; - ShimLanguageServiceHost.prototype.log = function (s) { this.nativeHost.log(s); }; - ShimLanguageServiceHost.prototype.trace = function (s) { this.nativeHost.trace(s); }; - ShimLanguageServiceHost.prototype.error = function (s) { this.nativeHost.error(s); }; - ShimLanguageServiceHost.prototype.directoryExists = function () { - // for tests pessimistically assume that directory always exists - return true; - }; - return ShimLanguageServiceHost; - }(LanguageServiceAdapterHost)); - var ClassifierShimProxy = /** @class */ (function () { - function ClassifierShimProxy(shim) { - this.shim = shim; - } - ClassifierShimProxy.prototype.getEncodedLexicalClassifications = function (_text, _lexState, _classifyKeywordsInGenerics) { - return ts.notImplemented(); - }; - ClassifierShimProxy.prototype.getClassificationsForLine = function (text, lexState, classifyKeywordsInGenerics) { - var result = this.shim.getClassificationsForLine(text, lexState, classifyKeywordsInGenerics).split("\n"); - var entries = []; - var i = 0; - var position = 0; - for (; i < result.length - 1; i += 2) { - var t = entries[i / 2] = { - length: parseInt(result[i]), - classification: parseInt(result[i + 1]) - }; - assert.isTrue(t.length > 0, "Result length should be greater than 0, got :" + t.length); - position += t.length; - } - var finalLexState = parseInt(result[result.length - 1]); - assert.equal(position, text.length, "Expected cumulative length of all entries to match the length of the source. expected: " + text.length + ", but got: " + position); - return { - finalLexState: finalLexState, - entries: entries - }; - }; - return ClassifierShimProxy; - }()); - function unwrapJSONCallResult(result) { - var parsedResult = JSON.parse(result); - if (parsedResult.error) { - throw new Error("Language Service Shim Error: " + JSON.stringify(parsedResult.error)); - } - else if (parsedResult.canceled) { - throw new ts.OperationCanceledException(); - } - return parsedResult.result; - } - var LanguageServiceShimProxy = /** @class */ (function () { - function LanguageServiceShimProxy(shim) { - this.shim = shim; - this.getCombinedCodeFix = ts.notImplemented; - this.applyCodeActionCommand = ts.notImplemented; - } - LanguageServiceShimProxy.prototype.cleanupSemanticCache = function () { - this.shim.cleanupSemanticCache(); - }; - LanguageServiceShimProxy.prototype.getSyntacticDiagnostics = function (fileName) { - return unwrapJSONCallResult(this.shim.getSyntacticDiagnostics(fileName)); - }; - LanguageServiceShimProxy.prototype.getSemanticDiagnostics = function (fileName) { - return unwrapJSONCallResult(this.shim.getSemanticDiagnostics(fileName)); - }; - LanguageServiceShimProxy.prototype.getSuggestionDiagnostics = function (fileName) { - return unwrapJSONCallResult(this.shim.getSuggestionDiagnostics(fileName)); - }; - LanguageServiceShimProxy.prototype.getCompilerOptionsDiagnostics = function () { - return unwrapJSONCallResult(this.shim.getCompilerOptionsDiagnostics()); - }; - LanguageServiceShimProxy.prototype.getSyntacticClassifications = function (fileName, span) { - return unwrapJSONCallResult(this.shim.getSyntacticClassifications(fileName, span.start, span.length)); - }; - LanguageServiceShimProxy.prototype.getSemanticClassifications = function (fileName, span) { - return unwrapJSONCallResult(this.shim.getSemanticClassifications(fileName, span.start, span.length)); - }; - LanguageServiceShimProxy.prototype.getEncodedSyntacticClassifications = function (fileName, span) { - return unwrapJSONCallResult(this.shim.getEncodedSyntacticClassifications(fileName, span.start, span.length)); - }; - LanguageServiceShimProxy.prototype.getEncodedSemanticClassifications = function (fileName, span) { - return unwrapJSONCallResult(this.shim.getEncodedSemanticClassifications(fileName, span.start, span.length)); - }; - LanguageServiceShimProxy.prototype.getCompletionsAtPosition = function (fileName, position, preferences) { - return unwrapJSONCallResult(this.shim.getCompletionsAtPosition(fileName, position, preferences)); - }; - LanguageServiceShimProxy.prototype.getCompletionEntryDetails = function (fileName, position, entryName, formatOptions, source, preferences) { - return unwrapJSONCallResult(this.shim.getCompletionEntryDetails(fileName, position, entryName, JSON.stringify(formatOptions), source, preferences)); - }; - LanguageServiceShimProxy.prototype.getCompletionEntrySymbol = function () { - throw new Error("getCompletionEntrySymbol not implemented across the shim layer."); - }; - LanguageServiceShimProxy.prototype.getQuickInfoAtPosition = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getQuickInfoAtPosition(fileName, position)); - }; - LanguageServiceShimProxy.prototype.getNameOrDottedNameSpan = function (fileName, startPos, endPos) { - return unwrapJSONCallResult(this.shim.getNameOrDottedNameSpan(fileName, startPos, endPos)); - }; - LanguageServiceShimProxy.prototype.getBreakpointStatementAtPosition = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getBreakpointStatementAtPosition(fileName, position)); - }; - LanguageServiceShimProxy.prototype.getSignatureHelpItems = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getSignatureHelpItems(fileName, position)); - }; - LanguageServiceShimProxy.prototype.getRenameInfo = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getRenameInfo(fileName, position)); - }; - LanguageServiceShimProxy.prototype.findRenameLocations = function (fileName, position, findInStrings, findInComments) { - return unwrapJSONCallResult(this.shim.findRenameLocations(fileName, position, findInStrings, findInComments)); - }; - LanguageServiceShimProxy.prototype.getDefinitionAtPosition = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getDefinitionAtPosition(fileName, position)); - }; - LanguageServiceShimProxy.prototype.getDefinitionAndBoundSpan = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getDefinitionAndBoundSpan(fileName, position)); - }; - LanguageServiceShimProxy.prototype.getTypeDefinitionAtPosition = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getTypeDefinitionAtPosition(fileName, position)); - }; - LanguageServiceShimProxy.prototype.getImplementationAtPosition = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getImplementationAtPosition(fileName, position)); - }; - LanguageServiceShimProxy.prototype.getReferencesAtPosition = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getReferencesAtPosition(fileName, position)); - }; - LanguageServiceShimProxy.prototype.findReferences = function (fileName, position) { - return unwrapJSONCallResult(this.shim.findReferences(fileName, position)); - }; - LanguageServiceShimProxy.prototype.getOccurrencesAtPosition = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getOccurrencesAtPosition(fileName, position)); - }; - LanguageServiceShimProxy.prototype.getDocumentHighlights = function (fileName, position, filesToSearch) { - return unwrapJSONCallResult(this.shim.getDocumentHighlights(fileName, position, JSON.stringify(filesToSearch))); - }; - LanguageServiceShimProxy.prototype.getNavigateToItems = function (searchValue) { - return unwrapJSONCallResult(this.shim.getNavigateToItems(searchValue)); - }; - LanguageServiceShimProxy.prototype.getNavigationBarItems = function (fileName) { - return unwrapJSONCallResult(this.shim.getNavigationBarItems(fileName)); - }; - LanguageServiceShimProxy.prototype.getNavigationTree = function (fileName) { - return unwrapJSONCallResult(this.shim.getNavigationTree(fileName)); - }; - LanguageServiceShimProxy.prototype.getOutliningSpans = function (fileName) { - return unwrapJSONCallResult(this.shim.getOutliningSpans(fileName)); - }; - LanguageServiceShimProxy.prototype.getTodoComments = function (fileName, descriptors) { - return unwrapJSONCallResult(this.shim.getTodoComments(fileName, JSON.stringify(descriptors))); - }; - LanguageServiceShimProxy.prototype.getBraceMatchingAtPosition = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getBraceMatchingAtPosition(fileName, position)); - }; - LanguageServiceShimProxy.prototype.getIndentationAtPosition = function (fileName, position, options) { - return unwrapJSONCallResult(this.shim.getIndentationAtPosition(fileName, position, JSON.stringify(options))); - }; - LanguageServiceShimProxy.prototype.getFormattingEditsForRange = function (fileName, start, end, options) { - return unwrapJSONCallResult(this.shim.getFormattingEditsForRange(fileName, start, end, JSON.stringify(options))); - }; - LanguageServiceShimProxy.prototype.getFormattingEditsForDocument = function (fileName, options) { - return unwrapJSONCallResult(this.shim.getFormattingEditsForDocument(fileName, JSON.stringify(options))); - }; - LanguageServiceShimProxy.prototype.getFormattingEditsAfterKeystroke = function (fileName, position, key, options) { - return unwrapJSONCallResult(this.shim.getFormattingEditsAfterKeystroke(fileName, position, key, JSON.stringify(options))); - }; - LanguageServiceShimProxy.prototype.getDocCommentTemplateAtPosition = function (fileName, position) { - return unwrapJSONCallResult(this.shim.getDocCommentTemplateAtPosition(fileName, position)); - }; - LanguageServiceShimProxy.prototype.isValidBraceCompletionAtPosition = function (fileName, position, openingBrace) { - return unwrapJSONCallResult(this.shim.isValidBraceCompletionAtPosition(fileName, position, openingBrace)); - }; - LanguageServiceShimProxy.prototype.getJsxClosingTagAtPosition = function () { - throw new Error("Not supported on the shim."); - }; - LanguageServiceShimProxy.prototype.getSpanOfEnclosingComment = function (fileName, position, onlyMultiLine) { - return unwrapJSONCallResult(this.shim.getSpanOfEnclosingComment(fileName, position, onlyMultiLine)); - }; - LanguageServiceShimProxy.prototype.getCodeFixesAtPosition = function () { - throw new Error("Not supported on the shim."); - }; - LanguageServiceShimProxy.prototype.getCodeFixDiagnostics = function () { - throw new Error("Not supported on the shim."); - }; - LanguageServiceShimProxy.prototype.getEditsForRefactor = function () { - throw new Error("Not supported on the shim."); - }; - LanguageServiceShimProxy.prototype.getApplicableRefactors = function () { - throw new Error("Not supported on the shim."); - }; - LanguageServiceShimProxy.prototype.organizeImports = function (_scope, _formatOptions) { - throw new Error("Not supported on the shim."); - }; - LanguageServiceShimProxy.prototype.getEditsForFileRename = function () { - throw new Error("Not supported on the shim."); - }; - LanguageServiceShimProxy.prototype.getEmitOutput = function (fileName) { - return unwrapJSONCallResult(this.shim.getEmitOutput(fileName)); - }; - LanguageServiceShimProxy.prototype.getProgram = function () { - throw new Error("Program can not be marshaled across the shim layer."); - }; - LanguageServiceShimProxy.prototype.getNonBoundSourceFile = function () { - throw new Error("SourceFile can not be marshaled across the shim layer."); - }; - LanguageServiceShimProxy.prototype.getSourceFile = function () { - throw new Error("SourceFile can not be marshaled across the shim layer."); - }; - LanguageServiceShimProxy.prototype.dispose = function () { this.shim.dispose({}); }; - return LanguageServiceShimProxy; - }()); - var ShimLanguageServiceAdapter = /** @class */ (function () { - function ShimLanguageServiceAdapter(preprocessToResolve, cancellationToken, options) { - this.host = new ShimLanguageServiceHost(preprocessToResolve, cancellationToken, options); - this.factory = new TypeScript.Services.TypeScriptServicesFactory(); - } - ShimLanguageServiceAdapter.prototype.getHost = function () { return this.host; }; - ShimLanguageServiceAdapter.prototype.getLanguageService = function () { return new LanguageServiceShimProxy(this.factory.createLanguageServiceShim(this.host)); }; - ShimLanguageServiceAdapter.prototype.getClassifier = function () { return new ClassifierShimProxy(this.factory.createClassifierShim(this.host)); }; - ShimLanguageServiceAdapter.prototype.getPreProcessedFileInfo = function (fileName, fileContents) { - var shimResult; - var coreServicesShim = this.factory.createCoreServicesShim(this.host); - shimResult = unwrapJSONCallResult(coreServicesShim.getPreProcessedFileInfo(fileName, ts.ScriptSnapshot.fromString(fileContents))); - var convertResult = { - referencedFiles: [], - importedFiles: [], - ambientExternalModules: [], - isLibFile: shimResult.isLibFile, - typeReferenceDirectives: [], - libReferenceDirectives: [] - }; - ts.forEach(shimResult.referencedFiles, function (refFile) { - convertResult.referencedFiles.push({ - fileName: refFile.path, - pos: refFile.position, - end: refFile.position + refFile.length - }); - }); - ts.forEach(shimResult.importedFiles, function (importedFile) { - convertResult.importedFiles.push({ - fileName: importedFile.path, - pos: importedFile.position, - end: importedFile.position + importedFile.length - }); - }); - ts.forEach(shimResult.typeReferenceDirectives, function (typeRefDirective) { - convertResult.importedFiles.push({ - fileName: typeRefDirective.path, - pos: typeRefDirective.position, - end: typeRefDirective.position + typeRefDirective.length - }); - }); - return convertResult; - }; - return ShimLanguageServiceAdapter; - }()); - LanguageService.ShimLanguageServiceAdapter = ShimLanguageServiceAdapter; - // Server adapter - var SessionClientHost = /** @class */ (function (_super) { - __extends(SessionClientHost, _super); - function SessionClientHost(cancellationToken, settings) { - var _this = _super.call(this, cancellationToken, settings) || this; - _this.onMessage = ts.noop; - _this.writeMessage = ts.noop; - return _this; - } - SessionClientHost.prototype.setClient = function (client) { - this.client = client; - }; - SessionClientHost.prototype.openFile = function (fileName, content, scriptKindName) { - _super.prototype.openFile.call(this, fileName, content, scriptKindName); - this.client.openFile(fileName, content, scriptKindName); - }; - SessionClientHost.prototype.editScript = function (fileName, start, end, newText) { - _super.prototype.editScript.call(this, fileName, start, end, newText); - this.client.changeFile(fileName, start, end, newText); - }; - return SessionClientHost; - }(NativeLanguageServiceHost)); - var SessionServerHost = /** @class */ (function () { - function SessionServerHost(host) { - this.host = host; - this.args = []; - this.useCaseSensitiveFileNames = false; - this.onMessage = ts.noop; - this.writeMessage = ts.noop; // overridden - this.writeFile = ts.noop; - this.exit = ts.noop; - this.close = ts.noop; - this.newLine = this.host.getNewLine(); - } - SessionServerHost.prototype.write = function (message) { - this.writeMessage(message); - }; - SessionServerHost.prototype.readFile = function (fileName) { - if (ts.stringContains(fileName, Harness.Compiler.defaultLibFileName)) { - fileName = Harness.Compiler.defaultLibFileName; - } - var snapshot = this.host.getScriptSnapshot(fileName); - return snapshot && ts.getSnapshotText(snapshot); - }; - SessionServerHost.prototype.resolvePath = function (path) { - return path; - }; - SessionServerHost.prototype.fileExists = function (path) { - return !!this.host.getScriptSnapshot(path); - }; - SessionServerHost.prototype.directoryExists = function () { - // for tests assume that directory exists - return true; - }; - SessionServerHost.prototype.getExecutingFilePath = function () { - return ""; - }; - SessionServerHost.prototype.createDirectory = function (_directoryName) { - return ts.notImplemented(); - }; - SessionServerHost.prototype.getCurrentDirectory = function () { - return this.host.getCurrentDirectory(); - }; - SessionServerHost.prototype.getDirectories = function () { - return []; - }; - SessionServerHost.prototype.getEnvironmentVariable = function (name) { - return ts.sys.getEnvironmentVariable(name); - }; - SessionServerHost.prototype.readDirectory = function () { return ts.notImplemented(); }; - SessionServerHost.prototype.watchFile = function () { - return { close: ts.noop }; - }; - SessionServerHost.prototype.watchDirectory = function () { - return { close: ts.noop }; - }; - SessionServerHost.prototype.info = function (message) { - this.host.log(message); - }; - SessionServerHost.prototype.msg = function (message) { - this.host.log(message); - }; - SessionServerHost.prototype.loggingEnabled = function () { - return true; - }; - SessionServerHost.prototype.getLogFileName = function () { - return undefined; - }; - SessionServerHost.prototype.hasLevel = function () { - return false; - }; - SessionServerHost.prototype.startGroup = function () { throw ts.notImplemented(); }; - SessionServerHost.prototype.endGroup = function () { throw ts.notImplemented(); }; - SessionServerHost.prototype.perftrc = function (message) { - return this.host.log(message); - }; - SessionServerHost.prototype.setTimeout = function (callback, ms) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - return setTimeout(callback, ms, args); - }; - SessionServerHost.prototype.clearTimeout = function (timeoutId) { - clearTimeout(timeoutId); - }; - SessionServerHost.prototype.setImmediate = function (callback, _ms) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - return setImmediate(callback, args); - }; - SessionServerHost.prototype.clearImmediate = function (timeoutId) { - clearImmediate(timeoutId); - }; - SessionServerHost.prototype.createHash = function (s) { - return Harness.mockHash(s); - }; - SessionServerHost.prototype.require = function (_initialDir, _moduleName) { - switch (_moduleName) { - // Adds to the Quick Info a fixed string and a string from the config file - // and replaces the first display part - case "quickinfo-augmeneter": - return { - module: function () { return ({ - create: function (info) { - var proxy = makeDefaultProxy(info); - var langSvc = info.languageService; - // tslint:disable-next-line only-arrow-functions - proxy.getQuickInfoAtPosition = function () { - var parts = langSvc.getQuickInfoAtPosition.apply(langSvc, arguments); - if (parts.displayParts.length > 0) { - parts.displayParts[0].text = "Proxied"; - } - parts.displayParts.push({ text: info.config.message, kind: "punctuation" }); - return parts; - }; - return proxy; - } - }); }, - error: undefined - }; - // Throws during initialization - case "create-thrower": - return { - module: function () { return ({ - create: function () { - throw new Error("I am not a well-behaved plugin"); - } - }); }, - error: undefined - }; - // Adds another diagnostic - case "diagnostic-adder": - return { - module: function () { return ({ - create: function (info) { - var proxy = makeDefaultProxy(info); - proxy.getSemanticDiagnostics = function (filename) { - var prev = info.languageService.getSemanticDiagnostics(filename); - var sourceFile = info.project.getSourceFile(ts.toPath(filename, /*basePath*/ undefined, ts.createGetCanonicalFileName(info.serverHost.useCaseSensitiveFileNames))); - prev.push({ - category: ts.DiagnosticCategory.Warning, - file: sourceFile, - code: 9999, - length: 3, - messageText: "Plugin diagnostic", - start: 0 - }); - return prev; - }; - return proxy; - } - }); }, - error: undefined - }; - default: - return { - module: undefined, - error: new Error("Could not resolve module") - }; - } - function makeDefaultProxy(info) { - // tslint:disable-next-line:no-null-keyword - var proxy = Object.create(/*prototype*/ null); - var langSvc = info.languageService; - var _loop_2 = function (k) { - // tslint:disable-next-line only-arrow-functions - proxy[k] = function () { - return langSvc[k].apply(langSvc, arguments); - }; - }; - for (var _i = 0, _a = Object.keys(langSvc); _i < _a.length; _i++) { - var k = _a[_i]; - _loop_2(k); - } - return proxy; - } - }; - return SessionServerHost; - }()); - var ServerLanguageServiceAdapter = /** @class */ (function () { - function ServerLanguageServiceAdapter(cancellationToken, options) { - // This is the main host that tests use to direct tests - var clientHost = new SessionClientHost(cancellationToken, options); - var client = new ts.server.SessionClient(clientHost); - // This host is just a proxy for the clientHost, it uses the client - // host to answer server queries about files on disk - var serverHost = new SessionServerHost(clientHost); - var opts = { - host: serverHost, - cancellationToken: ts.server.nullCancellationToken, - useSingleInferredProject: false, - useInferredProjectPerProjectRoot: false, - typingsInstaller: undefined, - byteLength: Utils.byteLength, - hrtime: process.hrtime, - logger: serverHost, - canUseEvents: true - }; - var server = new ts.server.Session(opts); - // Fake the connection between the client and the server - serverHost.writeMessage = client.onMessage.bind(client); - clientHost.writeMessage = server.onMessage.bind(server); - // Wire the client to the host to get notifications when a file is open - // or edited. - clientHost.setClient(client); - // Set the properties - this.client = client; - this.host = clientHost; - } - ServerLanguageServiceAdapter.prototype.getHost = function () { return this.host; }; - ServerLanguageServiceAdapter.prototype.getLanguageService = function () { return this.client; }; - ServerLanguageServiceAdapter.prototype.getClassifier = function () { throw new Error("getClassifier is not available using the server interface."); }; - ServerLanguageServiceAdapter.prototype.getPreProcessedFileInfo = function () { throw new Error("getPreProcessedFileInfo is not available using the server interface."); }; - return ServerLanguageServiceAdapter; - }()); - LanguageService.ServerLanguageServiceAdapter = ServerLanguageServiceAdapter; - })(LanguageService = Harness.LanguageService || (Harness.LanguageService = {})); -})(Harness || (Harness = {})); -var ts; -(function (ts) { - var TestFSWithWatch; - (function (TestFSWithWatch) { - TestFSWithWatch.libFile = { - path: "/a/lib/lib.d.ts", - content: "/// \ninterface Boolean {}\ninterface Function {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array {}" - }; - TestFSWithWatch.safeList = { - path: "/safeList.json", - content: JSON.stringify({ - commander: "commander", - express: "express", - jquery: "jquery", - lodash: "lodash", - moment: "moment", - chroma: "chroma-js" - }) - }; - function getExecutingFilePathFromLibFile() { - return ts.combinePaths(ts.getDirectoryPath(TestFSWithWatch.libFile.path), "tsc.js"); - } - function createWatchedSystem(fileOrFolderList, params) { - if (!params) { - params = {}; - } - var host = new TestServerHost(/*withSafelist*/ false, params.useCaseSensitiveFileNames !== undefined ? params.useCaseSensitiveFileNames : false, params.executingFilePath || getExecutingFilePathFromLibFile(), params.currentDirectory || "/", fileOrFolderList, params.newLine, params.useWindowsStylePaths, params.environmentVariables); - return host; - } - TestFSWithWatch.createWatchedSystem = createWatchedSystem; - function createServerHost(fileOrFolderList, params) { - if (!params) { - params = {}; - } - var host = new TestServerHost(/*withSafelist*/ true, params.useCaseSensitiveFileNames !== undefined ? params.useCaseSensitiveFileNames : false, params.executingFilePath || getExecutingFilePathFromLibFile(), params.currentDirectory || "/", fileOrFolderList, params.newLine, params.useWindowsStylePaths, params.environmentVariables); - return host; - } - TestFSWithWatch.createServerHost = createServerHost; - function isFile(fileOrFolderOrSymLink) { - return ts.isString(fileOrFolderOrSymLink.content); - } - function isSymLink(fileOrFolderOrSymLink) { - return ts.isString(fileOrFolderOrSymLink.symLink); - } - function isFsFolder(s) { - return s && ts.isArray(s.entries); - } - function isFsFile(s) { - return s && ts.isString(s.content); - } - function isFsSymLink(s) { - return s && ts.isString(s.symLink); - } - function invokeWatcherCallbacks(callbacks, invokeCallback) { - if (callbacks) { - // The array copy is made to ensure that even if one of the callback removes the callbacks, - // we dont miss any callbacks following it - var cbs = callbacks.slice(); - for (var _i = 0, cbs_1 = cbs; _i < cbs_1.length; _i++) { - var cb = cbs_1[_i]; - invokeCallback(cb); - } - } - } - function getDiffInKeys(map, expectedKeys) { - if (map.size === expectedKeys.length) { - return ""; - } - var notInActual = []; - var duplicates = []; - var seen = ts.createMap(); - ts.forEach(expectedKeys, function (expectedKey) { - if (seen.has(expectedKey)) { - duplicates.push(expectedKey); - return; - } - seen.set(expectedKey, true); - if (!map.has(expectedKey)) { - notInActual.push(expectedKey); - } - }); - var inActualNotExpected = []; - map.forEach(function (_value, key) { - if (!seen.has(key)) { - inActualNotExpected.push(key); - } - seen.set(key, true); - }); - return "\n\nNotInActual: " + notInActual + "\nDuplicates: " + duplicates + "\nInActualButNotInExpected: " + inActualNotExpected; - } - function verifyMapSize(caption, map, expectedKeys) { - assert.equal(map.size, expectedKeys.length, caption + ": incorrect size of map: Actual keys: " + ts.arrayFrom(map.keys()) + " Expected: " + expectedKeys + getDiffInKeys(map, expectedKeys)); - } - TestFSWithWatch.verifyMapSize = verifyMapSize; - function checkMapKeys(caption, map, expectedKeys) { - verifyMapSize(caption, map, expectedKeys); - for (var _i = 0, expectedKeys_1 = expectedKeys; _i < expectedKeys_1.length; _i++) { - var name = expectedKeys_1[_i]; - assert.isTrue(map.has(name), caption + " is expected to contain " + name + ", actual keys: " + ts.arrayFrom(map.keys())); - } - } - function checkMultiMapKeyCount(caption, actual, expectedKeysMapOrArray, eachKeyCount) { - var expectedKeys = ts.isArray(expectedKeysMapOrArray) ? ts.arrayToMap(expectedKeysMapOrArray, function (s) { return s; }, function () { return eachKeyCount; }) : expectedKeysMapOrArray; - verifyMapSize(caption, actual, ts.arrayFrom(expectedKeys.keys())); - expectedKeys.forEach(function (count, name) { - assert.isTrue(actual.has(name), caption + ": expected to contain " + name + ", actual keys: " + ts.arrayFrom(actual.keys())); - assert.equal(actual.get(name).length, count, caption + ": Expected to be have " + count + " entries for " + name + ". Actual entry: " + JSON.stringify(actual.get(name))); - }); - } - TestFSWithWatch.checkMultiMapKeyCount = checkMultiMapKeyCount; - function checkArray(caption, actual, expected) { - assert.equal(actual.length, expected.length, caption + ": incorrect actual number of files, expected:\r\n" + expected.join("\r\n") + "\r\ngot: " + actual.join("\r\n")); - for (var _i = 0, expected_1 = expected; _i < expected_1.length; _i++) { - var f = expected_1[_i]; - assert.equal(true, ts.contains(actual, f), caption + ": expected to find " + f + " in " + actual); - } - } - TestFSWithWatch.checkArray = checkArray; - function checkWatchedFiles(host, expectedFiles) { - checkMapKeys("watchedFiles", host.watchedFiles, expectedFiles); - } - TestFSWithWatch.checkWatchedFiles = checkWatchedFiles; - function checkWatchedFilesDetailed(host, expectedFiles, eachFileWatchCount) { - if (ts.isArray(expectedFiles)) { - checkMultiMapKeyCount("watchedFiles", host.watchedFiles, expectedFiles, eachFileWatchCount); - } - else { - checkMultiMapKeyCount("watchedFiles", host.watchedFiles, expectedFiles); - } - } - TestFSWithWatch.checkWatchedFilesDetailed = checkWatchedFilesDetailed; - function checkWatchedDirectories(host, expectedDirectories, recursive) { - checkMapKeys("watchedDirectories" + (recursive ? " recursive" : ""), recursive ? host.watchedDirectoriesRecursive : host.watchedDirectories, expectedDirectories); - } - TestFSWithWatch.checkWatchedDirectories = checkWatchedDirectories; - function checkWatchedDirectoriesDetailed(host, expectedDirectories, recursiveOrEachDirectoryWatchCount, recursive) { - if (ts.isArray(expectedDirectories)) { - checkMultiMapKeyCount("watchedDirectories" + (recursive ? " recursive" : ""), recursive ? host.watchedDirectoriesRecursive : host.watchedDirectories, expectedDirectories, recursiveOrEachDirectoryWatchCount); - } - else { - recursive = recursiveOrEachDirectoryWatchCount; - checkMultiMapKeyCount("watchedDirectories" + (recursive ? " recursive" : ""), recursive ? host.watchedDirectoriesRecursive : host.watchedDirectories, expectedDirectories); - } - } - TestFSWithWatch.checkWatchedDirectoriesDetailed = checkWatchedDirectoriesDetailed; - function checkOutputContains(host, expected) { - var mapExpected = ts.arrayToSet(expected); - var mapSeen = ts.createMap(); - for (var _i = 0, _a = host.getOutput(); _i < _a.length; _i++) { - var f = _a[_i]; - assert.isUndefined(mapSeen.get(f), "Already found " + f + " in " + JSON.stringify(host.getOutput())); - if (mapExpected.has(f)) { - mapExpected.delete(f); - mapSeen.set(f, true); - } - } - assert.equal(mapExpected.size, 0, "Output has missing " + JSON.stringify(ts.arrayFrom(mapExpected.keys())) + " in " + JSON.stringify(host.getOutput())); - } - TestFSWithWatch.checkOutputContains = checkOutputContains; - function checkOutputDoesNotContain(host, expectedToBeAbsent) { - var mapExpectedToBeAbsent = ts.arrayToSet(expectedToBeAbsent); - for (var _i = 0, _a = host.getOutput(); _i < _a.length; _i++) { - var f = _a[_i]; - assert.isFalse(mapExpectedToBeAbsent.has(f), "Contains " + f + " in " + JSON.stringify(host.getOutput())); - } - } - TestFSWithWatch.checkOutputDoesNotContain = checkOutputDoesNotContain; - var Callbacks = /** @class */ (function () { - function Callbacks() { - this.map = []; - this.nextId = 1; - } - Callbacks.prototype.getNextId = function () { - return this.nextId; - }; - Callbacks.prototype.register = function (cb, args) { - var timeoutId = this.nextId; - this.nextId++; - this.map[timeoutId] = cb.bind.apply(cb, [/*this*/ undefined].concat(args)); - return timeoutId; - }; - Callbacks.prototype.unregister = function (id) { - if (typeof id === "number") { - delete this.map[id]; - } - }; - Callbacks.prototype.count = function () { - var n = 0; - for (var _ in this.map) { - n++; - } - return n; - }; - Callbacks.prototype.invoke = function (invokeKey) { - if (invokeKey) { - this.map[invokeKey](); - delete this.map[invokeKey]; - return; - } - // Note: invoking a callback may result in new callbacks been queued, - // so do not clear the entire callback list regardless. Only remove the - // ones we have invoked. - for (var key in this.map) { - this.map[key](); - delete this.map[key]; - } - }; - return Callbacks; - }()); - var Tsc_WatchDirectory; - (function (Tsc_WatchDirectory) { - Tsc_WatchDirectory["WatchFile"] = "RecursiveDirectoryUsingFsWatchFile"; - Tsc_WatchDirectory["NonRecursiveWatchDirectory"] = "RecursiveDirectoryUsingNonRecursiveWatchDirectory"; - Tsc_WatchDirectory["DynamicPolling"] = "RecursiveDirectoryUsingDynamicPriorityPolling"; - })(Tsc_WatchDirectory = TestFSWithWatch.Tsc_WatchDirectory || (TestFSWithWatch.Tsc_WatchDirectory = {})); - var timeIncrements = 1000; - var TestServerHost = /** @class */ (function () { - function TestServerHost(withSafeList, useCaseSensitiveFileNames, executingFilePath, currentDirectory, fileOrFolderorSymLinkList, newLine, useWindowsStylePath, environmentVariables) { - if (newLine === void 0) { newLine = "\n"; } - var _this = this; - this.withSafeList = withSafeList; - this.useCaseSensitiveFileNames = useCaseSensitiveFileNames; - this.newLine = newLine; - this.useWindowsStylePath = useWindowsStylePath; - this.environmentVariables = environmentVariables; - this.args = []; - this.output = []; - this.fs = ts.createMap(); - this.time = timeIncrements; - this.timeoutCallbacks = new Callbacks(); - this.immediateCallbacks = new Callbacks(); - this.screenClears = []; - this.watchedDirectories = ts.createMultiMap(); - this.watchedDirectoriesRecursive = ts.createMultiMap(); - this.watchedFiles = ts.createMultiMap(); - this.exitMessage = "System Exit"; - this.resolvePath = function (s) { return s; }; - this.getExecutingFilePath = function () { return _this.executingFilePath; }; - this.getCurrentDirectory = function () { return _this.currentDirectory; }; - this.getCanonicalFileName = ts.createGetCanonicalFileName(useCaseSensitiveFileNames); - this.toPath = function (s) { return ts.toPath(s, currentDirectory, _this.getCanonicalFileName); }; - this.executingFilePath = this.getHostSpecificPath(executingFilePath); - this.currentDirectory = this.getHostSpecificPath(currentDirectory); - this.reloadFS(fileOrFolderorSymLinkList); - this.dynamicPriorityWatchFile = this.environmentVariables && this.environmentVariables.get("TSC_WATCHFILE") === "DynamicPriorityPolling" ? - ts.createDynamicPriorityPollingWatchFile(this) : - undefined; - var tscWatchDirectory = this.environmentVariables && this.environmentVariables.get("TSC_WATCHDIRECTORY"); - if (tscWatchDirectory === Tsc_WatchDirectory.WatchFile) { - var watchDirectory = function (directory, cb) { return _this.watchFile(directory, function () { return cb(directory); }, ts.PollingInterval.Medium); }; - this.customRecursiveWatchDirectory = ts.createRecursiveDirectoryWatcher({ - directoryExists: function (path) { return _this.directoryExists(path); }, - getAccessibleSortedChildDirectories: function (path) { return _this.getDirectories(path); }, - filePathComparer: this.useCaseSensitiveFileNames ? ts.compareStringsCaseSensitive : ts.compareStringsCaseInsensitive, - watchDirectory: watchDirectory, - realpath: function (s) { return _this.realpath(s); } - }); - } - else if (tscWatchDirectory === Tsc_WatchDirectory.NonRecursiveWatchDirectory) { - var watchDirectory = function (directory, cb) { return _this.watchDirectory(directory, function (fileName) { return cb(fileName); }, /*recursive*/ false); }; - this.customRecursiveWatchDirectory = ts.createRecursiveDirectoryWatcher({ - directoryExists: function (path) { return _this.directoryExists(path); }, - getAccessibleSortedChildDirectories: function (path) { return _this.getDirectories(path); }, - filePathComparer: this.useCaseSensitiveFileNames ? ts.compareStringsCaseSensitive : ts.compareStringsCaseInsensitive, - watchDirectory: watchDirectory, - realpath: function (s) { return _this.realpath(s); } - }); - } - else if (tscWatchDirectory === Tsc_WatchDirectory.DynamicPolling) { - var watchFile_1 = ts.createDynamicPriorityPollingWatchFile(this); - var watchDirectory = function (directory, cb) { return watchFile_1(directory, function () { return cb(directory); }, ts.PollingInterval.Medium); }; - this.customRecursiveWatchDirectory = ts.createRecursiveDirectoryWatcher({ - directoryExists: function (path) { return _this.directoryExists(path); }, - getAccessibleSortedChildDirectories: function (path) { return _this.getDirectories(path); }, - filePathComparer: this.useCaseSensitiveFileNames ? ts.compareStringsCaseSensitive : ts.compareStringsCaseInsensitive, - watchDirectory: watchDirectory, - realpath: function (s) { return _this.realpath(s); } - }); - } - } - TestServerHost.prototype.getNewLine = function () { - return this.newLine; - }; - TestServerHost.prototype.toNormalizedAbsolutePath = function (s) { - return ts.getNormalizedAbsolutePath(s, this.currentDirectory); - }; - TestServerHost.prototype.toFullPath = function (s) { - return this.toPath(this.toNormalizedAbsolutePath(s)); - }; - TestServerHost.prototype.getHostSpecificPath = function (s) { - if (this.useWindowsStylePath && s.startsWith(ts.directorySeparator)) { - return "c:/" + s.substring(1); - } - return s; - }; - TestServerHost.prototype.now = function () { - this.time += timeIncrements; - return new Date(this.time); - }; - TestServerHost.prototype.reloadFS = function (fileOrFolderOrSymLinkList, options) { - var _this = this; - var mapNewLeaves = ts.createMap(); - var isNewFs = this.fs.size === 0; - fileOrFolderOrSymLinkList = fileOrFolderOrSymLinkList.concat(this.withSafeList ? TestFSWithWatch.safeList : []); - var filesOrFoldersToLoad = !this.useWindowsStylePath ? fileOrFolderOrSymLinkList : - fileOrFolderOrSymLinkList.map(function (f) { - var result = ts.clone(f); - result.path = _this.getHostSpecificPath(f.path); - return result; - }); - for (var _i = 0, filesOrFoldersToLoad_1 = filesOrFoldersToLoad; _i < filesOrFoldersToLoad_1.length; _i++) { - var fileOrDirectory = filesOrFoldersToLoad_1[_i]; - var path = this.toFullPath(fileOrDirectory.path); - mapNewLeaves.set(path, true); - // If its a change - var currentEntry = this.fs.get(path); - if (currentEntry) { - if (isFsFile(currentEntry)) { - if (isFile(fileOrDirectory)) { - // Update file - if (currentEntry.content !== fileOrDirectory.content) { - this.modifyFile(fileOrDirectory.path, fileOrDirectory.content, options); - } - } - else { - // TODO: Changing from file => folder/Symlink - } - } - else if (isFsSymLink(currentEntry)) { - // TODO: update symlinks - } - else { - // Folder - if (isFile(fileOrDirectory)) { - // TODO: Changing from folder => file - } - else { - // Folder update: Nothing to do. - currentEntry.modifiedTime = this.now(); - } - } - } - else { - this.ensureFileOrFolder(fileOrDirectory, options && options.ignoreWatchInvokedWithTriggerAsFileCreate); - } - } - if (!isNewFs) { - this.fs.forEach(function (fileOrDirectory, path) { - // If this entry is not from the new file or folder - if (!mapNewLeaves.get(path)) { - // Leaf entries that arent in new list => remove these - if (isFsFile(fileOrDirectory) || isFsSymLink(fileOrDirectory) || isFsFolder(fileOrDirectory) && fileOrDirectory.entries.length === 0) { - _this.removeFileOrFolder(fileOrDirectory, function (folder) { return !mapNewLeaves.get(folder.path); }); - } - } - }); - } - }; - TestServerHost.prototype.modifyFile = function (filePath, content, options) { - var path = this.toFullPath(filePath); - var currentEntry = this.fs.get(path); - if (!currentEntry || !isFsFile(currentEntry)) { - throw new Error("file not present: " + filePath); - } - if (options && options.invokeFileDeleteCreateAsPartInsteadOfChange) { - this.removeFileOrFolder(currentEntry, ts.returnFalse); - this.ensureFileOrFolder({ path: filePath, content: content }); - } - else { - currentEntry.content = content; - currentEntry.modifiedTime = this.now(); - this.fs.get(ts.getDirectoryPath(currentEntry.path)).modifiedTime = this.now(); - if (options && options.invokeDirectoryWatcherInsteadOfFileChanged) { - this.invokeDirectoryWatcher(ts.getDirectoryPath(currentEntry.fullPath), currentEntry.fullPath); - } - else { - this.invokeFileWatcher(currentEntry.fullPath, ts.FileWatcherEventKind.Changed); - } - } - }; - TestServerHost.prototype.renameFolder = function (folderName, newFolderName) { - var fullPath = ts.getNormalizedAbsolutePath(folderName, this.currentDirectory); - var path = this.toPath(fullPath); - var folder = this.fs.get(path); - ts.Debug.assert(!!folder); - // Only remove the folder - this.removeFileOrFolder(folder, ts.returnFalse, /*isRenaming*/ true); - // Add updated folder with new folder name - var newFullPath = ts.getNormalizedAbsolutePath(newFolderName, this.currentDirectory); - var newFolder = this.toFsFolder(newFullPath); - var newPath = newFolder.path; - var basePath = ts.getDirectoryPath(path); - ts.Debug.assert(basePath !== path); - ts.Debug.assert(basePath === ts.getDirectoryPath(newPath)); - var baseFolder = this.fs.get(basePath); - this.addFileOrFolderInFolder(baseFolder, newFolder); - // Invoke watches for files in the folder as deleted (from old path) - this.renameFolderEntries(folder, newFolder); - }; - TestServerHost.prototype.renameFolderEntries = function (oldFolder, newFolder) { - for (var _i = 0, _a = oldFolder.entries; _i < _a.length; _i++) { - var entry = _a[_i]; - this.fs.delete(entry.path); - this.invokeFileWatcher(entry.fullPath, ts.FileWatcherEventKind.Deleted); - entry.fullPath = ts.combinePaths(newFolder.fullPath, ts.getBaseFileName(entry.fullPath)); - entry.path = this.toPath(entry.fullPath); - if (newFolder !== oldFolder) { - newFolder.entries.push(entry); - } - this.fs.set(entry.path, entry); - this.invokeFileWatcher(entry.fullPath, ts.FileWatcherEventKind.Created); - if (isFsFolder(entry)) { - this.renameFolderEntries(entry, entry); - } - } - }; - TestServerHost.prototype.ensureFileOrFolder = function (fileOrDirectoryOrSymLink, ignoreWatchInvokedWithTriggerAsFileCreate) { - if (isFile(fileOrDirectoryOrSymLink)) { - var file = this.toFsFile(fileOrDirectoryOrSymLink); - // file may already exist when updating existing type declaration file - if (!this.fs.get(file.path)) { - var baseFolder = this.ensureFolder(ts.getDirectoryPath(file.fullPath)); - this.addFileOrFolderInFolder(baseFolder, file, ignoreWatchInvokedWithTriggerAsFileCreate); - } - } - else if (isSymLink(fileOrDirectoryOrSymLink)) { - var symLink = this.toFsSymLink(fileOrDirectoryOrSymLink); - ts.Debug.assert(!this.fs.get(symLink.path)); - var baseFolder = this.ensureFolder(ts.getDirectoryPath(symLink.fullPath)); - this.addFileOrFolderInFolder(baseFolder, symLink, ignoreWatchInvokedWithTriggerAsFileCreate); - } - else { - var fullPath = ts.getNormalizedAbsolutePath(fileOrDirectoryOrSymLink.path, this.currentDirectory); - this.ensureFolder(fullPath); - } - }; - TestServerHost.prototype.ensureFolder = function (fullPath) { - var path = this.toPath(fullPath); - var folder = this.fs.get(path); - if (!folder) { - folder = this.toFsFolder(fullPath); - var baseFullPath = ts.getDirectoryPath(fullPath); - if (fullPath !== baseFullPath) { - // Add folder in the base folder - var baseFolder = this.ensureFolder(baseFullPath); - this.addFileOrFolderInFolder(baseFolder, folder); - } - else { - // root folder - ts.Debug.assert(this.fs.size === 0); - this.fs.set(path, folder); - } - } - ts.Debug.assert(isFsFolder(folder)); - return folder; - }; - TestServerHost.prototype.addFileOrFolderInFolder = function (folder, fileOrDirectory, ignoreWatch) { - ts.insertSorted(folder.entries, fileOrDirectory, function (a, b) { return ts.compareStringsCaseSensitive(ts.getBaseFileName(a.path), ts.getBaseFileName(b.path)); }); - folder.modifiedTime = this.now(); - this.fs.set(fileOrDirectory.path, fileOrDirectory); - if (ignoreWatch) { - return; - } - this.invokeFileWatcher(fileOrDirectory.fullPath, ts.FileWatcherEventKind.Created); - this.invokeDirectoryWatcher(folder.fullPath, fileOrDirectory.fullPath); - }; - TestServerHost.prototype.removeFileOrFolder = function (fileOrDirectory, isRemovableLeafFolder, isRenaming) { - if (isRenaming === void 0) { isRenaming = false; } - var basePath = ts.getDirectoryPath(fileOrDirectory.path); - var baseFolder = this.fs.get(basePath); - if (basePath !== fileOrDirectory.path) { - ts.Debug.assert(!!baseFolder); - baseFolder.modifiedTime = this.now(); - ts.filterMutate(baseFolder.entries, function (entry) { return entry !== fileOrDirectory; }); - } - this.fs.delete(fileOrDirectory.path); - this.invokeFileWatcher(fileOrDirectory.fullPath, ts.FileWatcherEventKind.Deleted); - if (isFsFolder(fileOrDirectory)) { - ts.Debug.assert(fileOrDirectory.entries.length === 0 || isRenaming); - var relativePath = this.getRelativePathToDirectory(fileOrDirectory.fullPath, fileOrDirectory.fullPath); - // Invoke directory and recursive directory watcher for the folder - // Here we arent invoking recursive directory watchers for the base folders - // since that is something we would want to do for both file as well as folder we are deleting - this.invokeWatchedDirectoriesCallback(fileOrDirectory.fullPath, relativePath); - this.invokeWatchedDirectoriesRecursiveCallback(fileOrDirectory.fullPath, relativePath); - } - if (basePath !== fileOrDirectory.path) { - if (baseFolder.entries.length === 0 && isRemovableLeafFolder(baseFolder)) { - this.removeFileOrFolder(baseFolder, isRemovableLeafFolder); - } - else { - this.invokeRecursiveDirectoryWatcher(baseFolder.fullPath, fileOrDirectory.fullPath); - } - } - }; - TestServerHost.prototype.removeFolder = function (folderPath, recursive) { - var _this = this; - var path = this.toFullPath(folderPath); - var currentEntry = this.fs.get(path); - ts.Debug.assert(isFsFolder(currentEntry)); - if (recursive && currentEntry.entries.length) { - var subEntries = currentEntry.entries.slice(); - subEntries.forEach(function (fsEntry) { - if (isFsFolder(fsEntry)) { - _this.removeFolder(fsEntry.fullPath, recursive); - } - else { - _this.removeFileOrFolder(fsEntry, ts.returnFalse); - } - }); - } - this.removeFileOrFolder(currentEntry, ts.returnFalse); - }; - // For overriding the methods - TestServerHost.prototype.invokeWatchedDirectoriesCallback = function (folderFullPath, relativePath) { - var _this = this; - invokeWatcherCallbacks(this.watchedDirectories.get(this.toPath(folderFullPath)), function (cb) { return _this.directoryCallback(cb, relativePath); }); - }; - TestServerHost.prototype.invokeWatchedDirectoriesRecursiveCallback = function (folderFullPath, relativePath) { - var _this = this; - invokeWatcherCallbacks(this.watchedDirectoriesRecursive.get(this.toPath(folderFullPath)), function (cb) { return _this.directoryCallback(cb, relativePath); }); - }; - TestServerHost.prototype.invokeFileWatcher = function (fileFullPath, eventKind, useFileNameInCallback) { - invokeWatcherCallbacks(this.watchedFiles.get(this.toPath(fileFullPath)), function (_a) { - var cb = _a.cb, fileName = _a.fileName; - return cb(useFileNameInCallback ? fileName : fileFullPath, eventKind); - }); - }; - TestServerHost.prototype.getRelativePathToDirectory = function (directoryFullPath, fileFullPath) { - return ts.getRelativePathToDirectoryOrUrl(directoryFullPath, fileFullPath, this.currentDirectory, this.getCanonicalFileName, /*isAbsolutePathAnUrl*/ false); - }; - /** - * This will call the directory watcher for the folderFullPath and recursive directory watchers for this and base folders - */ - TestServerHost.prototype.invokeDirectoryWatcher = function (folderFullPath, fileName) { - var relativePath = this.getRelativePathToDirectory(folderFullPath, fileName); - // Folder is changed when the directory watcher is invoked - this.invokeFileWatcher(folderFullPath, ts.FileWatcherEventKind.Changed, /*useFileNameInCallback*/ true); - this.invokeWatchedDirectoriesCallback(folderFullPath, relativePath); - this.invokeRecursiveDirectoryWatcher(folderFullPath, fileName); - }; - TestServerHost.prototype.directoryCallback = function (_a, relativePath) { - var cb = _a.cb, directoryName = _a.directoryName; - cb(ts.combinePaths(directoryName, relativePath)); - }; - /** - * This will call the recursive directory watcher for this directory as well as all the base directories - */ - TestServerHost.prototype.invokeRecursiveDirectoryWatcher = function (fullPath, fileName) { - var relativePath = this.getRelativePathToDirectory(fullPath, fileName); - this.invokeWatchedDirectoriesRecursiveCallback(fullPath, relativePath); - var basePath = ts.getDirectoryPath(fullPath); - if (this.getCanonicalFileName(fullPath) !== this.getCanonicalFileName(basePath)) { - this.invokeRecursiveDirectoryWatcher(basePath, fileName); - } - }; - TestServerHost.prototype.toFsEntry = function (path) { - var fullPath = ts.getNormalizedAbsolutePath(path, this.currentDirectory); - return { - path: this.toPath(fullPath), - fullPath: fullPath, - modifiedTime: this.now() - }; - }; - TestServerHost.prototype.toFsFile = function (file) { - var fsFile = this.toFsEntry(file.path); - fsFile.content = file.content; - fsFile.fileSize = file.fileSize; - return fsFile; - }; - TestServerHost.prototype.toFsSymLink = function (symLink) { - var fsSymLink = this.toFsEntry(symLink.path); - fsSymLink.symLink = ts.getNormalizedAbsolutePath(symLink.symLink, ts.getDirectoryPath(fsSymLink.fullPath)); - return fsSymLink; - }; - TestServerHost.prototype.toFsFolder = function (path) { - var fsFolder = this.toFsEntry(path); - fsFolder.entries = []; // https://github.com/Microsoft/TypeScript/issues/19873 - return fsFolder; - }; - TestServerHost.prototype.getRealFsEntry = function (isFsEntry, path, fsEntry) { - if (fsEntry === void 0) { fsEntry = this.fs.get(path); } - if (isFsEntry(fsEntry)) { - return fsEntry; - } - if (isFsSymLink(fsEntry)) { - return this.getRealFsEntry(isFsEntry, this.toPath(fsEntry.symLink)); - } - if (fsEntry) { - // This fs entry is something else - return undefined; - } - var realpath = this.realpath(path); - if (path !== realpath) { - return this.getRealFsEntry(isFsEntry, this.toPath(realpath)); - } - return undefined; - }; - TestServerHost.prototype.isFsFile = function (fsEntry) { - return !!this.getRealFile(fsEntry.path, fsEntry); - }; - TestServerHost.prototype.getRealFile = function (path, fsEntry) { - return this.getRealFsEntry(isFsFile, path, fsEntry); - }; - TestServerHost.prototype.isFsFolder = function (fsEntry) { - return !!this.getRealFolder(fsEntry.path, fsEntry); - }; - TestServerHost.prototype.getRealFolder = function (path, fsEntry) { - if (fsEntry === void 0) { fsEntry = this.fs.get(path); } - return this.getRealFsEntry(isFsFolder, path, fsEntry); - }; - TestServerHost.prototype.fileExists = function (s) { - var path = this.toFullPath(s); - return !!this.getRealFile(path); - }; - TestServerHost.prototype.getModifiedTime = function (s) { - var path = this.toFullPath(s); - var fsEntry = this.fs.get(path); - return (fsEntry && fsEntry.modifiedTime); // TODO: GH#18217 - }; - TestServerHost.prototype.readFile = function (s) { - var fsEntry = this.getRealFile(this.toFullPath(s)); - return fsEntry ? fsEntry.content : undefined; - }; - TestServerHost.prototype.getFileSize = function (s) { - var path = this.toFullPath(s); - var entry = this.fs.get(path); - if (isFsFile(entry)) { - return entry.fileSize ? entry.fileSize : entry.content.length; - } - return undefined; // TODO: GH#18217 - }; - TestServerHost.prototype.directoryExists = function (s) { - var path = this.toFullPath(s); - return !!this.getRealFolder(path); - }; - TestServerHost.prototype.getDirectories = function (s) { - var _this = this; - var path = this.toFullPath(s); - var folder = this.getRealFolder(path); - if (folder) { - return ts.mapDefined(folder.entries, function (entry) { return _this.isFsFolder(entry) ? ts.getBaseFileName(entry.fullPath) : undefined; }); - } - ts.Debug.fail(folder ? "getDirectories called on file" : "getDirectories called on missing folder"); - return []; - }; - TestServerHost.prototype.readDirectory = function (path, extensions, exclude, include, depth) { - var _this = this; - return ts.matchFiles(path, extensions, exclude, include, this.useCaseSensitiveFileNames, this.getCurrentDirectory(), depth, function (dir) { - var directories = []; - var files = []; - var folder = _this.getRealFolder(_this.toPath(dir)); - if (folder) { - folder.entries.forEach(function (entry) { - if (_this.isFsFolder(entry)) { - directories.push(ts.getBaseFileName(entry.fullPath)); - } - else if (_this.isFsFile(entry)) { - files.push(ts.getBaseFileName(entry.fullPath)); - } - else { - ts.Debug.fail("Unknown entry"); - } - }); - } - return { directories: directories, files: files }; - }); - }; - TestServerHost.prototype.watchDirectory = function (directoryName, cb, recursive) { - if (recursive && this.customRecursiveWatchDirectory) { - return this.customRecursiveWatchDirectory(directoryName, cb, /*recursive*/ true); - } - var path = this.toFullPath(directoryName); - var map = recursive ? this.watchedDirectoriesRecursive : this.watchedDirectories; - var callback = { - cb: cb, - directoryName: directoryName - }; - map.add(path, callback); - return { - close: function () { return map.remove(path, callback); } - }; - }; - TestServerHost.prototype.createHash = function (s) { - return Harness.mockHash(s); - }; - TestServerHost.prototype.createSHA256Hash = function (s) { - return ts.sys.createSHA256Hash(s); - }; - TestServerHost.prototype.watchFile = function (fileName, cb, pollingInterval) { - var _this = this; - if (this.dynamicPriorityWatchFile) { - return this.dynamicPriorityWatchFile(fileName, cb, pollingInterval); - } - var path = this.toFullPath(fileName); - var callback = { fileName: fileName, cb: cb }; - this.watchedFiles.add(path, callback); - return { close: function () { return _this.watchedFiles.remove(path, callback); } }; - }; - // TOOD: record and invoke callbacks to simulate timer events - TestServerHost.prototype.setTimeout = function (callback, _time) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - return this.timeoutCallbacks.register(callback, args); - }; - TestServerHost.prototype.getNextTimeoutId = function () { - return this.timeoutCallbacks.getNextId(); - }; - TestServerHost.prototype.clearTimeout = function (timeoutId) { - this.timeoutCallbacks.unregister(timeoutId); - }; - TestServerHost.prototype.clearScreen = function () { - this.screenClears.push(this.output.length); - }; - TestServerHost.prototype.checkTimeoutQueueLengthAndRun = function (expected) { - this.checkTimeoutQueueLength(expected); - this.runQueuedTimeoutCallbacks(); - }; - TestServerHost.prototype.checkTimeoutQueueLength = function (expected) { - var callbacksCount = this.timeoutCallbacks.count(); - assert.equal(callbacksCount, expected, "expected " + expected + " timeout callbacks queued but found " + callbacksCount + "."); - }; - TestServerHost.prototype.runQueuedTimeoutCallbacks = function (timeoutId) { - try { - this.timeoutCallbacks.invoke(timeoutId); - } - catch (e) { - if (e.message === this.exitMessage) { - return; - } - throw e; - } - }; - TestServerHost.prototype.runQueuedImmediateCallbacks = function (checkCount) { - if (checkCount !== undefined) { - assert.equal(this.immediateCallbacks.count(), checkCount); - } - this.immediateCallbacks.invoke(); - }; - TestServerHost.prototype.setImmediate = function (callback, _time) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - return this.immediateCallbacks.register(callback, args); - }; - TestServerHost.prototype.clearImmediate = function (timeoutId) { - this.immediateCallbacks.unregister(timeoutId); - }; - TestServerHost.prototype.createDirectory = function (directoryName) { - var folder = this.toFsFolder(directoryName); - // base folder has to be present - var base = ts.getDirectoryPath(folder.path); - var baseFolder = this.fs.get(base); - ts.Debug.assert(isFsFolder(baseFolder)); - ts.Debug.assert(!this.fs.get(folder.path)); - this.addFileOrFolderInFolder(baseFolder, folder); - }; - TestServerHost.prototype.writeFile = function (path, content) { - var file = this.toFsFile({ path: path, content: content }); - // base folder has to be present - var base = ts.getDirectoryPath(file.path); - var folder = this.fs.get(base); - ts.Debug.assert(isFsFolder(folder)); - this.addFileOrFolderInFolder(folder, file); - }; - TestServerHost.prototype.write = function (message) { - this.output.push(message); - }; - TestServerHost.prototype.getOutput = function () { - return this.output; - }; - TestServerHost.prototype.clearOutput = function () { - ts.clear(this.output); - this.screenClears.length = 0; - }; - TestServerHost.prototype.realpath = function (s) { - var fullPath = this.toNormalizedAbsolutePath(s); - var path = this.toPath(fullPath); - if (ts.getDirectoryPath(path) === path) { - // Root - return s; - } - var dirFullPath = this.realpath(ts.getDirectoryPath(fullPath)); - var realFullPath = ts.combinePaths(dirFullPath, ts.getBaseFileName(fullPath)); - var fsEntry = this.fs.get(this.toPath(realFullPath)); - if (isFsSymLink(fsEntry)) { - return this.realpath(fsEntry.symLink); - } - return realFullPath; - }; - TestServerHost.prototype.exit = function (exitCode) { - this.exitCode = exitCode; - throw new Error(this.exitMessage); - }; - TestServerHost.prototype.getEnvironmentVariable = function (name) { - return this.environmentVariables && this.environmentVariables.get(name) || ""; - }; - return TestServerHost; - }()); - TestFSWithWatch.TestServerHost = TestServerHost; - })(TestFSWithWatch = ts.TestFSWithWatch || (ts.TestFSWithWatch = {})); -})(ts || (ts = {})); -var FourSlash; -(function (FourSlash) { - ts.disableIncrementalParsing = false; - var FourSlashTestType; - (function (FourSlashTestType) { - FourSlashTestType[FourSlashTestType["Native"] = 0] = "Native"; - FourSlashTestType[FourSlashTestType["Shims"] = 1] = "Shims"; - FourSlashTestType[FourSlashTestType["ShimsWithPreprocess"] = 2] = "ShimsWithPreprocess"; - FourSlashTestType[FourSlashTestType["Server"] = 3] = "Server"; - })(FourSlashTestType = FourSlash.FourSlashTestType || (FourSlash.FourSlashTestType = {})); - // Name of testcase metadata including ts.CompilerOptions properties that will be used by globalOptions - // To add additional option, add property into the testOptMetadataNames, refer the property in either globalMetadataNames or fileMetadataNames - // Add cases into convertGlobalOptionsToCompilationsSettings function for the compiler to acknowledge such option from meta data - var MetadataOptionNames; - (function (MetadataOptionNames) { - MetadataOptionNames["baselineFile"] = "BaselineFile"; - MetadataOptionNames["emitThisFile"] = "emitThisFile"; - MetadataOptionNames["fileName"] = "Filename"; - MetadataOptionNames["resolveReference"] = "ResolveReference"; - MetadataOptionNames["symlink"] = "Symlink"; - })(MetadataOptionNames || (MetadataOptionNames = {})); - // List of allowed metadata names - var fileMetadataNames = ["Filename" /* fileName */, "emitThisFile" /* emitThisFile */, "ResolveReference" /* resolveReference */, "Symlink" /* symlink */]; - function convertGlobalOptionsToCompilerOptions(globalOptions) { - var settings = { target: 1 /* ES5 */ }; - Harness.Compiler.setCompilerOptionsFromHarnessSetting(globalOptions, settings); - return settings; - } - var TestCancellationToken = /** @class */ (function () { - function TestCancellationToken() { - this.numberOfCallsBeforeCancellation = TestCancellationToken.notCanceled; - } - TestCancellationToken.prototype.isCancellationRequested = function () { - if (this.numberOfCallsBeforeCancellation < 0) { - return false; - } - if (this.numberOfCallsBeforeCancellation > 0) { - this.numberOfCallsBeforeCancellation--; - return false; - } - return true; - }; - TestCancellationToken.prototype.setCancelled = function (numberOfCalls) { - if (numberOfCalls === void 0) { numberOfCalls = 0; } - ts.Debug.assert(numberOfCalls >= 0); - this.numberOfCallsBeforeCancellation = numberOfCalls; - }; - TestCancellationToken.prototype.resetCancelled = function () { - this.numberOfCallsBeforeCancellation = TestCancellationToken.notCanceled; - }; - // 0 - cancelled - // >0 - not cancelled - // <0 - not cancelled and value denotes number of isCancellationRequested after which token become cancelled - TestCancellationToken.notCanceled = -1; - return TestCancellationToken; - }()); - FourSlash.TestCancellationToken = TestCancellationToken; - function verifyOperationIsCancelled(f) { - try { - f(); - } - catch (e) { - if (e instanceof ts.OperationCanceledException) { - return; - } - } - throw new Error("Operation should be cancelled"); - } - FourSlash.verifyOperationIsCancelled = verifyOperationIsCancelled; - // This function creates IScriptSnapshot object for testing getPreProcessedFileInfo - // Return object may lack some functionalities for other purposes. - function createScriptSnapShot(sourceText) { - return ts.ScriptSnapshot.fromString(sourceText); - } - var TestState = /** @class */ (function () { - function TestState(basePath, testType, testData) { - var _a; - var _this = this; - this.basePath = basePath; - this.testType = testType; - this.testData = testData; - // The current caret position in the active file - this.currentCaretPosition = 0; - // The position of the end of the current selection, or -1 if nothing is selected - this.selectionEnd = -1; - this.lastKnownMarker = ""; - // Whether or not we should format on keystrokes - this.enableFormatting = true; - this.inputFiles = ts.createMap(); // Map between inputFile's fileName and its content for easily looking up when resolving references - this.alignmentForExtraInfo = 50; - // Create a new Services Adapter - this.cancellationToken = new TestCancellationToken(); - var compilationOptions = convertGlobalOptionsToCompilerOptions(this.testData.globalOptions); - compilationOptions.skipDefaultLibCheck = true; - // Initialize the language service with all the scripts - var startResolveFileRef; - var configFileName; - for (var _i = 0, _b = testData.files; _i < _b.length; _i++) { - var file = _b[_i]; - // Create map between fileName and its content for easily looking up when resolveReference flag is specified - this.inputFiles.set(file.fileName, file.content); - if (isConfig(file)) { - var configJson = ts.parseConfigFileTextToJson(file.fileName, file.content); - if (configJson.config === undefined) { - throw new Error("Failed to parse test " + file.fileName + ": " + configJson.error.messageText); - } - // Extend our existing compiler options so that we can also support tsconfig only options - if (configJson.config.compilerOptions) { - var baseDirectory = ts.normalizePath(ts.getDirectoryPath(file.fileName)); - var tsConfig = ts.convertCompilerOptionsFromJson(configJson.config.compilerOptions, baseDirectory, file.fileName); - if (!tsConfig.errors || !tsConfig.errors.length) { - compilationOptions = ts.extend(compilationOptions, tsConfig.options); - } - } - configFileName = file.fileName; - } - if (!startResolveFileRef && file.fileOptions["ResolveReference" /* resolveReference */] === "true") { - startResolveFileRef = file; - } - else if (startResolveFileRef) { - // If entry point for resolving file references is already specified, report duplication error - throw new Error("There exists a Fourslash file which has resolveReference flag specified; remove duplicated resolveReference flag"); - } - } - if (configFileName) { - var baseDir = ts.normalizePath(ts.getDirectoryPath(configFileName)); - var files_2 = (_a = {}, _a[baseDir] = {}, _a); - this.inputFiles.forEach(function (data, path) { - var scriptInfo = new Harness.LanguageService.ScriptInfo(path, undefined, /*isRootFile*/ false); // TODO: GH#18217 - files_2[path] = new vfs.File(data, { meta: { scriptInfo: scriptInfo } }); - }); - var fs = new vfs.FileSystem(/*ignoreCase*/ true, { cwd: baseDir, files: files_2 }); - var host = new fakes.ParseConfigHost(fs); - var jsonSourceFile = ts.parseJsonText(configFileName, this.inputFiles.get(configFileName)); - compilationOptions = ts.parseJsonSourceFileConfigFileContent(jsonSourceFile, host, baseDir, compilationOptions, configFileName).options; - } - if (compilationOptions.typeRoots) { - compilationOptions.typeRoots = compilationOptions.typeRoots.map(function (p) { return ts.getNormalizedAbsolutePath(p, _this.basePath); }); - } - var languageServiceAdapter = this.getLanguageServiceAdapter(testType, this.cancellationToken, compilationOptions); - this.languageServiceAdapterHost = languageServiceAdapter.getHost(); - this.languageService = memoWrap(languageServiceAdapter.getLanguageService(), this); // Wrap the LS to cache some expensive operations certain tests call repeatedly - if (startResolveFileRef) { - // Add the entry-point file itself into the languageServiceShimHost - this.languageServiceAdapterHost.addScript(startResolveFileRef.fileName, startResolveFileRef.content, /*isRootFile*/ true); - var resolvedResult = languageServiceAdapter.getPreProcessedFileInfo(startResolveFileRef.fileName, startResolveFileRef.content); - var referencedFiles = resolvedResult.referencedFiles; - var importedFiles = resolvedResult.importedFiles; - // Add triple reference files into language-service host - ts.forEach(referencedFiles, function (referenceFile) { - // Fourslash insert tests/cases/fourslash into inputFile.unitName so we will properly append the same base directory to refFile path - var referenceFilePath = _this.basePath + "/" + referenceFile.fileName; - _this.addMatchedInputFile(referenceFilePath, /* extensions */ undefined); - }); - // Add import files into language-service host - ts.forEach(importedFiles, function (importedFile) { - // Fourslash insert tests/cases/fourslash into inputFile.unitName and import statement doesn't require ".ts" - // so convert them before making appropriate comparison - var importedFilePath = _this.basePath + "/" + importedFile.fileName; - _this.addMatchedInputFile(importedFilePath, ts.getSupportedExtensions(compilationOptions)); - }); - // Check if no-default-lib flag is false and if so add default library - if (!resolvedResult.isLibFile) { - this.languageServiceAdapterHost.addScript(Harness.Compiler.defaultLibFileName, Harness.Compiler.getDefaultLibrarySourceFile().text, /*isRootFile*/ false); - } - } - else { - // resolveReference file-option is not specified then do not resolve any files and include all inputFiles - this.inputFiles.forEach(function (file, fileName) { - if (!Harness.isDefaultLibraryFile(fileName)) { - _this.languageServiceAdapterHost.addScript(fileName, file, /*isRootFile*/ true); - } - }); - if (!compilationOptions.noLib) { - this.languageServiceAdapterHost.addScript(Harness.Compiler.defaultLibFileName, Harness.Compiler.getDefaultLibrarySourceFile().text, /*isRootFile*/ false); - } - } - var _loop_3 = function (file) { - ts.forEach(file.symlinks, function (link) { - _this.languageServiceAdapterHost.vfs.mkdirpSync(vpath.dirname(link)); - _this.languageServiceAdapterHost.vfs.symlinkSync(file.fileName, link); - }); - }; - for (var _c = 0, _d = testData.files; _c < _d.length; _c++) { - var file = _d[_c]; - _loop_3(file); - } - this.formatCodeSettings = { - baseIndentSize: 0, - indentSize: 4, - tabSize: 4, - newLineCharacter: "\n", - convertTabsToSpaces: true, - indentStyle: ts.IndentStyle.Smart, - insertSpaceAfterCommaDelimiter: true, - insertSpaceAfterSemicolonInForStatements: true, - insertSpaceBeforeAndAfterBinaryOperators: true, - insertSpaceAfterConstructor: false, - insertSpaceAfterKeywordsInControlFlowStatements: true, - insertSpaceAfterFunctionKeywordForAnonymousFunctions: false, - insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false, - insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false, - insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true, - insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false, - insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces: false, - insertSpaceAfterTypeAssertion: false, - placeOpenBraceOnNewLineForFunctions: false, - placeOpenBraceOnNewLineForControlBlocks: false, - insertSpaceBeforeTypeAnnotation: false - }; - // Open the first file by default - this.openFile(0); - function memoWrap(ls, target) { - var cacheableMembers = [ - "getCompletionEntryDetails", - "getCompletionEntrySymbol", - "getQuickInfoAtPosition", - "getReferencesAtPosition", - "getDocumentHighlights", - ]; - var proxy = {}; - var _loop_4 = function (k) { - var key = k; - if (cacheableMembers.indexOf(key) === -1) { - proxy[key] = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return ls[key].apply(ls, args); - }; - return "continue"; - } - var memo = Utils.memoize(function (_version, _active, _caret, _selectEnd, _marker) { - var args = []; - for (var _i = 5; _i < arguments.length; _i++) { - args[_i - 5] = arguments[_i]; - } - return ls[key].apply(ls, args); - }, function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return args.join("|,|"); - }); - proxy[key] = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return memo.apply(void 0, [target.languageServiceAdapterHost.getScriptInfo(target.activeFile.fileName).version, - target.activeFile.fileName, - target.currentCaretPosition, - target.selectionEnd, - target.lastKnownMarker].concat(args)); - }; - }; - for (var k in ls) { - _loop_4(k); - } - return proxy; - } - } - TestState.getDisplayPartsJson = function (displayParts) { - var result = ""; - ts.forEach(displayParts, function (part) { - if (result) { - result += ",\n "; - } - else { - result = "[\n "; - } - result += JSON.stringify(part); - }); - if (result) { - result += "\n]"; - } - return result; - }; - // Add input file which has matched file name with the given reference-file path. - // This is necessary when resolveReference flag is specified - TestState.prototype.addMatchedInputFile = function (referenceFilePath, extensions) { - var inputFiles = this.inputFiles; - var languageServiceAdapterHost = this.languageServiceAdapterHost; - var didAdd = tryAdd(referenceFilePath); - if (extensions && !didAdd) { - ts.forEach(extensions, function (ext) { return tryAdd(referenceFilePath + ext); }); - } - function tryAdd(path) { - var inputFile = inputFiles.get(path); - if (inputFile && !Harness.isDefaultLibraryFile(path)) { - languageServiceAdapterHost.addScript(path, inputFile, /*isRootFile*/ true); - return true; - } - } - }; - TestState.prototype.getLanguageServiceAdapter = function (testType, cancellationToken, compilationOptions) { - switch (testType) { - case 0 /* Native */: - return new Harness.LanguageService.NativeLanguageServiceAdapter(cancellationToken, compilationOptions); - case 1 /* Shims */: - return new Harness.LanguageService.ShimLanguageServiceAdapter(/*preprocessToResolve*/ false, cancellationToken, compilationOptions); - case 2 /* ShimsWithPreprocess */: - return new Harness.LanguageService.ShimLanguageServiceAdapter(/*preprocessToResolve*/ true, cancellationToken, compilationOptions); - case 3 /* Server */: - return new Harness.LanguageService.ServerLanguageServiceAdapter(cancellationToken, compilationOptions); - default: - throw new Error("Unknown FourSlash test type: "); - } - }; - TestState.prototype.getFileContent = function (fileName) { - var script = this.languageServiceAdapterHost.getScriptInfo(fileName); - return script.content; - }; - // Entry points from fourslash.ts - TestState.prototype.goToMarker = function (name) { - if (name === void 0) { name = ""; } - var marker = ts.isString(name) ? this.getMarkerByName(name) : name; - if (this.activeFile.fileName !== marker.fileName) { - this.openFile(marker.fileName); - } - var content = this.getFileContent(marker.fileName); - if (marker.position === -1 || marker.position > content.length) { - throw new Error("Marker \"" + name + "\" has been invalidated by unrecoverable edits to the file."); - } - var mName = ts.isString(name) ? name : this.markerName(marker); - this.lastKnownMarker = mName; - this.goToPosition(marker.position); - }; - TestState.prototype.goToEachMarker = function (markers, action) { - assert(markers.length); - for (var i = 0; i < markers.length; i++) { - this.goToMarker(markers[i]); - action(markers[i], i); - } - }; - TestState.prototype.goToEachRange = function (action) { - var ranges = this.getRanges(); - assert(ranges.length); - for (var _i = 0, ranges_1 = ranges; _i < ranges_1.length; _i++) { - var range = ranges_1[_i]; - this.selectRange(range); - action(); - } - }; - TestState.prototype.markerName = function (m) { - return ts.forEachEntry(this.testData.markerPositions, function (marker, name) { - if (marker === m) { - return name; - } - }); - }; - TestState.prototype.goToPosition = function (pos) { - this.currentCaretPosition = pos; - this.selectionEnd = -1; - }; - TestState.prototype.select = function (startMarker, endMarker) { - var start = this.getMarkerByName(startMarker), end = this.getMarkerByName(endMarker); - ts.Debug.assert(start.fileName === end.fileName); - if (this.activeFile.fileName !== start.fileName) { - this.openFile(start.fileName); - } - this.goToPosition(start.position); - this.selectionEnd = end.position; - }; - TestState.prototype.selectRange = function (range) { - this.goToRangeStart(range); - this.selectionEnd = range.end; - }; - TestState.prototype.moveCaretRight = function (count) { - if (count === void 0) { count = 1; } - this.currentCaretPosition += count; - this.currentCaretPosition = Math.min(this.currentCaretPosition, this.getFileContent(this.activeFile.fileName).length); - this.selectionEnd = -1; - }; - // Opens a file given its 0-based index or fileName - TestState.prototype.openFile = function (indexOrName, content, scriptKindName) { - var fileToOpen = this.findFile(indexOrName); - fileToOpen.fileName = ts.normalizeSlashes(fileToOpen.fileName); - this.activeFile = fileToOpen; - // Let the host know that this file is now open - this.languageServiceAdapterHost.openFile(fileToOpen.fileName, content, scriptKindName); - }; - TestState.prototype.verifyErrorExistsBetweenMarkers = function (startMarkerName, endMarkerName, shouldExist) { - var startMarker = this.getMarkerByName(startMarkerName); - var endMarker = this.getMarkerByName(endMarkerName); - var predicate = function (errorMinChar, errorLimChar, startPos, endPos) { - return ((errorMinChar === startPos) && (errorLimChar === endPos)) ? true : false; - }; - var exists = this.anyErrorInRange(predicate, startMarker, endMarker); - if (exists !== shouldExist) { - this.printErrorLog(shouldExist, this.getAllDiagnostics()); - throw new Error((shouldExist ? "Expected" : "Did not expect") + " failure between markers: '" + startMarkerName + "', '" + endMarkerName + "'"); - } - }; - TestState.prototype.raiseError = function (message) { - throw new Error(this.messageAtLastKnownMarker(message)); - }; - TestState.prototype.messageAtLastKnownMarker = function (message) { - var locationDescription = this.lastKnownMarker ? this.lastKnownMarker : this.getLineColStringAtPosition(this.currentCaretPosition); - return "At " + locationDescription + ": " + message; - }; - TestState.prototype.assertionMessageAtLastKnownMarker = function (msg) { - return "\nMarker: " + this.lastKnownMarker + "\nChecking: " + msg + "\n\n"; - }; - TestState.prototype.getDiagnostics = function (fileName, includeSuggestions) { - if (includeSuggestions === void 0) { includeSuggestions = false; } - return this.languageService.getSyntacticDiagnostics(fileName).concat(this.languageService.getSemanticDiagnostics(fileName), (includeSuggestions ? this.languageService.getSuggestionDiagnostics(fileName) : ts.emptyArray)); - }; - TestState.prototype.getAllDiagnostics = function () { - var _this = this; - return ts.flatMap(this.languageServiceAdapterHost.getFilenames(), function (fileName) { - return ts.isAnySupportedFileExtension(fileName) ? _this.getDiagnostics(fileName) : []; - }); - }; - TestState.prototype.verifyErrorExistsAfterMarker = function (markerName, shouldExist, after) { - var marker = this.getMarkerByName(markerName); - var predicate; - if (after) { - predicate = function (errorMinChar, errorLimChar, startPos) { - return ((errorMinChar >= startPos) && (errorLimChar >= startPos)) ? true : false; - }; - } - else { - predicate = function (errorMinChar, errorLimChar, startPos) { - return ((errorMinChar <= startPos) && (errorLimChar <= startPos)) ? true : false; - }; - } - var exists = this.anyErrorInRange(predicate, marker); - var diagnostics = this.getAllDiagnostics(); - if (exists !== shouldExist) { - this.printErrorLog(shouldExist, diagnostics); - throw new Error((shouldExist ? "Expected" : "Did not expect") + " failure at marker '" + markerName + "'"); - } - }; - TestState.prototype.anyErrorInRange = function (predicate, startMarker, endMarker) { - return this.getDiagnostics(startMarker.fileName).some(function (_a) { - var start = _a.start, length = _a.length; - return predicate(start, start + length, startMarker.position, endMarker === undefined ? undefined : endMarker.position); - }); // TODO: GH#18217 - }; - TestState.prototype.printErrorLog = function (expectErrors, errors) { - if (expectErrors) { - Harness.IO.log("Expected error not found. Error list is:"); - } - else { - Harness.IO.log("Unexpected error(s) found. Error list is:"); - } - for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) { - var _a = errors_1[_i], start = _a.start, length = _a.length, messageText = _a.messageText, file = _a.file; - Harness.IO.log(" " + this.formatRange(file, start, length) + // TODO: GH#18217 - ", message: " + ts.flattenDiagnosticMessageText(messageText, Harness.IO.newLine()) + "\n"); - } - }; - TestState.prototype.formatRange = function (file, start, length) { - if (file) { - return "from: " + this.formatLineAndCharacterOfPosition(file, start) + ", to: " + this.formatLineAndCharacterOfPosition(file, start + length); - } - return "global"; - }; - TestState.prototype.formatLineAndCharacterOfPosition = function (file, pos) { - if (file) { - var _a = ts.getLineAndCharacterOfPosition(file, pos), line = _a.line, character = _a.character; - return line + ":" + character; - } - return "global"; - }; - TestState.prototype.formatPosition = function (file, pos) { - if (file) { - return file.fileName + "@" + pos; - } - return "global"; - }; - TestState.prototype.verifyNoErrors = function () { - var _this = this; - ts.forEachKey(this.inputFiles, function (fileName) { - if (!ts.isAnySupportedFileExtension(fileName) - || !_this.getProgram().getCompilerOptions().allowJs && !ts.extensionIsTypeScript(ts.extensionFromPath(fileName))) - return; - var errors = _this.getDiagnostics(fileName).filter(function (e) { return e.category !== ts.DiagnosticCategory.Suggestion; }); - if (errors.length) { - _this.printErrorLog(/*expectErrors*/ false, errors); - var error = errors[0]; - _this.raiseError("Found an error: " + _this.formatPosition(error.file, error.start) + ": " + error.messageText); - } - }); - }; - TestState.prototype.verifyNumberOfErrorsInCurrentFile = function (expected) { - var errors = this.getDiagnostics(this.activeFile.fileName); - var actual = errors.length; - if (actual !== expected) { - this.printErrorLog(/*expectErrors*/ false, errors); - var errorMsg = "Actual number of errors (" + actual + ") does not match expected number (" + expected + ")"; - Harness.IO.log(errorMsg); - this.raiseError(errorMsg); - } - }; - TestState.prototype.verifyEval = function (expr, value) { - var emit = this.languageService.getEmitOutput(this.activeFile.fileName); - if (emit.outputFiles.length !== 1) { - throw new Error("Expected exactly one output from emit of " + this.activeFile.fileName); - } - var evaluation = new Function(emit.outputFiles[0].text + ";\r\nreturn (" + expr + ");")(); - if (evaluation !== value) { - this.raiseError("Expected evaluation of expression \"" + expr + "\" to equal \"" + value + "\", but got \"" + evaluation + "\""); - } - }; - TestState.prototype.verifyGoToDefinitionIs = function (endMarker) { - var _this = this; - this.verifyGoToXWorker(toArray(endMarker), function () { return _this.getGoToDefinition(); }); - }; - TestState.prototype.verifyGoToDefinition = function (arg0, endMarkerNames) { - var _this = this; - this.verifyGoToX(arg0, endMarkerNames, function () { return _this.getGoToDefinitionAndBoundSpan(); }); - }; - TestState.prototype.getGoToDefinition = function () { - return this.languageService.getDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition); - }; - TestState.prototype.getGoToDefinitionAndBoundSpan = function () { - return this.languageService.getDefinitionAndBoundSpan(this.activeFile.fileName, this.currentCaretPosition); - }; - TestState.prototype.verifyGoToType = function (arg0, endMarkerNames) { - var _this = this; - this.verifyGoToX(arg0, endMarkerNames, function () { - return _this.languageService.getTypeDefinitionAtPosition(_this.activeFile.fileName, _this.currentCaretPosition); - }); - }; - TestState.prototype.verifyGoToX = function (arg0, endMarkerNames, getDefs) { - if (endMarkerNames) { - this.verifyGoToXPlain(arg0, endMarkerNames, getDefs); - } - else if (ts.isArray(arg0)) { - var pairs = arg0; - for (var _i = 0, pairs_1 = pairs; _i < pairs_1.length; _i++) { - var _a = pairs_1[_i], start = _a[0], end = _a[1]; - this.verifyGoToXPlain(start, end, getDefs); - } - } - else { - var obj = arg0; - for (var startMarkerName in obj) { - if (ts.hasProperty(obj, startMarkerName)) { - this.verifyGoToXPlain(startMarkerName, obj[startMarkerName], getDefs); - } - } - } - }; - TestState.prototype.verifyGoToXPlain = function (startMarkerNames, endMarkerNames, getDefs) { - for (var _i = 0, _a = toArray(startMarkerNames); _i < _a.length; _i++) { - var start = _a[_i]; - this.verifyGoToXSingle(start, endMarkerNames, getDefs); - } - }; - TestState.prototype.verifyGoToDefinitionForMarkers = function (markerNames) { - var _this = this; - for (var _i = 0, markerNames_1 = markerNames; _i < markerNames_1.length; _i++) { - var markerName = markerNames_1[_i]; - this.verifyGoToXSingle(markerName + "Reference", markerName + "Definition", function () { return _this.getGoToDefinition(); }); - } - }; - TestState.prototype.verifyGoToXSingle = function (startMarkerName, endMarkerNames, getDefs) { - this.goToMarker(startMarkerName); - this.verifyGoToXWorker(toArray(endMarkerNames), getDefs, startMarkerName); - }; - TestState.prototype.verifyGoToXWorker = function (endMarkers, getDefs, startMarkerName) { - var _this = this; - var defs = getDefs(); - var definitions; - var testName; - if (!defs || ts.isArray(defs)) { - definitions = defs || []; - testName = "goToDefinitions"; - } - else { - this.verifyDefinitionTextSpan(defs, startMarkerName); - definitions = defs.definitions; // TODO: GH#18217 - testName = "goToDefinitionsAndBoundSpan"; - } - if (endMarkers.length !== definitions.length) { - this.raiseError(testName + " failed - expected to find " + endMarkers.length + " definitions but got " + definitions.length); - } - ts.zipWith(endMarkers, definitions, function (endMarker, definition, i) { - var marker = _this.getMarkerByName(endMarker); - if (marker.fileName !== definition.fileName || marker.position !== definition.textSpan.start) { - _this.raiseError(testName + " failed for definition " + endMarker + " (" + i + "): expected " + marker.fileName + " at " + marker.position + ", got " + definition.fileName + " at " + definition.textSpan.start); - } - }); - }; - TestState.prototype.verifyDefinitionTextSpan = function (defs, startMarkerName) { - var _this = this; - var range = this.testData.ranges.find(function (range) { return _this.markerName(range.marker) === startMarkerName; }); - if (!range && !defs.textSpan) { - return; - } - if (!range) { - this.raiseError("goToDefinitionsAndBoundSpan failed - found a TextSpan " + JSON.stringify(defs.textSpan) + " when it wasn't expected."); - } - else if (defs.textSpan.start !== range.pos || defs.textSpan.length !== range.end - range.pos) { - var expected = { - start: range.pos, length: range.end - range.pos - }; - this.raiseError("goToDefinitionsAndBoundSpan failed - expected to find TextSpan " + JSON.stringify(expected) + " but got " + JSON.stringify(defs.textSpan)); - } - }; - TestState.prototype.verifyGetEmitOutputForCurrentFile = function (expected) { - var emit = this.languageService.getEmitOutput(this.activeFile.fileName); - if (emit.outputFiles.length !== 1) { - throw new Error("Expected exactly one output from emit of " + this.activeFile.fileName); - } - var actual = emit.outputFiles[0].text; - if (actual !== expected) { - this.raiseError("Expected emit output to be \"" + expected + "\", but got \"" + actual + "\""); - } - }; - TestState.prototype.verifyGetEmitOutputContentsForCurrentFile = function (expected) { - var emit = this.languageService.getEmitOutput(this.activeFile.fileName); - assert.equal(emit.outputFiles.length, expected.length, "Number of emit output files"); - ts.zipWith(emit.outputFiles, expected, function (outputFile, expected) { - assert.equal(outputFile.name, expected.name, "FileName"); - assert.equal(outputFile.text, expected.text, "Content"); - }); - }; - TestState.prototype.verifyCompletionListCount = function (expectedCount, negative) { - if (expectedCount === 0 && negative) { - this.verifyCompletionListIsEmpty(/*negative*/ false); - return; - } - var members = this.getCompletionListAtCaret(); - if (members) { - var match = members.entries.length === expectedCount; - if ((!match && !negative) || (match && negative)) { - this.raiseError("Member list count was " + members.entries.length + ". Expected " + expectedCount); - } - } - else if (expectedCount) { - this.raiseError("Member list count was 0. Expected " + expectedCount); - } - }; - TestState.prototype.verifyCompletionListItemsCountIsGreaterThan = function (count, negative) { - var completions = this.getCompletionListAtCaret(); - var itemsCount = completions ? completions.entries.length : 0; - if (negative) { - if (itemsCount > count) { - this.raiseError("Expected completion list items count to not be greater than " + count + ", but is actually " + itemsCount); - } - } - else { - if (itemsCount <= count) { - this.raiseError("Expected completion list items count to be greater than " + count + ", but is actually " + itemsCount); - } - } - }; - TestState.prototype.verifyCompletionListStartsWithItemsInOrder = function (items) { - if (items.length === 0) { - return; - } - var entries = this.getCompletionListAtCaret().entries; - assert.isTrue(items.length <= entries.length, "Amount of expected items in completion list [ " + items.length + " ] is greater than actual number of items in list [ " + entries.length + " ]"); - ts.zipWith(entries, items, function (entry, item) { - assert.equal(entry.name, item, "Unexpected item in completion list"); - }); - }; - TestState.prototype.noItemsWithSameNameButDifferentKind = function () { - var completions = this.getCompletionListAtCaret(); - var uniqueItems = ts.createMap(); - for (var _i = 0, _a = completions.entries; _i < _a.length; _i++) { - var item = _a[_i]; - var uniqueItem = uniqueItems.get(item.name); - if (!uniqueItem) { - uniqueItems.set(item.name, item.kind); - } - else { - assert.equal(item.kind, uniqueItem, "Items should have the same kind, got " + item.kind + " and " + uniqueItem); - } - } - }; - TestState.prototype.verifyCompletionListIsEmpty = function (negative) { - var completions = this.getCompletionListAtCaret(); - if ((!completions || completions.entries.length === 0) && negative) { - this.raiseError("Completion list is empty at caret at position " + this.activeFile.fileName + " " + this.currentCaretPosition); - } - else if (completions && completions.entries.length !== 0 && !negative) { - this.raiseError("Completion list is not empty at caret at position " + this.activeFile.fileName + " " + this.currentCaretPosition + "\n" + - ("Completion List contains: " + stringify(completions.entries.map(function (e) { return e.name; })))); - } - }; - TestState.prototype.verifyCompletionListAllowsNewIdentifier = function (negative) { - var completions = this.getCompletionListAtCaret(); - if ((completions && !completions.isNewIdentifierLocation) && !negative) { - this.raiseError("Expected builder completion entry"); - } - else if ((completions && completions.isNewIdentifierLocation) && negative) { - this.raiseError("Un-expected builder completion entry"); - } - }; - TestState.prototype.verifyCompletionListIsGlobal = function (expected) { - var completions = this.getCompletionListAtCaret(); - if (completions && completions.isGlobalCompletion !== expected) { - this.raiseError("verifyCompletionListIsGlobal failed - expected result to be " + completions.isGlobalCompletion); - } - }; - TestState.prototype.verifyCompletions = function (options) { - if (options.marker === undefined) { - this.verifyCompletionsWorker(options); - } - else { - for (var _i = 0, _a = toArray(options.marker); _i < _a.length; _i++) { - var marker = _a[_i]; - this.goToMarker(marker); - this.verifyCompletionsWorker(options); - } - } - }; - TestState.prototype.verifyCompletionsWorker = function (options) { - var actualCompletions = this.getCompletionListAtCaret(__assign({}, options.preferences, { triggerCharacter: options.triggerCharacter })); - if (!actualCompletions) { - if (options.exact === undefined) - return; - this.raiseError("No completions at position '" + this.currentCaretPosition + "'."); - } - if (actualCompletions.isNewIdentifierLocation !== (options.isNewIdentifierLocation || false)) { - this.raiseError("Expected 'isNewIdentifierLocation' to be " + (options.isNewIdentifierLocation || false) + ", got " + actualCompletions.isNewIdentifierLocation); - } - var actualByName = ts.createMap(); - var _loop_5 = function (entry) { - if (actualByName.has(entry.name)) { - // TODO: GH#23587 - if (entry.name !== "undefined" && entry.name !== "require") - this_1.raiseError("Duplicate (" + actualCompletions.entries.filter(function (a) { return a.name === entry.name; }).length + ") completions for " + entry.name); - } - else { - actualByName.set(entry.name, entry); - } - }; - var this_1 = this; - for (var _i = 0, _a = actualCompletions.entries; _i < _a.length; _i++) { - var entry = _a[_i]; - _loop_5(entry); - } - if ("exact" in options) { - ts.Debug.assert(!("includes" in options) && !("excludes" in options)); - if (options.exact === undefined) - throw this.raiseError("Expected no completions"); - this.verifyCompletionsAreExactly(actualCompletions.entries, toArray(options.exact)); - } - else { - if (options.includes) { - for (var _b = 0, _c = toArray(options.includes); _b < _c.length; _b++) { - var include = _c[_b]; - var name = typeof include === "string" ? include : include.name; - var found = actualByName.get(name); - if (!found) - throw this.raiseError("No completion " + name + " found"); - this.verifyCompletionEntry(found, include); - } - } - if (options.excludes) { - for (var _d = 0, _e = toArray(options.excludes); _d < _e.length; _d++) { - var exclude = _e[_d]; - if (typeof exclude === "string") { - if (actualByName.has(exclude)) { - this.raiseError("Did not expect to get a completion named " + exclude); - } - } - else { - var found = actualByName.get(exclude.name); - if (found && found.source === exclude.source) { - this.raiseError("Did not expect to get a completion named " + exclude.name + " with source " + exclude.source); - } - } - } - } - } - }; - TestState.prototype.verifyCompletionEntry = function (actual, expected) { - var _a = typeof expected === "string" - ? { insertText: undefined, replacementSpan: undefined, hasAction: undefined, isRecommended: undefined, kind: undefined, text: undefined, documentation: undefined, sourceDisplay: undefined } - : expected, insertText = _a.insertText, replacementSpan = _a.replacementSpan, hasAction = _a.hasAction, isRecommended = _a.isRecommended, kind = _a.kind, text = _a.text, documentation = _a.documentation, sourceDisplay = _a.sourceDisplay; - if (actual.insertText !== insertText) { - this.raiseError("Expected completion insert text to be " + insertText + ", got " + actual.insertText); - } - var convertedReplacementSpan = replacementSpan && ts.createTextSpanFromRange(replacementSpan); - try { - assert.deepEqual(actual.replacementSpan, convertedReplacementSpan); - } - catch (_b) { - this.raiseError("Expected completion replacementSpan to be " + stringify(convertedReplacementSpan) + ", got " + stringify(actual.replacementSpan)); - } - if (kind !== undefined) - assert.equal(actual.kind, kind); - assert.equal(actual.hasAction, hasAction); - assert.equal(actual.isRecommended, isRecommended); - if (text) { - var actualDetails = this.getCompletionEntryDetails(actual.name, actual.source); - assert.equal(ts.displayPartsToString(actualDetails.displayParts), text); - assert.equal(ts.displayPartsToString(actualDetails.documentation), documentation || ""); - // TODO: GH#23587 - // assert.equal(actualDetails.kind, actual.kind); - assert.equal(actualDetails.kindModifiers, actual.kindModifiers); - assert.equal(actualDetails.source && ts.displayPartsToString(actualDetails.source), sourceDisplay); - } - else { - assert(documentation === undefined && sourceDisplay === undefined, "If specifying completion details, should specify 'text'"); - } - }; - TestState.prototype.verifyCompletionsAreExactly = function (actual, expected) { - var _this = this; - if (actual.length !== expected.length) { - this.raiseError("Expected " + expected.length + " completions, got " + actual.length + " (" + actual.map(function (a) { return a.name; }) + ")."); - } - ts.zipWith(actual, expected, function (completion, expectedCompletion, index) { - var name = typeof expectedCompletion === "string" ? expectedCompletion : expectedCompletion.name; - if (completion.name !== name) { - _this.raiseError("Expected completion at index " + index + " to be " + name + ", got " + completion.name); - } - _this.verifyCompletionEntry(completion, expectedCompletion); - }); - }; - TestState.prototype.verifyCompletionsAt = function (markerName, expected, options) { - this.verifyCompletions({ - marker: markerName, - exact: expected, - isNewIdentifierLocation: options && options.isNewIdentifierLocation, - preferences: options, - triggerCharacter: options && options.triggerCharacter, - }); - }; - TestState.prototype.verifyCompletionListContains = function (entryId, text, documentation, kind, spanIndex, hasAction, options) { - var completions = this.getCompletionListAtCaret(options); - if (completions) { - this.assertItemInCompletionList(completions.entries, entryId, text, documentation, kind, spanIndex, hasAction, options); - } - else { - this.raiseError("No completions at position '" + this.currentCaretPosition + "' when looking for '" + JSON.stringify(entryId) + "'."); - } - }; - /** - * Verify that the completion list does NOT contain the given symbol. - * The symbol is considered matched with the symbol in the list if and only if all given parameters must matched. - * When any parameter is omitted, the parameter is ignored during comparison and assumed that the parameter with - * that property of the symbol in the list. - * @param symbol the name of symbol - * @param expectedText the text associated with the symbol - * @param expectedDocumentation the documentation text associated with the symbol - * @param expectedKind the kind of symbol (see ScriptElementKind) - * @param spanIndex the index of the range that the completion item's replacement text span should match - */ - TestState.prototype.verifyCompletionListDoesNotContain = function (entryId, expectedText, expectedDocumentation, expectedKind, spanIndex, options) { - var _this = this; - var replacementSpan; - if (spanIndex !== undefined) { - replacementSpan = this.getTextSpanForRangeAtIndex(spanIndex); - } - var completions = this.getCompletionListAtCaret(options); - if (completions) { - var filterCompletions = completions.entries.filter(function (e) { return e.name === entryId.name && e.source === entryId.source; }); - filterCompletions = expectedKind ? filterCompletions.filter(function (e) { return e.kind === expectedKind || (typeof expectedKind === "object" && e.kind === expectedKind.kind); }) : filterCompletions; - filterCompletions = filterCompletions.filter(function (entry) { - var details = _this.getCompletionEntryDetails(entry.name); - var documentation = details && ts.displayPartsToString(details.documentation); - var text = details && ts.displayPartsToString(details.displayParts); - // If any of the expected values are undefined, assume that users don't - // care about them. - if (replacementSpan && !TestState.textSpansEqual(replacementSpan, entry.replacementSpan)) { - return false; - } - else if (expectedText && text !== expectedText) { - return false; - } - else if (expectedDocumentation && documentation !== expectedDocumentation) { - return false; - } - return true; - }); - if (filterCompletions.length !== 0) { - // After filtered using all present criterion, if there are still symbol left in the list - // then these symbols must meet the criterion for Not supposed to be in the list. So we - // raise an error - var error = "Completion list did contain '" + JSON.stringify(entryId) + "'."; - var details = this.getCompletionEntryDetails(filterCompletions[0].name); - if (expectedText) { - error += "Expected text: " + expectedText + " to equal: " + ts.displayPartsToString(details.displayParts) + "."; - } - if (expectedDocumentation) { - error += "Expected documentation: " + expectedDocumentation + " to equal: " + ts.displayPartsToString(details.documentation) + "."; - } - if (expectedKind) { - error += "Expected kind: " + expectedKind + " to equal: " + filterCompletions[0].kind + "."; - } - else { - error += "kind: " + filterCompletions[0].kind + "."; - } - if (replacementSpan) { - var spanText = filterCompletions[0].replacementSpan ? stringify(filterCompletions[0].replacementSpan) : undefined; - error += "Expected replacement span: " + stringify(replacementSpan) + " to equal: " + spanText + "."; - } - this.raiseError(error); - } - } - }; - TestState.prototype.verifyCompletionEntryDetails = function (entryName, expectedText, expectedDocumentation, kind, tags) { - var _this = this; - var details = this.getCompletionEntryDetails(entryName); - assert(details, "no completion entry available"); - assert.equal(ts.displayPartsToString(details.displayParts), expectedText, this.assertionMessageAtLastKnownMarker("completion entry details text")); - if (expectedDocumentation !== undefined) { - assert.equal(ts.displayPartsToString(details.documentation), expectedDocumentation, this.assertionMessageAtLastKnownMarker("completion entry documentation")); - } - if (kind !== undefined) { - assert.equal(details.kind, kind, this.assertionMessageAtLastKnownMarker("completion entry kind")); - } - if (tags !== undefined) { - assert.equal(details.tags.length, tags.length, this.messageAtLastKnownMarker("QuickInfo tags")); - ts.zipWith(tags, details.tags, function (expectedTag, actualTag) { - assert.equal(actualTag.name, expectedTag.name); - assert.equal(actualTag.text, expectedTag.text, _this.messageAtLastKnownMarker("QuickInfo tag " + actualTag.name)); - }); - } - }; - TestState.prototype.getProgram = function () { - return this._program || (this._program = this.languageService.getProgram()); // TODO: GH#18217 - }; - TestState.prototype.getChecker = function () { - return this._checker || (this._checker = this.getProgram().getTypeChecker()); - }; - TestState.prototype.getSourceFile = function () { - var fileName = this.activeFile.fileName; - var result = this.getProgram().getSourceFile(fileName); - if (!result) { - throw new Error("Could not get source file " + fileName); - } - return result; - }; - TestState.prototype.getNode = function () { - return ts.getTouchingPropertyName(this.getSourceFile(), this.currentCaretPosition); - }; - TestState.prototype.goToAndGetNode = function (range) { - this.goToRangeStart(range); - var node = this.getNode(); - this.verifyRange("touching property name", range, node); - return node; - }; - TestState.prototype.verifyRange = function (desc, expected, actual) { - var actualStart = actual.getStart(); - var actualEnd = actual.getEnd(); - if (actualStart !== expected.pos || actualEnd !== expected.end) { - this.raiseError(desc + " should be " + expected.pos + "-" + expected.end + ", got " + actualStart + "-" + actualEnd); - } - }; - TestState.prototype.verifySymbol = function (symbol, declarationRanges) { - var _this = this; - var declarations = symbol.declarations; - if (declarations.length !== declarationRanges.length) { - this.raiseError("Expected to get " + declarationRanges.length + " declarations, got " + declarations.length); - } - ts.zipWith(declarations, declarationRanges, function (decl, range) { - _this.verifyRange("symbol declaration", range, decl); - }); - }; - TestState.prototype.verifySymbolAtLocation = function (startRange, declarationRanges) { - var node = this.goToAndGetNode(startRange); - var symbol = this.getChecker().getSymbolAtLocation(node); - if (!symbol) { - this.raiseError("Could not get symbol at location"); - } - this.verifySymbol(symbol, declarationRanges); - }; - TestState.prototype.symbolsInScope = function (range) { - var node = this.goToAndGetNode(range); - return this.getChecker().getSymbolsInScope(node, 67216319 /* Value */ | 67901928 /* Type */ | 1920 /* Namespace */); - }; - TestState.prototype.setTypesRegistry = function (map) { - this.languageServiceAdapterHost.typesRegistry = ts.createMapFromTemplate(map); - }; - TestState.prototype.verifyTypeOfSymbolAtLocation = function (range, symbol, expected) { - var node = this.goToAndGetNode(range); - var checker = this.getChecker(); - var type = checker.getTypeOfSymbolAtLocation(symbol, node); - var actual = checker.typeToString(type); - if (actual !== expected) { - this.raiseError("Expected: '" + expected + "', actual: '" + actual + "'"); - } - }; - TestState.prototype.verifyDocumentHighlightsRespectFilesList = function (files) { - var startFile = this.activeFile.fileName; - var _loop_6 = function (fileName) { - var searchFileNames = startFile === fileName ? [startFile] : [startFile, fileName]; - var highlights = this_2.getDocumentHighlightsAtCurrentPosition(searchFileNames); - if (!highlights.every(function (dh) { return ts.contains(searchFileNames, dh.fileName); })) { - this_2.raiseError("When asking for document highlights only in files " + searchFileNames + ", got document highlights in " + unique(highlights, function (dh) { return dh.fileName; })); - } - }; - var this_2 = this; - for (var _i = 0, files_3 = files; _i < files_3.length; _i++) { - var fileName = files_3[_i]; - _loop_6(fileName); - } - }; - TestState.prototype.verifyReferenceGroups = function (starts, parts) { - var fullExpected = ts.map(parts, function (_a) { - var definition = _a.definition, ranges = _a.ranges; - return ({ - definition: typeof definition === "string" ? definition : __assign({}, definition, { range: ts.createTextSpanFromRange(definition.range) }), - references: ranges.map(function (r) { - var _a = (r.marker && r.marker.data || {}), _b = _a.isWriteAccess, isWriteAccess = _b === void 0 ? false : _b, _c = _a.isDefinition, isDefinition = _c === void 0 ? false : _c, isInString = _a.isInString; - return __assign({ fileName: r.fileName, textSpan: ts.createTextSpanFromRange(r), isWriteAccess: isWriteAccess, - isDefinition: isDefinition }, (isInString ? { isInString: true } : undefined)); - }), - }); - }); - for (var _i = 0, _a = toArray(starts); _i < _a.length; _i++) { - var start = _a[_i]; - if (typeof start === "string") { - this.goToMarker(start); - } - else { - this.goToRangeStart(start); - } - var fullActual = ts.map(this.findReferencesAtCaret(), function (_a, i) { - var definition = _a.definition, references = _a.references; - var text = definition.displayParts.map(function (d) { return d.text; }).join(""); - return { - definition: fullExpected.length > i && typeof fullExpected[i].definition === "string" ? text : { text: text, range: definition.textSpan }, - references: references, - }; - }); - this.assertObjectsEqual(fullActual, fullExpected); - if (parts) { - this.verifyDocumentHighlightsRespectFilesList(unique(ts.flatMap(parts, function (p) { return p.ranges; }), function (r) { return r.fileName; })); - } - } - }; - TestState.prototype.verifyNoReferences = function (markerNameOrRange) { - if (markerNameOrRange) { - if (ts.isString(markerNameOrRange)) { - this.goToMarker(markerNameOrRange); - } - else { - this.goToRangeStart(markerNameOrRange); - } - } - var refs = this.getReferencesAtCaret(); - if (refs && refs.length) { - this.raiseError("Expected getReferences to fail, but saw references: " + stringify(refs)); - } - }; - // Necessary to have this function since `findReferences` isn't implemented in `client.ts` - TestState.prototype.verifyGetReferencesForServerTest = function (expected) { - var refs = this.getReferencesAtCaret(); - assert.deepEqual(refs, expected); - }; - TestState.prototype.verifySingleReferenceGroup = function (definition, ranges) { - ranges = ranges || this.getRanges(); - this.verifyReferenceGroups(ranges, [{ definition: definition, ranges: ranges }]); - }; - TestState.prototype.assertObjectsEqual = function (fullActual, fullExpected, msgPrefix) { - var _this = this; - if (msgPrefix === void 0) { msgPrefix = ""; } - var recur = function (actual, expected, path) { - var fail = function (msg) { - _this.raiseError(msgPrefix + " At " + path + ": " + msg + "\nExpected: " + stringify(fullExpected) + "\nActual: " + stringify(fullActual)); - }; - if ((actual === undefined) !== (expected === undefined)) { - fail("Expected " + expected + ", got " + actual); - } - for (var key in actual) { - if (ts.hasProperty(actual, key)) { - var ak = actual[key], ek = expected[key]; - if (typeof ak === "object" && typeof ek === "object") { - recur(ak, ek, path ? path + "." + key : key); - } - else if (ak !== ek) { - fail("Expected '" + key + "' to be '" + ek + "', got '" + ak + "'"); - } - } - } - for (var key in expected) { - if (ts.hasProperty(expected, key)) { - if (!ts.hasProperty(actual, key)) { - fail(msgPrefix + "Missing property '" + key + "'"); - } - } - } - }; - if (fullActual === undefined || fullExpected === undefined) { - if (fullActual === fullExpected) { - return; - } - this.raiseError(msgPrefix + "\nExpected: " + stringify(fullExpected) + "\nActual: " + stringify(fullActual)); - } - recur(fullActual, fullExpected, ""); - }; - TestState.prototype.verifyDisplayPartsOfReferencedSymbol = function (expected) { - var referencedSymbols = this.findReferencesAtCaret(); - if (referencedSymbols.length === 0) { - this.raiseError("No referenced symbols found at current caret position"); - } - else if (referencedSymbols.length > 1) { - this.raiseError("More than one referenced symbol found"); - } - assert.equal(TestState.getDisplayPartsJson(referencedSymbols[0].definition.displayParts), TestState.getDisplayPartsJson(expected), this.messageAtLastKnownMarker("referenced symbol definition display parts")); - }; - TestState.prototype.getCompletionListAtCaret = function (options) { - return this.languageService.getCompletionsAtPosition(this.activeFile.fileName, this.currentCaretPosition, options); - }; - TestState.prototype.getCompletionEntryDetails = function (entryName, source, preferences) { - return this.languageService.getCompletionEntryDetails(this.activeFile.fileName, this.currentCaretPosition, entryName, this.formatCodeSettings, source, preferences); - }; - TestState.prototype.getReferencesAtCaret = function () { - return this.languageService.getReferencesAtPosition(this.activeFile.fileName, this.currentCaretPosition); - }; - TestState.prototype.findReferencesAtCaret = function () { - return this.languageService.findReferences(this.activeFile.fileName, this.currentCaretPosition); - }; - TestState.prototype.getSyntacticDiagnostics = function (expected) { - var diagnostics = this.languageService.getSyntacticDiagnostics(this.activeFile.fileName); - this.testDiagnostics(expected, diagnostics, "error"); - }; - TestState.prototype.getSemanticDiagnostics = function (expected) { - var diagnostics = this.languageService.getSemanticDiagnostics(this.activeFile.fileName); - this.testDiagnostics(expected, diagnostics, "error"); - }; - TestState.prototype.getSuggestionDiagnostics = function (expected) { - this.testDiagnostics(expected, this.languageService.getSuggestionDiagnostics(this.activeFile.fileName), "suggestion"); - }; - TestState.prototype.testDiagnostics = function (expected, diagnostics, category) { - var _this = this; - assert.deepEqual(ts.realizeDiagnostics(diagnostics, "\n"), expected.map(function (e) { return (__assign({ message: e.message, category: category, code: e.code }, ts.createTextSpanFromRange(e.range || _this.getRanges()[0]), { reportsUnnecessary: e.reportsUnnecessary })); })); - }; - TestState.prototype.verifyQuickInfoAt = function (markerName, expectedText, expectedDocumentation) { - this.goToMarker(markerName); - this.verifyQuickInfoString(expectedText, expectedDocumentation); - }; - TestState.prototype.verifyQuickInfos = function (namesAndTexts) { - for (var name in namesAndTexts) { - if (ts.hasProperty(namesAndTexts, name)) { - var text = namesAndTexts[name]; - if (ts.isArray(text)) { - assert(text.length === 2); - var expectedText = text[0], expectedDocumentation = text[1]; - this.verifyQuickInfoAt(name, expectedText, expectedDocumentation); - } - else { - this.verifyQuickInfoAt(name, text); - } - } - } - }; - TestState.prototype.verifyQuickInfoString = function (expectedText, expectedDocumentation) { - if (expectedDocumentation === "") { - throw new Error("Use 'undefined' instead"); - } - var actualQuickInfo = this.languageService.getQuickInfoAtPosition(this.activeFile.fileName, this.currentCaretPosition); - var actualQuickInfoText = actualQuickInfo ? ts.displayPartsToString(actualQuickInfo.displayParts) : ""; - var actualQuickInfoDocumentation = actualQuickInfo ? ts.displayPartsToString(actualQuickInfo.documentation) : ""; - assert.equal(actualQuickInfoText, expectedText, this.messageAtLastKnownMarker("quick info text")); - assert.equal(actualQuickInfoDocumentation, expectedDocumentation || "", this.assertionMessageAtLastKnownMarker("quick info doc")); - }; - TestState.prototype.verifyQuickInfoDisplayParts = function (kind, kindModifiers, textSpan, displayParts, documentation, tags) { - var _this = this; - var actualQuickInfo = this.languageService.getQuickInfoAtPosition(this.activeFile.fileName, this.currentCaretPosition); - assert.equal(actualQuickInfo.kind, kind, this.messageAtLastKnownMarker("QuickInfo kind")); - assert.equal(actualQuickInfo.kindModifiers, kindModifiers, this.messageAtLastKnownMarker("QuickInfo kindModifiers")); - assert.equal(JSON.stringify(actualQuickInfo.textSpan), JSON.stringify(textSpan), this.messageAtLastKnownMarker("QuickInfo textSpan")); - assert.equal(TestState.getDisplayPartsJson(actualQuickInfo.displayParts), TestState.getDisplayPartsJson(displayParts), this.messageAtLastKnownMarker("QuickInfo displayParts")); - assert.equal(TestState.getDisplayPartsJson(actualQuickInfo.documentation), TestState.getDisplayPartsJson(documentation), this.messageAtLastKnownMarker("QuickInfo documentation")); - assert.equal(actualQuickInfo.tags.length, tags.length, this.messageAtLastKnownMarker("QuickInfo tags")); - ts.zipWith(tags, actualQuickInfo.tags, function (expectedTag, actualTag) { - assert.equal(expectedTag.name, actualTag.name); - assert.equal(expectedTag.text, actualTag.text, _this.messageAtLastKnownMarker("QuickInfo tag " + actualTag.name)); - }); - }; - TestState.prototype.verifyRangesAreRenameLocations = function (options) { - if (ts.isArray(options)) { - this.verifyRenameLocations(options, options); - } - else { - var ranges = options && options.ranges || this.getRanges(); - this.verifyRenameLocations(ranges, __assign({ ranges: ranges }, options)); - } - }; - TestState.prototype.verifyRenameLocations = function (startRanges, options) { - var _this = this; - var findInStrings, findInComments, ranges; - if (ts.isArray(options)) { - findInStrings = findInComments = false; - ranges = options; - } - else { - findInStrings = !!options.findInStrings; - findInComments = !!options.findInComments; - ranges = options.ranges; - } - var _loop_7 = function (startRange) { - this_3.goToRangeStart(startRange); - var renameInfo = this_3.languageService.getRenameInfo(this_3.activeFile.fileName, this_3.currentCaretPosition); - if (!renameInfo.canRename) { - this_3.raiseError("Expected rename to succeed, but it actually failed."); - return "break"; - } - var references = this_3.languageService.findRenameLocations(this_3.activeFile.fileName, this_3.currentCaretPosition, findInStrings, findInComments); - ranges = ranges || this_3.getRanges(); - if (!references) { - if (ranges.length !== 0) { - this_3.raiseError("Expected " + ranges.length + " rename locations; got none."); - } - return { value: void 0 }; - } - if (ranges.length !== references.length) { - this_3.raiseError("Rename location count does not match result.\n\nExpected: " + stringify(ranges) + "\n\nActual:" + stringify(references)); - } - ranges = ranges.sort(function (r1, r2) { return r1.pos - r2.pos; }); - references = references.sort(function (r1, r2) { return r1.textSpan.start - r2.textSpan.start; }); - ts.zipWith(references, ranges, function (reference, range) { - if (reference.textSpan.start !== range.pos || ts.textSpanEnd(reference.textSpan) !== range.end) { - _this.raiseError("Rename location results do not match.\n\nExpected: " + stringify(ranges) + "\n\nActual:" + stringify(references)); - } - }); - }; - var this_3 = this; - for (var _i = 0, _a = toArray(startRanges); _i < _a.length; _i++) { - var startRange = _a[_i]; - var state_1 = _loop_7(startRange); - if (typeof state_1 === "object") - return state_1.value; - if (state_1 === "break") - break; - } - }; - TestState.prototype.verifyQuickInfoExists = function (negative) { - var actualQuickInfo = this.languageService.getQuickInfoAtPosition(this.activeFile.fileName, this.currentCaretPosition); - if (negative) { - if (actualQuickInfo) { - this.raiseError("verifyQuickInfoExists failed. Expected quick info NOT to exist"); - } - } - else { - if (!actualQuickInfo) { - this.raiseError("verifyQuickInfoExists failed. Expected quick info to exist"); - } - } - }; - TestState.prototype.verifyNoSignatureHelp = function (markers) { - if (markers.length) { - for (var _i = 0, markers_1 = markers; _i < markers_1.length; _i++) { - var marker = markers_1[_i]; - this.goToMarker(marker); - this.verifyNoSignatureHelp(ts.emptyArray); - } - return; - } - var actual = this.getSignatureHelp(); - if (actual) { - this.raiseError("Expected no signature help, but got \"" + stringify(actual) + "\""); - } - }; - TestState.prototype.verifySignatureHelp = function (optionses) { - for (var _i = 0, optionses_1 = optionses; _i < optionses_1.length; _i++) { - var options = optionses_1[_i]; - if (options.marker === undefined) { - this.verifySignatureHelpWorker(options); - } - else { - for (var _a = 0, _b = toArray(options.marker); _a < _b.length; _a++) { - var marker = _b[_a]; - this.goToMarker(marker); - this.verifySignatureHelpWorker(options); - } - } - } - }; - TestState.prototype.verifySignatureHelpWorker = function (options) { - var _this = this; - var help = this.getSignatureHelp(); - var selectedItem = help.items[help.selectedItemIndex]; - // Argument index may exceed number of parameters - var currentParameter = selectedItem.parameters[help.argumentIndex]; - assert.equal(help.items.length, options.overloadsCount || 1, this.assertionMessageAtLastKnownMarker("signature help overloads count")); - assert.equal(ts.displayPartsToString(selectedItem.documentation), options.docComment || "", this.assertionMessageAtLastKnownMarker("current signature help doc comment")); - if (options.text !== undefined) { - assert.equal(ts.displayPartsToString(selectedItem.prefixDisplayParts) + - selectedItem.parameters.map(function (p) { return ts.displayPartsToString(p.displayParts); }).join(ts.displayPartsToString(selectedItem.separatorDisplayParts)) + - ts.displayPartsToString(selectedItem.suffixDisplayParts), options.text); - } - if (options.parameterName !== undefined) { - assert.equal(currentParameter.name, options.parameterName); - } - if (options.parameterSpan !== undefined) { - assert.equal(ts.displayPartsToString(currentParameter.displayParts), options.parameterSpan); - } - if (currentParameter) { - assert.equal(ts.displayPartsToString(currentParameter.documentation), options.parameterDocComment || "", this.assertionMessageAtLastKnownMarker("current parameter Help DocComment")); - } - if (options.parameterCount !== undefined) { - assert.equal(selectedItem.parameters.length, options.parameterCount); - } - if (options.argumentCount !== undefined) { - assert.equal(help.argumentCount, options.argumentCount); - } - assert.equal(selectedItem.isVariadic, !!options.isVariadic); - var actualTags = selectedItem.tags; - assert.equal(actualTags.length, (options.tags || ts.emptyArray).length, this.assertionMessageAtLastKnownMarker("signature help tags")); - ts.zipWith((options.tags || ts.emptyArray), actualTags, function (expectedTag, actualTag) { - assert.equal(expectedTag.name, actualTag.name); - assert.equal(expectedTag.text, actualTag.text, _this.assertionMessageAtLastKnownMarker("signature help tag " + actualTag.name)); - }); - var allKeys = [ - "marker", - "overloadsCount", - "docComment", - "text", - "parameterName", - "parameterSpan", - "parameterDocComment", - "parameterCount", - "isVariadic", - "tags", - "argumentCount", - ]; - for (var key in options) { - ts.Debug.assert(ts.contains(allKeys, key)); - } - }; - TestState.prototype.validate = function (name, expected, actual) { - if (expected && expected !== actual) { - this.raiseError("Expected " + name + " '" + expected + "'. Got '" + actual + "' instead."); - } - }; - TestState.prototype.verifyRenameInfoSucceeded = function (displayName, fullDisplayName, kind, kindModifiers) { - var renameInfo = this.languageService.getRenameInfo(this.activeFile.fileName, this.currentCaretPosition); - if (!renameInfo.canRename) { - this.raiseError("Rename did not succeed"); - } - this.validate("displayName", displayName, renameInfo.displayName); - this.validate("fullDisplayName", fullDisplayName, renameInfo.fullDisplayName); - this.validate("kind", kind, renameInfo.kind); - this.validate("kindModifiers", kindModifiers, renameInfo.kindModifiers); - if (this.getRanges().length !== 1) { - this.raiseError("Expected a single range to be selected in the test file."); - } - var expectedRange = this.getRanges()[0]; - if (renameInfo.triggerSpan.start !== expectedRange.pos || - ts.textSpanEnd(renameInfo.triggerSpan) !== expectedRange.end) { - this.raiseError("Expected triggerSpan [" + expectedRange.pos + "," + expectedRange.end + "). Got [" + - renameInfo.triggerSpan.start + "," + ts.textSpanEnd(renameInfo.triggerSpan) + ") instead."); - } - }; - TestState.prototype.verifyRenameInfoFailed = function (message) { - var renameInfo = this.languageService.getRenameInfo(this.activeFile.fileName, this.currentCaretPosition); - if (renameInfo.canRename) { - this.raiseError("Rename was expected to fail"); - } - this.validate("error", message, renameInfo.localizedErrorMessage); - }; - TestState.prototype.spanInfoToString = function (spanInfo, prefixString) { - var resultString = "SpanInfo: " + JSON.stringify(spanInfo); - if (spanInfo) { - var spanString = this.activeFile.content.substr(spanInfo.start, spanInfo.length); - var spanLineMap = ts.computeLineStarts(spanString); - for (var i = 0; i < spanLineMap.length; i++) { - if (!i) { - resultString += "\n"; - } - resultString += prefixString + spanString.substring(spanLineMap[i], spanLineMap[i + 1]); - } - resultString += "\n" + prefixString + ":=> (" + this.getLineColStringAtPosition(spanInfo.start) + ") to (" + this.getLineColStringAtPosition(ts.textSpanEnd(spanInfo)) + ")"; - } - return resultString; - }; - TestState.prototype.baselineCurrentFileLocations = function (getSpanAtPos) { - var _this = this; - var fileLineMap = ts.computeLineStarts(this.activeFile.content); - var nextLine = 0; - var resultString = ""; - var currentLine; - var previousSpanInfo; - var startColumn; - var length; - var prefixString = " >"; - var pos = 0; - var addSpanInfoString = function () { - if (previousSpanInfo) { - resultString += currentLine; - var thisLineMarker = ts.repeatString(" ", startColumn) + ts.repeatString("~", length); - thisLineMarker += ts.repeatString(" ", _this.alignmentForExtraInfo - thisLineMarker.length - prefixString.length + 1); - resultString += thisLineMarker; - resultString += "=> Pos: (" + (pos - length) + " to " + (pos - 1) + ") "; - resultString += " " + previousSpanInfo; - previousSpanInfo = undefined; - } - }; - for (; pos < this.activeFile.content.length; pos++) { - if (pos === 0 || pos === fileLineMap[nextLine]) { - nextLine++; - addSpanInfoString(); - if (resultString.length) { - resultString += "\n--------------------------------"; - } - currentLine = "\n" + nextLine.toString() + ts.repeatString(" ", 3 - nextLine.toString().length) + ">" + this.activeFile.content.substring(pos, fileLineMap[nextLine]) + "\n "; - startColumn = 0; - length = 0; - } - var spanInfo = this.spanInfoToString(getSpanAtPos(pos), prefixString); - if (previousSpanInfo && previousSpanInfo !== spanInfo) { - addSpanInfoString(); - previousSpanInfo = spanInfo; - startColumn = startColumn + length; - length = 1; - } - else { - previousSpanInfo = spanInfo; - length++; - } - } - addSpanInfoString(); - return resultString; - }; - TestState.prototype.getBreakpointStatementLocation = function (pos) { - return this.languageService.getBreakpointStatementAtPosition(this.activeFile.fileName, pos); - }; - TestState.prototype.baselineCurrentFileBreakpointLocations = function () { - var _this = this; - var baselineFile = this.testData.globalOptions["BaselineFile" /* baselineFile */]; - if (!baselineFile) { - baselineFile = this.activeFile.fileName.replace(this.basePath + "/breakpointValidation", "bpSpan"); - baselineFile = baselineFile.replace(".ts" /* Ts */, ".baseline"); - } - Harness.Baseline.runBaseline(baselineFile, function () { - return _this.baselineCurrentFileLocations(function (pos) { return _this.getBreakpointStatementLocation(pos); }); - }); - }; - TestState.prototype.baselineGetEmitOutput = function (insertResultsIntoVfs) { - var _this = this; - // Find file to be emitted - var emitFiles = []; // List of FourSlashFile that has emitThisFile flag on - var allFourSlashFiles = this.testData.files; - for (var _i = 0, allFourSlashFiles_1 = allFourSlashFiles; _i < allFourSlashFiles_1.length; _i++) { - var file = allFourSlashFiles_1[_i]; - if (file.fileOptions["emitThisFile" /* emitThisFile */] === "true") { - // Find a file with the flag emitThisFile turned on - emitFiles.push(file); - } - } - // If there is not emiThisFile flag specified in the test file, throw an error - if (emitFiles.length === 0) { - this.raiseError("No emitThisFile is specified in the test file"); - } - Harness.Baseline.runBaseline(this.testData.globalOptions["BaselineFile" /* baselineFile */], function () { - var resultString = ""; - // Loop through all the emittedFiles and emit them one by one - emitFiles.forEach(function (emitFile) { - var emitOutput = _this.languageService.getEmitOutput(emitFile.fileName); - // Print emitOutputStatus in readable format - resultString += "EmitSkipped: " + emitOutput.emitSkipped + Harness.IO.newLine(); - if (emitOutput.emitSkipped) { - resultString += "Diagnostics:" + Harness.IO.newLine(); - var diagnostics = ts.getPreEmitDiagnostics(_this.languageService.getProgram()); // TODO: GH#18217 - for (var _i = 0, diagnostics_1 = diagnostics; _i < diagnostics_1.length; _i++) { - var diagnostic = diagnostics_1[_i]; - if (!ts.isString(diagnostic.messageText)) { - var chainedMessage = diagnostic.messageText; - var indentation = " "; - while (chainedMessage) { - resultString += indentation + chainedMessage.messageText + Harness.IO.newLine(); - chainedMessage = chainedMessage.next; - indentation = indentation + " "; - } - } - else { - resultString += " " + diagnostic.messageText + Harness.IO.newLine(); - } - } - } - for (var _a = 0, _b = emitOutput.outputFiles; _a < _b.length; _a++) { - var outputFile = _b[_a]; - var fileName = "FileName : " + outputFile.name + Harness.IO.newLine(); - resultString = resultString + fileName + outputFile.text; - if (insertResultsIntoVfs) { - _this.languageServiceAdapterHost.addScript(ts.getNormalizedAbsolutePath(outputFile.name, "/"), outputFile.text, /*isRootFile*/ true); - } - } - resultString += Harness.IO.newLine(); - }); - return resultString; - }); - }; - TestState.prototype.baselineQuickInfo = function () { - var _this = this; - var baselineFile = this.testData.globalOptions["BaselineFile" /* baselineFile */]; - if (!baselineFile) { - baselineFile = ts.getBaseFileName(this.activeFile.fileName).replace(".ts" /* Ts */, ".baseline"); - } - Harness.Baseline.runBaseline(baselineFile, function () { return stringify(_this.testData.markers.map(function (marker) { return ({ - marker: marker, - quickInfo: _this.languageService.getQuickInfoAtPosition(marker.fileName, marker.position) - }); })); }); - }; - TestState.prototype.printBreakpointLocation = function (pos) { - Harness.IO.log("\n**Pos: " + pos + " " + this.spanInfoToString(this.getBreakpointStatementLocation(pos), " ")); - }; - TestState.prototype.printBreakpointAtCurrentLocation = function () { - this.printBreakpointLocation(this.currentCaretPosition); - }; - TestState.prototype.printCurrentParameterHelp = function () { - var help = this.languageService.getSignatureHelpItems(this.activeFile.fileName, this.currentCaretPosition); - Harness.IO.log(stringify(help)); - }; - TestState.prototype.printCurrentQuickInfo = function () { - var quickInfo = this.languageService.getQuickInfoAtPosition(this.activeFile.fileName, this.currentCaretPosition); - Harness.IO.log("Quick Info: " + quickInfo.displayParts.map(function (part) { return part.text; }).join("")); - }; - TestState.prototype.printErrorList = function () { - var syntacticErrors = this.languageService.getSyntacticDiagnostics(this.activeFile.fileName); - var semanticErrors = this.languageService.getSemanticDiagnostics(this.activeFile.fileName); - var errorList = ts.concatenate(syntacticErrors, semanticErrors); - Harness.IO.log("Error list (" + errorList.length + " errors)"); - if (errorList.length) { - errorList.forEach(function (err) { - Harness.IO.log("start: " + err.start + - ", length: " + err.length + - ", message: " + ts.flattenDiagnosticMessageText(err.messageText, Harness.IO.newLine())); - }); - } - }; - TestState.prototype.printCurrentFileState = function (showWhitespace, makeCaretVisible) { - for (var _i = 0, _a = this.testData.files; _i < _a.length; _i++) { - var file = _a[_i]; - var active = (this.activeFile === file); - Harness.IO.log("=== Script (" + file.fileName + ") " + (active ? "(active, cursor at |)" : "") + " ==="); - var content = this.getFileContent(file.fileName); - if (active) { - content = content.substr(0, this.currentCaretPosition) + (makeCaretVisible ? "|" : "") + content.substr(this.currentCaretPosition); - } - if (showWhitespace) { - content = makeWhitespaceVisible(content); - } - Harness.IO.log(content); - } - }; - TestState.prototype.printCurrentSignatureHelp = function () { - var help = this.getSignatureHelp(); - Harness.IO.log(stringify(help.items[help.selectedItemIndex])); - }; - TestState.prototype.getSignatureHelp = function () { - return this.languageService.getSignatureHelpItems(this.activeFile.fileName, this.currentCaretPosition); - }; - TestState.prototype.printCompletionListMembers = function (preferences) { - var completions = this.getCompletionListAtCaret(preferences); - this.printMembersOrCompletions(completions); - }; - TestState.prototype.printMembersOrCompletions = function (info) { - if (info === undefined) { - return "No completion info."; - } - var entries = info.entries; - function pad(s, length) { - return s + new Array(length - s.length + 1).join(" "); - } - function max(arr, selector) { - return arr.reduce(function (prev, x) { return Math.max(prev, selector(x)); }, 0); - } - var longestNameLength = max(entries, function (m) { return m.name.length; }); - var longestKindLength = max(entries, function (m) { return m.kind.length; }); - entries.sort(function (m, n) { return m.sortText > n.sortText ? 1 : m.sortText < n.sortText ? -1 : m.name > n.name ? 1 : m.name < n.name ? -1 : 0; }); - var membersString = entries.map(function (m) { return pad(m.name, longestNameLength) + " " + pad(m.kind, longestKindLength) + " " + m.kindModifiers + " " + (m.isRecommended ? "recommended " : "") + (m.source === undefined ? "" : m.source); }).join("\n"); - Harness.IO.log(membersString); - }; - TestState.prototype.printContext = function () { - ts.forEach(this.languageServiceAdapterHost.getFilenames(), Harness.IO.log); - }; - TestState.prototype.deleteChar = function (count) { - if (count === void 0) { count = 1; } - var offset = this.currentCaretPosition; - var ch = ""; - var checkCadence = (count >> 2) + 1; - for (var i = 0; i < count; i++) { - this.editScriptAndUpdateMarkers(this.activeFile.fileName, offset, offset + 1, ch); - if (i % checkCadence === 0) { - this.checkPostEditInvariants(); - } - // Handle post-keystroke formatting - if (this.enableFormatting) { - var edits = this.languageService.getFormattingEditsAfterKeystroke(this.activeFile.fileName, offset, ch, this.formatCodeSettings); - if (edits.length) { - offset += this.applyEdits(this.activeFile.fileName, edits, /*isFormattingEdit*/ true); - } - } - } - this.checkPostEditInvariants(); - }; - TestState.prototype.replace = function (start, length, text) { - this.editScriptAndUpdateMarkers(this.activeFile.fileName, start, start + length, text); - this.checkPostEditInvariants(); - }; - TestState.prototype.deleteCharBehindMarker = function (count) { - if (count === void 0) { count = 1; } - var offset = this.currentCaretPosition; - var ch = ""; - var checkCadence = (count >> 2) + 1; - for (var i = 0; i < count; i++) { - this.currentCaretPosition--; - offset--; - this.editScriptAndUpdateMarkers(this.activeFile.fileName, offset, offset + 1, ch); - if (i % checkCadence === 0) { - this.checkPostEditInvariants(); - } - // Don't need to examine formatting because there are no formatting changes on backspace. - } - this.checkPostEditInvariants(); - }; - // Enters lines of text at the current caret position - TestState.prototype.type = function (text, highFidelity) { - if (highFidelity === void 0) { highFidelity = false; } - var offset = this.currentCaretPosition; - var prevChar = " "; - var checkCadence = (text.length >> 2) + 1; - for (var i = 0; i < text.length; i++) { - var ch = text.charAt(i); - this.editScriptAndUpdateMarkers(this.activeFile.fileName, offset, offset, ch); - if (highFidelity) { - this.languageService.getBraceMatchingAtPosition(this.activeFile.fileName, offset); - } - this.currentCaretPosition++; - offset++; - if (highFidelity) { - if (ch === "(" || ch === ",") { - /* Signature help*/ - this.languageService.getSignatureHelpItems(this.activeFile.fileName, offset); - } - else if (prevChar === " " && /A-Za-z_/.test(ch)) { - /* Completions */ - this.languageService.getCompletionsAtPosition(this.activeFile.fileName, offset, ts.defaultPreferences); - } - if (i % checkCadence === 0) { - this.checkPostEditInvariants(); - } - } - // Handle post-keystroke formatting - if (this.enableFormatting) { - var edits = this.languageService.getFormattingEditsAfterKeystroke(this.activeFile.fileName, offset, ch, this.formatCodeSettings); - if (edits.length) { - offset += this.applyEdits(this.activeFile.fileName, edits, /*isFormattingEdit*/ true); - } - } - } - this.checkPostEditInvariants(); - }; - // Enters text as if the user had pasted it - TestState.prototype.paste = function (text) { - var start = this.currentCaretPosition; - this.editScriptAndUpdateMarkers(this.activeFile.fileName, this.currentCaretPosition, this.currentCaretPosition, text); - this.checkPostEditInvariants(); - var offset = this.currentCaretPosition += text.length; - // Handle formatting - if (this.enableFormatting) { - var edits = this.languageService.getFormattingEditsForRange(this.activeFile.fileName, start, offset, this.formatCodeSettings); - if (edits.length) { - this.applyEdits(this.activeFile.fileName, edits, /*isFormattingEdit*/ true); - } - } - this.checkPostEditInvariants(); - }; - TestState.prototype.checkPostEditInvariants = function () { - if (this.testType !== 0 /* Native */) { - // getSourcefile() results can not be serialized. Only perform these verifications - // if running against a native LS object. - return; - } - var incrementalSourceFile = this.languageService.getNonBoundSourceFile(this.activeFile.fileName); - Utils.assertInvariants(incrementalSourceFile, /*parent:*/ undefined); - var incrementalSyntaxDiagnostics = incrementalSourceFile.parseDiagnostics; - // Check syntactic structure - var content = this.getFileContent(this.activeFile.fileName); - var referenceSourceFile = ts.createLanguageServiceSourceFile(this.activeFile.fileName, createScriptSnapShot(content), 6 /* Latest */, /*version:*/ "0", /*setNodeParents:*/ false); - var referenceSyntaxDiagnostics = referenceSourceFile.parseDiagnostics; - Utils.assertDiagnosticsEquals(incrementalSyntaxDiagnostics, referenceSyntaxDiagnostics); - Utils.assertStructuralEquals(incrementalSourceFile, referenceSourceFile); - }; - /** - * @returns The number of characters added to the file as a result of the edits. - * May be negative. - */ - TestState.prototype.applyEdits = function (fileName, edits, isFormattingEdit) { - // We get back a set of edits, but langSvc.editScript only accepts one at a time. Use this to keep track - // of the incremental offset from each edit to the next. We assume these edit ranges don't overlap - // Copy this so we don't ruin someone else's copy - edits = JSON.parse(JSON.stringify(edits)); - // Get a snapshot of the content of the file so we can make sure any formatting edits didn't destroy non-whitespace characters - var oldContent = this.getFileContent(fileName); - var runningOffset = 0; - for (var i = 0; i < edits.length; i++) { - var edit = edits[i]; - var offsetStart = edit.span.start; - var offsetEnd = offsetStart + edit.span.length; - this.editScriptAndUpdateMarkers(fileName, offsetStart, offsetEnd, edit.newText); - var editDelta = edit.newText.length - edit.span.length; - if (offsetStart <= this.currentCaretPosition) { - if (offsetEnd <= this.currentCaretPosition) { - // The entirety of the edit span falls before the caret position, shift the caret accordingly - this.currentCaretPosition += editDelta; - } - else { - // The span being replaced includes the caret position, place the caret at the beginning of the span - this.currentCaretPosition = offsetStart; - } - } - runningOffset += editDelta; - // Update positions of any future edits affected by this change - for (var j = i + 1; j < edits.length; j++) { - if (edits[j].span.start >= edits[i].span.start) { - edits[j].span.start += editDelta; - } - } - } - if (isFormattingEdit) { - var newContent = this.getFileContent(fileName); - if (this.removeWhitespace(newContent) !== this.removeWhitespace(oldContent)) { - this.raiseError("Formatting operation destroyed non-whitespace content"); - } - } - return runningOffset; - }; - TestState.prototype.copyFormatOptions = function () { - return ts.clone(this.formatCodeSettings); - }; - TestState.prototype.setFormatOptions = function (formatCodeOptions) { - var oldFormatCodeOptions = this.formatCodeSettings; - this.formatCodeSettings = ts.toEditorSettings(formatCodeOptions); - return oldFormatCodeOptions; - }; - TestState.prototype.formatDocument = function () { - var edits = this.languageService.getFormattingEditsForDocument(this.activeFile.fileName, this.formatCodeSettings); - this.applyEdits(this.activeFile.fileName, edits, /*isFormattingEdit*/ true); - }; - TestState.prototype.formatSelection = function (start, end) { - var edits = this.languageService.getFormattingEditsForRange(this.activeFile.fileName, start, end, this.formatCodeSettings); - this.applyEdits(this.activeFile.fileName, edits, /*isFormattingEdit*/ true); - }; - TestState.prototype.formatOnType = function (pos, key) { - var edits = this.languageService.getFormattingEditsAfterKeystroke(this.activeFile.fileName, pos, key, this.formatCodeSettings); - this.applyEdits(this.activeFile.fileName, edits, /*isFormattingEdit*/ true); - }; - TestState.prototype.editScriptAndUpdateMarkers = function (fileName, editStart, editEnd, newText) { - this.languageServiceAdapterHost.editScript(fileName, editStart, editEnd, newText); - for (var _i = 0, _a = this.testData.markers; _i < _a.length; _i++) { - var marker = _a[_i]; - if (marker.fileName === fileName) { - marker.position = updatePosition(marker.position); - } - } - for (var _b = 0, _c = this.testData.ranges; _b < _c.length; _b++) { - var range = _c[_b]; - if (range.fileName === fileName) { - range.pos = updatePosition(range.pos); - range.end = updatePosition(range.end); - } - } - function updatePosition(position) { - if (position > editStart) { - if (position < editEnd) { - // Inside the edit - mark it as invalidated (?) - return -1; - } - else { - // Move marker back/forward by the appropriate amount - return position + (editStart - editEnd) + newText.length; - } - } - else { - return position; - } - } - }; - TestState.prototype.removeWhitespace = function (text) { - return text.replace(/\s/g, ""); - }; - TestState.prototype.goToBOF = function () { - this.goToPosition(0); - }; - TestState.prototype.goToEOF = function () { - var len = this.getFileContent(this.activeFile.fileName).length; - this.goToPosition(len); - }; - TestState.prototype.goToRangeStart = function (_a) { - var fileName = _a.fileName, pos = _a.pos; - this.openFile(fileName); - this.goToPosition(pos); - }; - TestState.prototype.goToTypeDefinition = function (definitionIndex) { - var definitions = this.languageService.getTypeDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition); - if (!definitions || !definitions.length) { - this.raiseError("goToTypeDefinition failed - expected to find at least one definition location but got 0"); - } - if (definitionIndex >= definitions.length) { - this.raiseError("goToTypeDefinition failed - definitionIndex value (" + definitionIndex + ") exceeds definition list size (" + definitions.length + ")"); - } - var definition = definitions[definitionIndex]; - this.openFile(definition.fileName); - this.currentCaretPosition = definition.textSpan.start; - }; - TestState.prototype.verifyTypeDefinitionsCount = function (negative, expectedCount) { - var assertFn = negative ? assert.notEqual : assert.equal; - var definitions = this.languageService.getTypeDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition); - var actualCount = definitions && definitions.length || 0; - assertFn(actualCount, expectedCount, this.messageAtLastKnownMarker("Type definitions Count")); - }; - TestState.prototype.verifyImplementationListIsEmpty = function (negative) { - var implementations = this.languageService.getImplementationAtPosition(this.activeFile.fileName, this.currentCaretPosition); - if (negative) { - assert.isTrue(implementations && implementations.length > 0, "Expected at least one implementation but got 0"); - } - else { - assert.isUndefined(implementations, "Expected implementation list to be empty but implementations returned"); - } - }; - TestState.prototype.verifyGoToDefinitionName = function (expectedName, expectedContainerName) { - var definitions = this.languageService.getDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition); - var actualDefinitionName = definitions && definitions.length ? definitions[0].name : ""; - var actualDefinitionContainerName = definitions && definitions.length ? definitions[0].containerName : ""; - assert.equal(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Name")); - assert.equal(actualDefinitionContainerName, expectedContainerName, this.messageAtLastKnownMarker("Definition Info Container Name")); - }; - TestState.prototype.goToImplementation = function () { - var implementations = this.languageService.getImplementationAtPosition(this.activeFile.fileName, this.currentCaretPosition); - if (!implementations || !implementations.length) { - this.raiseError("goToImplementation failed - expected to find at least one implementation location but got 0"); - } - if (implementations.length > 1) { - this.raiseError("goToImplementation failed - more than 1 implementation returned (" + implementations.length + ")"); - } - var implementation = implementations[0]; - this.openFile(implementation.fileName); - this.currentCaretPosition = implementation.textSpan.start; - }; - TestState.prototype.verifyRangesInImplementationList = function (markerName) { - this.goToMarker(markerName); - var implementations = this.languageService.getImplementationAtPosition(this.activeFile.fileName, this.currentCaretPosition); - if (!implementations || !implementations.length) { - this.raiseError("verifyRangesInImplementationList failed - expected to find at least one implementation location but got 0"); - } - var duplicate = findDuplicatedElement(implementations, implementationsAreEqual); - if (duplicate) { - var textSpan = duplicate.textSpan, fileName = duplicate.fileName; - var end = textSpan.start + textSpan.length; - this.raiseError("Duplicate implementations returned for range (" + textSpan.start + ", " + end + ") in " + fileName); - } - var ranges = this.getRanges(); - if (!ranges || !ranges.length) { - this.raiseError("verifyRangesInImplementationList failed - expected to find at least one range in test source"); - } - var unsatisfiedRanges = []; - var delayedErrors = []; - var _loop_8 = function (range) { - var length = range.end - range.pos; - var matchingImpl = ts.find(implementations, function (impl) { - return range.fileName === impl.fileName && range.pos === impl.textSpan.start && length === impl.textSpan.length; - }); - if (matchingImpl) { - if (range.marker && range.marker.data) { - var expected = range.marker.data; - if (expected.displayParts) { - if (!ts.arrayIsEqualTo(expected.displayParts, matchingImpl.displayParts, displayPartIsEqualTo)) { - delayedErrors.push("Mismatched display parts: expected " + JSON.stringify(expected.displayParts) + ", actual " + JSON.stringify(matchingImpl.displayParts)); - } - } - else if (expected.parts) { - var actualParts = matchingImpl.displayParts.map(function (p) { return p.text; }); - if (!ts.arrayIsEqualTo(expected.parts, actualParts)) { - delayedErrors.push("Mismatched non-tagged display parts: expected " + JSON.stringify(expected.parts) + ", actual " + JSON.stringify(actualParts)); - } - } - if (expected.kind !== undefined) { - if (expected.kind !== matchingImpl.kind) { - delayedErrors.push("Mismatched kind: expected " + JSON.stringify(expected.kind) + ", actual " + JSON.stringify(matchingImpl.kind)); - } - } - } - matchingImpl.matched = true; - } - else { - unsatisfiedRanges.push(range); - } - }; - for (var _i = 0, ranges_2 = ranges; _i < ranges_2.length; _i++) { - var range = ranges_2[_i]; - _loop_8(range); - } - if (delayedErrors.length) { - this.raiseError(delayedErrors.join("\n")); - } - var unmatchedImplementations = implementations.filter(function (impl) { return !impl.matched; }); - if (unmatchedImplementations.length || unsatisfiedRanges.length) { - var error = "Not all ranges or implementations are satisfied"; - if (unsatisfiedRanges.length) { - error += "\nUnsatisfied ranges:"; - for (var _a = 0, unsatisfiedRanges_1 = unsatisfiedRanges; _a < unsatisfiedRanges_1.length; _a++) { - var range = unsatisfiedRanges_1[_a]; - error += "\n (" + range.pos + ", " + range.end + ") in " + range.fileName + ": " + this.rangeText(range); - } - } - if (unmatchedImplementations.length) { - error += "\nUnmatched implementations:"; - for (var _b = 0, unmatchedImplementations_1 = unmatchedImplementations; _b < unmatchedImplementations_1.length; _b++) { - var impl = unmatchedImplementations_1[_b]; - var end = impl.textSpan.start + impl.textSpan.length; - error += "\n (" + impl.textSpan.start + ", " + end + ") in " + impl.fileName + ": " + this.getFileContent(impl.fileName).slice(impl.textSpan.start, end); - } - } - this.raiseError(error); - } - function implementationsAreEqual(a, b) { - return a.fileName === b.fileName && TestState.textSpansEqual(a.textSpan, b.textSpan); - } - function displayPartIsEqualTo(a, b) { - return a.kind === b.kind && a.text === b.text; - } - }; - TestState.prototype.getMarkers = function () { - // Return a copy of the list - return this.testData.markers.slice(0); - }; - TestState.prototype.getMarkerNames = function () { - return ts.arrayFrom(this.testData.markerPositions.keys()); - }; - TestState.prototype.getRanges = function () { - return this.testData.ranges; - }; - TestState.prototype.rangesByText = function () { - var result = ts.createMultiMap(); - for (var _i = 0, _a = this.getRanges(); _i < _a.length; _i++) { - var range = _a[_i]; - var text = this.rangeText(range); - result.add(text, range); - } - return result; - }; - TestState.prototype.rangeText = function (_a) { - var fileName = _a.fileName, pos = _a.pos, end = _a.end; - return this.getFileContent(fileName).slice(pos, end); - }; - TestState.prototype.verifyCaretAtMarker = function (markerName) { - if (markerName === void 0) { markerName = ""; } - var pos = this.getMarkerByName(markerName); - if (pos.fileName !== this.activeFile.fileName) { - throw new Error("verifyCaretAtMarker failed - expected to be in file \"" + pos.fileName + "\", but was in file \"" + this.activeFile.fileName + "\""); - } - if (pos.position !== this.currentCaretPosition) { - throw new Error("verifyCaretAtMarker failed - expected to be at marker \"/*" + markerName + "*/, but was at position " + this.currentCaretPosition + "(" + this.getLineColStringAtPosition(this.currentCaretPosition) + ")"); - } - }; - TestState.prototype.getIndentation = function (fileName, position, indentStyle, baseIndentSize) { - var formatOptions = ts.clone(this.formatCodeSettings); - formatOptions.indentStyle = indentStyle; - formatOptions.baseIndentSize = baseIndentSize; - return this.languageService.getIndentationAtPosition(fileName, position, formatOptions); - }; - TestState.prototype.verifyIndentationAtCurrentPosition = function (numberOfSpaces, indentStyle, baseIndentSize) { - if (indentStyle === void 0) { indentStyle = ts.IndentStyle.Smart; } - if (baseIndentSize === void 0) { baseIndentSize = 0; } - var actual = this.getIndentation(this.activeFile.fileName, this.currentCaretPosition, indentStyle, baseIndentSize); - var lineCol = this.getLineColStringAtPosition(this.currentCaretPosition); - if (actual !== numberOfSpaces) { - this.raiseError("verifyIndentationAtCurrentPosition failed at " + lineCol + " - expected: " + numberOfSpaces + ", actual: " + actual); - } - }; - TestState.prototype.verifyIndentationAtPosition = function (fileName, position, numberOfSpaces, indentStyle, baseIndentSize) { - if (indentStyle === void 0) { indentStyle = ts.IndentStyle.Smart; } - if (baseIndentSize === void 0) { baseIndentSize = 0; } - var actual = this.getIndentation(fileName, position, indentStyle, baseIndentSize); - var lineCol = this.getLineColStringAtPosition(position); - if (actual !== numberOfSpaces) { - this.raiseError("verifyIndentationAtPosition failed at " + lineCol + " - expected: " + numberOfSpaces + ", actual: " + actual); - } - }; - TestState.prototype.verifyCurrentLineContent = function (text) { - var actual = this.getCurrentLineContent(); - if (actual !== text) { - throw new Error("verifyCurrentLineContent\n" + - "\tExpected: \"" + text + "\"\n" + - "\t Actual: \"" + actual + "\""); - } - }; - TestState.prototype.verifyCurrentFileContent = function (text) { - this.verifyFileContent(this.activeFile.fileName, text); - }; - TestState.prototype.verifyFileContent = function (fileName, text) { - var actual = this.getFileContent(fileName); - if (actual !== text) { - throw new Error("verifyFileContent failed:\n" + showTextDiff(text, actual)); - } - }; - TestState.prototype.verifyTextAtCaretIs = function (text) { - var actual = this.getFileContent(this.activeFile.fileName).substring(this.currentCaretPosition, this.currentCaretPosition + text.length); - if (actual !== text) { - throw new Error("verifyTextAtCaretIs\n" + - "\tExpected: \"" + text + "\"\n" + - "\t Actual: \"" + actual + "\""); - } - }; - TestState.prototype.verifyCurrentNameOrDottedNameSpanText = function (text) { - var span = this.languageService.getNameOrDottedNameSpan(this.activeFile.fileName, this.currentCaretPosition, this.currentCaretPosition); - if (!span) { - return this.raiseError("verifyCurrentNameOrDottedNameSpanText\n" + - "\tExpected: \"" + text + "\"\n" + - "\t Actual: undefined"); - } - var actual = this.getFileContent(this.activeFile.fileName).substring(span.start, ts.textSpanEnd(span)); - if (actual !== text) { - this.raiseError("verifyCurrentNameOrDottedNameSpanText\n" + - "\tExpected: \"" + text + "\"\n" + - "\t Actual: \"" + actual + "\""); - } - }; - TestState.prototype.getNameOrDottedNameSpan = function (pos) { - return this.languageService.getNameOrDottedNameSpan(this.activeFile.fileName, pos, pos); - }; - TestState.prototype.baselineCurrentFileNameOrDottedNameSpans = function () { - var _this = this; - Harness.Baseline.runBaseline(this.testData.globalOptions["BaselineFile" /* baselineFile */], function () { - return _this.baselineCurrentFileLocations(function (pos) { - return _this.getNameOrDottedNameSpan(pos); - }); - }); - }; - TestState.prototype.printNameOrDottedNameSpans = function (pos) { - Harness.IO.log(this.spanInfoToString(this.getNameOrDottedNameSpan(pos), "**")); - }; - TestState.prototype.verifyClassifications = function (expected, actual, sourceFileText) { - var _this = this; - if (actual.length !== expected.length) { - this.raiseError("verifyClassifications failed - expected total classifications to be " + expected.length + - ", but was " + actual.length + - jsonMismatchString()); - } - ts.zipWith(expected, actual, function (expectedClassification, actualClassification) { - var expectedType = expectedClassification.classificationType; - if (expectedType !== actualClassification.classificationType) { - _this.raiseError("verifyClassifications failed - expected classifications type to be " + - expectedType + ", but was " + - actualClassification.classificationType + - jsonMismatchString()); - } - var expectedSpan = expectedClassification.textSpan; - var actualSpan = actualClassification.textSpan; - if (expectedSpan) { - var expectedLength = expectedSpan.end - expectedSpan.start; - if (expectedSpan.start !== actualSpan.start || expectedLength !== actualSpan.length) { - _this.raiseError("verifyClassifications failed - expected span of text to be " + - "{start=" + expectedSpan.start + ", length=" + expectedLength + "}, but was " + - "{start=" + actualSpan.start + ", length=" + actualSpan.length + "}" + - jsonMismatchString()); - } - } - var actualText = _this.activeFile.content.substr(actualSpan.start, actualSpan.length); - if (expectedClassification.text !== actualText) { - _this.raiseError("verifyClassifications failed - expected classified text to be " + - expectedClassification.text + ", but was " + - actualText + - jsonMismatchString()); - } - }); - function jsonMismatchString() { - var showActual = actual.map(function (_a) { - var classificationType = _a.classificationType, textSpan = _a.textSpan; - return ({ classificationType: classificationType, text: sourceFileText.slice(textSpan.start, textSpan.start + textSpan.length) }); - }); - return Harness.IO.newLine() + - "expected: '" + Harness.IO.newLine() + stringify(expected) + "'" + Harness.IO.newLine() + - "actual: '" + Harness.IO.newLine() + stringify(showActual) + "'"; - } - }; - TestState.prototype.verifyProjectInfo = function (expected) { - var _this = this; - if (this.testType === 3 /* Server */) { - var actual = this.languageService.getProjectInfo(this.activeFile.fileName, - /* needFileNameList */ true); - assert.equal(expected.join(","), actual.fileNames.map(function (file) { - return file.replace(_this.basePath + "/", ""); - }).join(",")); - } - }; - TestState.prototype.verifySemanticClassifications = function (expected) { - var actual = this.languageService.getSemanticClassifications(this.activeFile.fileName, ts.createTextSpan(0, this.activeFile.content.length)); - this.verifyClassifications(expected, actual, this.activeFile.content); - }; - TestState.prototype.verifySyntacticClassifications = function (expected) { - var actual = this.languageService.getSyntacticClassifications(this.activeFile.fileName, ts.createTextSpan(0, this.activeFile.content.length)); - this.verifyClassifications(expected, actual, this.activeFile.content); - }; - TestState.prototype.printOutliningSpans = function () { - var spans = this.languageService.getOutliningSpans(this.activeFile.fileName); - Harness.IO.log("Outlining spans (" + spans.length + " items)"); - Harness.IO.log(stringify(spans)); - }; - TestState.prototype.verifyOutliningSpans = function (spans, kind) { - var _this = this; - var actual = this.languageService.getOutliningSpans(this.activeFile.fileName); - if (actual.length !== spans.length) { - this.raiseError("verifyOutliningSpans failed - expected total spans to be " + spans.length + ", but was " + actual.length); - } - ts.zipWith(spans, actual, function (expectedSpan, actualSpan, i) { - if (expectedSpan.pos !== actualSpan.textSpan.start || expectedSpan.end !== ts.textSpanEnd(actualSpan.textSpan)) { - return _this.raiseError("verifyOutliningSpans failed - span " + (i + 1) + " expected: (" + expectedSpan.pos + "," + expectedSpan.end + "), actual: (" + actualSpan.textSpan.start + "," + ts.textSpanEnd(actualSpan.textSpan) + ")"); - } - if (kind !== undefined && actualSpan.kind !== kind) { - return _this.raiseError("verifyOutliningSpans failed - span " + (i + 1) + " expected kind: ('" + kind + "'), actual: ('" + actualSpan.kind + "')"); - } - }); - }; - TestState.prototype.verifyTodoComments = function (descriptors, spans) { - var _this = this; - var actual = this.languageService.getTodoComments(this.activeFile.fileName, descriptors.map(function (d) { return { text: d, priority: 0 }; })); - if (actual.length !== spans.length) { - this.raiseError("verifyTodoComments failed - expected total spans to be " + spans.length + ", but was " + actual.length); - } - ts.zipWith(spans, actual, function (expectedSpan, actualComment, i) { - var actualCommentSpan = ts.createTextSpan(actualComment.position, actualComment.message.length); - if (expectedSpan.pos !== actualCommentSpan.start || expectedSpan.end !== ts.textSpanEnd(actualCommentSpan)) { - _this.raiseError("verifyOutliningSpans failed - span " + (i + 1) + " expected: (" + expectedSpan.pos + "," + expectedSpan.end + "), actual: (" + actualCommentSpan.start + "," + ts.textSpanEnd(actualCommentSpan) + ")"); - } - }); - }; - /** - * Finds and applies a code action corresponding to the supplied parameters. - * If index is undefined, applies the unique code action available. - * @param errorCode The error code that generated the code action. - * @param index The nth (0-index-based) codeaction available generated by errorCode. - */ - TestState.prototype.getAndApplyCodeActions = function (errorCode, index) { - var fileName = this.activeFile.fileName; - this.applyCodeActions(this.getCodeFixes(fileName, errorCode), index); - }; - TestState.prototype.applyCodeActionFromCompletion = function (markerName, options) { - this.goToMarker(markerName); - var details = this.getCompletionEntryDetails(options.name, options.source, options.preferences); - var codeActions = details.codeActions; - if (codeActions.length !== 1) { - this.raiseError("Expected one code action, got " + codeActions.length); - } - if (codeActions[0].description !== options.description) { - this.raiseError("Expected description to be:\n" + options.description + "\ngot:\n" + codeActions[0].description); - } - this.applyCodeActions(codeActions); - this.verifyNewContent(options, ts.flatMap(codeActions, function (a) { return a.changes.map(function (c) { return c.fileName; }); })); - }; - TestState.prototype.verifyRangeIs = function (expectedText, includeWhiteSpace) { - var ranges = this.getRanges(); - if (ranges.length !== 1) { - this.raiseError("Exactly one range should be specified in the testfile."); - } - var actualText = this.rangeText(ranges[0]); - var result = includeWhiteSpace - ? actualText === expectedText - : this.removeWhitespace(actualText) === this.removeWhitespace(expectedText); - if (!result) { - this.raiseError("Actual range text doesn't match expected text.\n" + showTextDiff(expectedText, actualText)); - } - }; - /** - * Compares expected text to the text that would be in the sole range - * (ie: [|...|]) in the file after applying the codefix sole codefix - * in the source file. - */ - TestState.prototype.verifyRangeAfterCodeFix = function (expectedText, includeWhiteSpace, errorCode, index) { - this.getAndApplyCodeActions(errorCode, index); - this.verifyRangeIs(expectedText, includeWhiteSpace); - }; - TestState.prototype.verifyCodeFixAll = function (_a) { - var _this = this; - var fixId = _a.fixId, fixAllDescription = _a.fixAllDescription, newFileContent = _a.newFileContent, expectedCommands = _a.commands; - var fixWithId = ts.find(this.getCodeFixes(this.activeFile.fileName), function (a) { return a.fixId === fixId; }); - ts.Debug.assert(fixWithId !== undefined, "No available code fix has that group id.", function () { - return "Expected '" + fixId + "'. Available action ids: " + ts.mapDefined(_this.getCodeFixes(_this.activeFile.fileName), function (a) { return a.fixId; }); - }); - ts.Debug.assertEqual(fixWithId.fixAllDescription, fixAllDescription); - var _b = this.languageService.getCombinedCodeFix({ type: "file", fileName: this.activeFile.fileName }, fixId, this.formatCodeSettings, ts.defaultPreferences), changes = _b.changes, commands = _b.commands; - assert.deepEqual(commands, expectedCommands); - assert(changes.every(function (c) { return c.fileName === _this.activeFile.fileName; }), "TODO: support testing codefixes that touch multiple files"); - this.applyChanges(changes); - this.verifyCurrentFileContent(newFileContent); - }; - /** - * Applies fixes for the errors in fileName and compares the results to - * expectedContents after all fixes have been applied. - * - * Note: applying one codefix may generate another (eg: remove duplicate implements - * may generate an extends -> interface conversion fix). - * @param expectedContents The contents of the file after the fixes are applied. - * @param fileName The file to check. If not supplied, the current open file is used. - */ - TestState.prototype.verifyFileAfterCodeFix = function (expectedContents, fileName) { - fileName = fileName ? fileName : this.activeFile.fileName; - this.applyCodeActions(this.getCodeFixes(fileName)); - var actualContents = this.getFileContent(fileName); - if (this.removeWhitespace(actualContents) !== this.removeWhitespace(expectedContents)) { - this.raiseError("Actual text doesn't match expected text. Actual:\n" + actualContents + "\n\nExpected:\n" + expectedContents); - } - }; - TestState.prototype.verifyCodeFix = function (options) { - var fileName = this.activeFile.fileName; - var actions = this.getCodeFixes(fileName, options.errorCode, options.preferences); - var index = options.index; - if (index === undefined) { - if (!(actions && actions.length === 1)) { - this.raiseError("Should find exactly one codefix, but " + (actions ? actions.length : "none") + " found. " + (actions ? actions.map(function (a) { return Harness.IO.newLine() + " \"" + a.description + "\""; }) : "")); - } - index = 0; - } - else { - if (!(actions && actions.length >= index + 1)) { - this.raiseError("Should find at least " + (index + 1) + " codefix(es), but " + (actions ? actions.length : "none") + " found."); - } - } - var action = actions[index]; - assert.equal(action.description, options.description); - for (var _i = 0, _a = action.changes; _i < _a.length; _i++) { - var change = _a[_i]; - this.applyEdits(change.fileName, change.textChanges, /*isFormattingEdit*/ false); - } - this.verifyNewContent(options, action.changes.map(function (c) { return c.fileName; })); - }; - TestState.prototype.verifyNewContent = function (options, changedFiles) { - var assertedChangedFiles = !options.newFileContent || typeof options.newFileContent === "string" - ? [this.activeFile.fileName] - : ts.getOwnKeys(options.newFileContent); - assert.deepEqual(assertedChangedFiles, changedFiles); - if (options.newFileContent !== undefined) { - assert(!options.newRangeContent); - if (typeof options.newFileContent === "string") { - this.verifyCurrentFileContent(options.newFileContent); - } - else { - for (var fileName in options.newFileContent) { - this.verifyFileContent(fileName, options.newFileContent[fileName]); - } - } - } - else { - this.verifyRangeIs(options.newRangeContent, /*includeWhitespace*/ true); - } - }; - /** - * Rerieves a codefix satisfying the parameters, or undefined if no such codefix is found. - * @param fileName Path to file where error should be retrieved from. - */ - TestState.prototype.getCodeFixes = function (fileName, errorCode, preferences) { - var _this = this; - if (preferences === void 0) { preferences = ts.defaultPreferences; } - var diagnosticsForCodeFix = this.getDiagnostics(fileName, /*includeSuggestions*/ true).map(function (diagnostic) { return ({ - start: diagnostic.start, - length: diagnostic.length, - code: diagnostic.code - }); }); - return ts.flatMap(ts.deduplicate(diagnosticsForCodeFix, ts.equalOwnProperties), function (diagnostic) { - if (errorCode !== undefined && errorCode !== diagnostic.code) { - return; - } - return _this.languageService.getCodeFixesAtPosition(fileName, diagnostic.start, diagnostic.start + diagnostic.length, [diagnostic.code], _this.formatCodeSettings, preferences); - }); - }; - TestState.prototype.applyCodeActions = function (actions, index) { - if (index === undefined) { - if (!(actions && actions.length === 1)) { - this.raiseError("Should find exactly one codefix, but " + (actions ? actions.length : "none") + " found. " + (actions ? actions.map(function (a) { return Harness.IO.newLine() + " \"" + a.description + "\""; }) : "")); - } - index = 0; - } - else { - if (!(actions && actions.length >= index + 1)) { - this.raiseError("Should find at least " + (index + 1) + " codefix(es), but " + (actions ? actions.length : "none") + " found."); - } - } - this.applyChanges(actions[index].changes); - }; - TestState.prototype.applyChanges = function (changes) { - for (var _i = 0, changes_1 = changes; _i < changes_1.length; _i++) { - var change = changes_1[_i]; - this.applyEdits(change.fileName, change.textChanges, /*isFormattingEdit*/ false); - } - }; - TestState.prototype.verifyImportFixAtPosition = function (expectedTextArray, errorCode, preferences) { - var _this = this; - var fileName = this.activeFile.fileName; - var ranges = this.getRanges().filter(function (r) { return r.fileName === fileName; }); - if (ranges.length > 1) { - this.raiseError("Exactly one range should be specified in the testfile."); - } - var range = ts.firstOrUndefined(ranges); - var codeFixes = this.getCodeFixes(fileName, errorCode, preferences).filter(function (f) { return f.fixId === undefined; }); // TODO: GH#20315 filter out those that use the import fix ID; - if (codeFixes.length === 0) { - if (expectedTextArray.length !== 0) { - this.raiseError("No codefixes returned."); - } - return; - } - var actualTextArray = []; - var scriptInfo = this.languageServiceAdapterHost.getScriptInfo(fileName); - var originalContent = scriptInfo.content; - for (var _i = 0, codeFixes_1 = codeFixes; _i < codeFixes_1.length; _i++) { - var codeFix = codeFixes_1[_i]; - ts.Debug.assert(codeFix.changes.length === 1); - var change = ts.first(codeFix.changes); - ts.Debug.assert(change.fileName === fileName); - this.applyEdits(change.fileName, change.textChanges, /*isFormattingEdit*/ false); - var text = range ? this.rangeText(range) : this.getFileContent(this.activeFile.fileName); - actualTextArray.push(text); - scriptInfo.updateContent(originalContent); - } - if (expectedTextArray.length !== actualTextArray.length) { - this.raiseError("Expected " + expectedTextArray.length + " import fixes, got " + actualTextArray.length); - } - ts.zipWith(expectedTextArray, actualTextArray, function (expected, actual, index) { - if (expected !== actual) { - _this.raiseError("Import fix at index " + index + " doesn't match.\n" + showTextDiff(expected, actual)); - } - }); - }; - TestState.prototype.verifyDocCommentTemplate = function (expected) { - var name = "verifyDocCommentTemplate"; - var actual = this.languageService.getDocCommentTemplateAtPosition(this.activeFile.fileName, this.currentCaretPosition); - if (expected === undefined) { - if (actual) { - this.raiseError(name + " failed - expected no template but got {newText: \"" + actual.newText + "\", caretOffset: " + actual.caretOffset + "}"); - } - return; - } - else { - if (actual === undefined) { - this.raiseError(name + " failed - expected the template {newText: \"" + expected.newText + "\", caretOffset: \"" + expected.caretOffset + "\"} but got nothing instead"); - } - if (actual.newText !== expected.newText) { - this.raiseError(name + " failed for expected insertion.\n" + showTextDiff(expected.newText, actual.newText)); - } - if (actual.caretOffset !== expected.caretOffset) { - this.raiseError(name + " failed - expected caretOffset: " + expected.caretOffset + "\nactual caretOffset:" + actual.caretOffset); - } - } - }; - TestState.prototype.verifyBraceCompletionAtPosition = function (negative, openingBrace) { - var openBraceMap = ts.createMapFromTemplate({ - "(": 40 /* openParen */, - "{": 123 /* openBrace */, - "[": 91 /* openBracket */, - "'": 39 /* singleQuote */, - '"': 34 /* doubleQuote */, - "`": 96 /* backtick */, - "<": 60 /* lessThan */ - }); - var charCode = openBraceMap.get(openingBrace); - if (!charCode) { - throw this.raiseError("Invalid openingBrace '" + openingBrace + "' specified."); - } - var position = this.currentCaretPosition; - var validBraceCompletion = this.languageService.isValidBraceCompletionAtPosition(this.activeFile.fileName, position, charCode); - if (!negative && !validBraceCompletion) { - this.raiseError(position + " is not a valid brace completion position for " + openingBrace); - } - if (negative && validBraceCompletion) { - this.raiseError(position + " is a valid brace completion position for " + openingBrace); - } - }; - TestState.prototype.verifyJsxClosingTag = function (map) { - for (var markerName in map) { - this.goToMarker(markerName); - var actual = this.languageService.getJsxClosingTagAtPosition(this.activeFile.fileName, this.currentCaretPosition); - assert.deepEqual(actual, map[markerName]); - } - }; - TestState.prototype.verifyMatchingBracePosition = function (bracePosition, expectedMatchPosition) { - var actual = this.languageService.getBraceMatchingAtPosition(this.activeFile.fileName, bracePosition); - if (actual.length !== 2) { - this.raiseError("verifyMatchingBracePosition failed - expected result to contain 2 spans, but it had " + actual.length); - } - var actualMatchPosition = -1; - if (bracePosition === actual[0].start) { - actualMatchPosition = actual[1].start; - } - else if (bracePosition === actual[1].start) { - actualMatchPosition = actual[0].start; - } - else { - this.raiseError("verifyMatchingBracePosition failed - could not find the brace position: " + bracePosition + " in the returned list: (" + actual[0].start + "," + ts.textSpanEnd(actual[0]) + ") and (" + actual[1].start + "," + ts.textSpanEnd(actual[1]) + ")"); - } - if (actualMatchPosition !== expectedMatchPosition) { - this.raiseError("verifyMatchingBracePosition failed - expected: " + actualMatchPosition + ", actual: " + expectedMatchPosition); - } - }; - TestState.prototype.verifyNoMatchingBracePosition = function (bracePosition) { - var actual = this.languageService.getBraceMatchingAtPosition(this.activeFile.fileName, bracePosition); - if (actual.length !== 0) { - this.raiseError("verifyNoMatchingBracePosition failed - expected: 0 spans, actual: " + actual.length); - } - }; - TestState.prototype.verifySpanOfEnclosingComment = function (negative, onlyMultiLineDiverges) { - var expected = !negative; - var position = this.currentCaretPosition; - var fileName = this.activeFile.fileName; - var actual = !!this.languageService.getSpanOfEnclosingComment(fileName, position, /*onlyMultiLine*/ false); - var actualOnlyMultiLine = !!this.languageService.getSpanOfEnclosingComment(fileName, position, /*onlyMultiLine*/ true); - if (expected !== actual || onlyMultiLineDiverges === (actual === actualOnlyMultiLine)) { - this.raiseError("verifySpanOfEnclosingComment failed:\n position: '" + position + "'\n fileName: '" + fileName + "'\n onlyMultiLineDiverges: '" + onlyMultiLineDiverges + "'\n actual: '" + actual + "'\n actualOnlyMultiLine: '" + actualOnlyMultiLine + "'\n expected: '" + expected + "'."); - } - }; - /* - Check number of navigationItems which match both searchValue and matchKind, - if a filename is passed in, limit the results to that file. - Report an error if expected value and actual value do not match. - */ - TestState.prototype.verifyNavigationItemsCount = function (expected, searchValue, matchKind, fileName) { - var items = this.languageService.getNavigateToItems(searchValue, /*maxResultCount*/ undefined, fileName); - var actual = 0; - // Count only the match that match the same MatchKind - for (var _i = 0, items_1 = items; _i < items_1.length; _i++) { - var item = items_1[_i]; - if (!matchKind || item.matchKind === matchKind) { - actual++; - } - } - if (expected !== actual) { - this.raiseError("verifyNavigationItemsCount failed - found: " + actual + " navigation items, expected: " + expected + "."); - } - }; - /* - Verify that returned navigationItems from getNavigateToItems have matched searchValue, matchKind, and kind. - Report an error if getNavigateToItems does not find any matched searchValue. - */ - TestState.prototype.verifyNavigationItemsListContains = function (name, kind, searchValue, matchKind, fileName, parentName) { - var items = this.languageService.getNavigateToItems(searchValue); - if (!items || items.length === 0) { - this.raiseError("verifyNavigationItemsListContains failed - found 0 navigation items, expected at least one."); - } - for (var _i = 0, items_2 = items; _i < items_2.length; _i++) { - var item = items_2[_i]; - if (item && item.name === name && item.kind === kind && - (matchKind === undefined || item.matchKind === matchKind) && - (fileName === undefined || item.fileName === fileName) && - (parentName === undefined || item.containerName === parentName)) { - return; - } - } - // if there was an explicit match kind specified, then it should be validated. - if (matchKind !== undefined) { - var missingItem = { name: name, kind: kind, searchValue: searchValue, matchKind: matchKind, fileName: fileName, parentName: parentName }; - this.raiseError("verifyNavigationItemsListContains failed - could not find the item: " + stringify(missingItem) + " in the returned list: (" + stringify(items) + ")"); - } - }; - TestState.prototype.verifyNavigationBar = function (json, options) { - this.verifyNavigationTreeOrBar(json, this.languageService.getNavigationBarItems(this.activeFile.fileName), "Bar", options); - }; - TestState.prototype.verifyNavigationTree = function (json, options) { - this.verifyNavigationTreeOrBar(json, this.languageService.getNavigationTree(this.activeFile.fileName), "Tree", options); - }; - TestState.prototype.verifyNavigationTreeOrBar = function (json, tree, name, options) { - if (JSON.stringify(tree, replacer) !== JSON.stringify(json)) { - this.raiseError("verifyNavigation" + name + " failed - expected: " + stringify(json) + ", got: " + stringify(tree, replacer)); - } - function replacer(key, value) { - switch (key) { - case "spans": - case "nameSpan": - return options && options.checkSpans ? value : undefined; - case "start": - case "length": - // Never omit the values in a span, even if they are 0. - return value; - case "childItems": - return !value || value.length === 0 ? undefined : value; - default: - // Omit falsy values, those are presumed to be the default. - return value || undefined; - } - } - }; - TestState.prototype.printNavigationItems = function (searchValue) { - var items = this.languageService.getNavigateToItems(searchValue); - Harness.IO.log("NavigationItems list (" + items.length + " items)"); - for (var _i = 0, items_3 = items; _i < items_3.length; _i++) { - var item = items_3[_i]; - Harness.IO.log("name: " + item.name + ", kind: " + item.kind + ", parentName: " + item.containerName + ", fileName: " + item.fileName); - } - }; - TestState.prototype.printNavigationBar = function () { - var items = this.languageService.getNavigationBarItems(this.activeFile.fileName); - Harness.IO.log("Navigation bar (" + items.length + " items)"); - for (var _i = 0, items_4 = items; _i < items_4.length; _i++) { - var item = items_4[_i]; - Harness.IO.log(ts.repeatString(" ", item.indent) + "name: " + item.text + ", kind: " + item.kind + ", childItems: " + item.childItems.map(function (child) { return child.text; })); - } - }; - TestState.prototype.getOccurrencesAtCurrentPosition = function () { - return this.languageService.getOccurrencesAtPosition(this.activeFile.fileName, this.currentCaretPosition); - }; - TestState.prototype.verifyOccurrencesAtPositionListContains = function (fileName, start, end, isWriteAccess) { - var occurrences = this.getOccurrencesAtCurrentPosition(); - if (!occurrences || occurrences.length === 0) { - return this.raiseError("verifyOccurrencesAtPositionListContains failed - found 0 references, expected at least one."); - } - for (var _i = 0, occurrences_1 = occurrences; _i < occurrences_1.length; _i++) { - var occurrence = occurrences_1[_i]; - if (occurrence && occurrence.fileName === fileName && occurrence.textSpan.start === start && ts.textSpanEnd(occurrence.textSpan) === end) { - if (typeof isWriteAccess !== "undefined" && occurrence.isWriteAccess !== isWriteAccess) { - this.raiseError("verifyOccurrencesAtPositionListContains failed - item isWriteAccess value does not match, actual: " + occurrence.isWriteAccess + ", expected: " + isWriteAccess + "."); - } - return; - } - } - var missingItem = { fileName: fileName, start: start, end: end, isWriteAccess: isWriteAccess }; - this.raiseError("verifyOccurrencesAtPositionListContains failed - could not find the item: " + stringify(missingItem) + " in the returned list: (" + stringify(occurrences) + ")"); - }; - TestState.prototype.verifyOccurrencesAtPositionListCount = function (expectedCount) { - var occurrences = this.getOccurrencesAtCurrentPosition(); - var actualCount = occurrences ? occurrences.length : 0; - if (expectedCount !== actualCount) { - this.raiseError("verifyOccurrencesAtPositionListCount failed - actual: " + actualCount + ", expected:" + expectedCount); - } - }; - TestState.prototype.getDocumentHighlightsAtCurrentPosition = function (fileNamesToSearch) { - var _this = this; - var filesToSearch = fileNamesToSearch.map(function (name) { return ts.combinePaths(_this.basePath, name); }); - return this.languageService.getDocumentHighlights(this.activeFile.fileName, this.currentCaretPosition, filesToSearch); - }; - TestState.prototype.verifyRangesAreOccurrences = function (isWriteAccess) { - var ranges = this.getRanges(); - for (var _i = 0, ranges_3 = ranges; _i < ranges_3.length; _i++) { - var r = ranges_3[_i]; - this.goToRangeStart(r); - this.verifyOccurrencesAtPositionListCount(ranges.length); - for (var _a = 0, ranges_4 = ranges; _a < ranges_4.length; _a++) { - var range = ranges_4[_a]; - this.verifyOccurrencesAtPositionListContains(range.fileName, range.pos, range.end, isWriteAccess); - } - } - }; - TestState.prototype.verifyRangesWithSameTextAreRenameLocations = function () { - var _this = this; - this.rangesByText().forEach(function (ranges) { return _this.verifyRangesAreRenameLocations(ranges); }); - }; - TestState.prototype.verifyRangesWithSameTextAreDocumentHighlights = function () { - var _this = this; - this.rangesByText().forEach(function (ranges) { return _this.verifyRangesAreDocumentHighlights(ranges, /*options*/ undefined); }); - }; - TestState.prototype.verifyDocumentHighlightsOf = function (startRange, ranges, options) { - var fileNames = options && options.filesToSearch || unique(ranges, function (range) { return range.fileName; }); - this.goToRangeStart(startRange); - this.verifyDocumentHighlights(ranges, fileNames); - }; - TestState.prototype.verifyRangesAreDocumentHighlights = function (ranges, options) { - ranges = ranges || this.getRanges(); - var fileNames = options && options.filesToSearch || unique(ranges, function (range) { return range.fileName; }); - for (var _i = 0, ranges_5 = ranges; _i < ranges_5.length; _i++) { - var range = ranges_5[_i]; - this.goToRangeStart(range); - this.verifyDocumentHighlights(ranges, fileNames); - } - }; - TestState.prototype.verifyNoDocumentHighlights = function (startRange) { - this.goToRangeStart(startRange); - var documentHighlights = this.getDocumentHighlightsAtCurrentPosition([this.activeFile.fileName]); - var numHighlights = ts.length(documentHighlights); - if (numHighlights > 0) { - this.raiseError("verifyNoDocumentHighlights failed - unexpectedly got " + numHighlights + " highlights"); - } - }; - TestState.prototype.verifyDocumentHighlights = function (expectedRanges, fileNames) { - var _this = this; - if (fileNames === void 0) { fileNames = [this.activeFile.fileName]; } - fileNames = ts.map(fileNames, ts.normalizePath); - var documentHighlights = this.getDocumentHighlightsAtCurrentPosition(fileNames) || []; - for (var _i = 0, documentHighlights_1 = documentHighlights; _i < documentHighlights_1.length; _i++) { - var dh = documentHighlights_1[_i]; - if (fileNames.indexOf(dh.fileName) === -1) { - this.raiseError("verifyDocumentHighlights failed - got highlights in unexpected file name " + dh.fileName); - } - } - var _loop_9 = function (fileName) { - var expectedRangesInFile = expectedRanges.filter(function (r) { return ts.normalizePath(r.fileName) === fileName; }); - var highlights = ts.find(documentHighlights, function (dh) { return dh.fileName === fileName; }); - var spansInFile = highlights ? highlights.highlightSpans.sort(function (s1, s2) { return s1.textSpan.start - s2.textSpan.start; }) : []; - if (expectedRangesInFile.length !== spansInFile.length) { - this_4.raiseError("verifyDocumentHighlights failed - In " + fileName + ", expected " + expectedRangesInFile.length + " highlights, got " + spansInFile.length); - } - ts.zipWith(expectedRangesInFile, spansInFile, function (expectedRange, span) { - if (span.textSpan.start !== expectedRange.pos || ts.textSpanEnd(span.textSpan) !== expectedRange.end) { - _this.raiseError("verifyDocumentHighlights failed - span does not match, actual: " + stringify(span.textSpan) + ", expected: " + expectedRange.pos + "--" + expectedRange.end); - } - }); - }; - var this_4 = this; - for (var _a = 0, fileNames_1 = fileNames; _a < fileNames_1.length; _a++) { - var fileName = fileNames_1[_a]; - _loop_9(fileName); - } - }; - TestState.prototype.verifyCodeFixAvailable = function (negative, expected) { - assert(!negative || !expected); - var codeFixes = this.getCodeFixes(this.activeFile.fileName); - var actuals = codeFixes.map(function (fix) { return ({ description: fix.description, commands: fix.commands }); }); - this.assertObjectsEqual(actuals, negative ? ts.emptyArray : expected); - }; - TestState.prototype.verifyApplicableRefactorAvailableAtMarker = function (negative, markerName) { - var isAvailable = this.getApplicableRefactors(this.getMarkerByName(markerName).position).length > 0; - if (negative && isAvailable) { - this.raiseError("verifyApplicableRefactorAvailableAtMarker failed - expected no refactor at marker " + markerName + " but found some."); - } - if (!negative && !isAvailable) { - this.raiseError("verifyApplicableRefactorAvailableAtMarker failed - expected a refactor at marker " + markerName + " but found none."); - } - }; - TestState.prototype.getSelection = function () { - return { - pos: this.currentCaretPosition, - end: this.selectionEnd === -1 ? this.currentCaretPosition : this.selectionEnd - }; - }; - TestState.prototype.verifyRefactorAvailable = function (negative, name, actionName) { - var refactors = this.getApplicableRefactors(this.getSelection()); - refactors = refactors.filter(function (r) { return r.name === name && (actionName === undefined || r.actions.some(function (a) { return a.name === actionName; })); }); - var isAvailable = refactors.length > 0; - if (negative) { - if (isAvailable) { - this.raiseError("verifyApplicableRefactorAvailableForRange failed - expected no refactor but found: " + refactors.map(function (r) { return r.name; }).join(", ")); - } - } - else { - if (!isAvailable) { - this.raiseError("verifyApplicableRefactorAvailableForRange failed - expected a refactor but found none."); - } - if (refactors.length > 1) { - this.raiseError(refactors.length + " available refactors both have name " + name + " and action " + actionName); - } - } - }; - TestState.prototype.verifyRefactor = function (_a) { - var name = _a.name, actionName = _a.actionName, refactors = _a.refactors; - var actualRefactors = this.getApplicableRefactors(this.getSelection()).filter(function (r) { return r.name === name && r.actions.some(function (a) { return a.name === actionName; }); }); - this.assertObjectsEqual(actualRefactors, refactors); - }; - TestState.prototype.verifyApplicableRefactorAvailableForRange = function (negative) { - var ranges = this.getRanges(); - if (!(ranges && ranges.length === 1)) { - throw new Error("Exactly one refactor range is allowed per test."); - } - var isAvailable = this.getApplicableRefactors(ts.first(ranges)).length > 0; - if (negative && isAvailable) { - this.raiseError("verifyApplicableRefactorAvailableForRange failed - expected no refactor but found some."); - } - if (!negative && !isAvailable) { - this.raiseError("verifyApplicableRefactorAvailableForRange failed - expected a refactor but found none."); - } - }; - TestState.prototype.applyRefactor = function (_a) { - var refactorName = _a.refactorName, actionName = _a.actionName, actionDescription = _a.actionDescription, newContentWithRenameMarker = _a.newContent; - var range = this.getSelection(); - var refactors = this.getApplicableRefactors(range); - var refactorsWithName = refactors.filter(function (r) { return r.name === refactorName; }); - if (refactorsWithName.length === 0) { - this.raiseError("The expected refactor: " + refactorName + " is not available at the marker location.\nAvailable refactors: " + refactors.map(function (r) { return r.name; })); - } - var action = ts.firstDefined(refactorsWithName, function (refactor) { return refactor.actions.find(function (a) { return a.name === actionName; }); }); - if (!action) { - throw this.raiseError("The expected action: " + actionName + " is not included in: " + ts.flatMap(refactorsWithName, function (r) { return r.actions.map(function (a) { return a.name; }); })); - } - if (action.description !== actionDescription) { - this.raiseError("Expected action description to be " + JSON.stringify(actionDescription) + ", got: " + JSON.stringify(action.description)); - } - var editInfo = this.languageService.getEditsForRefactor(this.activeFile.fileName, this.formatCodeSettings, range, refactorName, actionName, ts.defaultPreferences); - for (var _i = 0, _b = editInfo.edits; _i < _b.length; _i++) { - var edit = _b[_i]; - this.applyEdits(edit.fileName, edit.textChanges, /*isFormattingEdit*/ false); - } - var _c = parseNewContent(), renamePosition = _c.renamePosition, newContent = _c.newContent; - this.verifyCurrentFileContent(newContent); - if (renamePosition === undefined) { - if (editInfo.renameLocation !== undefined) { - this.raiseError("Did not expect a rename location, got " + editInfo.renameLocation); - } - } - else { - // TODO: test editInfo.renameFilename value - assert.isDefined(editInfo.renameFilename); - if (renamePosition !== editInfo.renameLocation) { - this.raiseError("Expected rename position of " + renamePosition + ", but got " + editInfo.renameLocation); - } - } - function parseNewContent() { - var renamePosition = newContentWithRenameMarker.indexOf("/*RENAME*/"); - if (renamePosition === -1) { - return { renamePosition: undefined, newContent: newContentWithRenameMarker }; - } - else { - var newContent_1 = newContentWithRenameMarker.slice(0, renamePosition) + newContentWithRenameMarker.slice(renamePosition + "/*RENAME*/".length); - return { renamePosition: renamePosition, newContent: newContent_1 }; - } - } - }; - TestState.prototype.noMoveToNewFile = function () { - for (var _i = 0, _a = this.getRanges(); _i < _a.length; _i++) { - var range = _a[_i]; - for (var _b = 0, _c = this.getApplicableRefactors(range, { allowTextChangesInNewFiles: true }); _b < _c.length; _b++) { - var refactor = _c[_b]; - if (refactor.name === "Move to a new file") { - ts.Debug.fail("Did not expect to get 'move to a new file' refactor"); - } - } - } - }; - TestState.prototype.moveToNewFile = function (options) { - assert(this.getRanges().length === 1); - var range = this.getRanges()[0]; - var refactor = ts.find(this.getApplicableRefactors(range, { allowTextChangesInNewFiles: true }), function (r) { return r.name === "Move to a new file"; }); - assert(refactor.actions.length === 1); - var action = ts.first(refactor.actions); - assert(action.name === "Move to a new file" && action.description === "Move to a new file"); - var editInfo = this.languageService.getEditsForRefactor(this.activeFile.fileName, this.formatCodeSettings, range, refactor.name, action.name, options.preferences || ts.defaultPreferences); - this.testNewFileContents(editInfo.edits, options.newFileContents); - }; - TestState.prototype.testNewFileContents = function (edits, newFileContents) { - var _loop_10 = function (edit) { - var newContent = newFileContents[edit.fileName]; - if (newContent === undefined) { - this_5.raiseError("There was an edit in " + edit.fileName + " but new content was not specified."); - } - if (this_5.testData.files.some(function (f) { return f.fileName === edit.fileName; })) { - this_5.applyEdits(edit.fileName, edit.textChanges, /*isFormattingEdit*/ false); - this_5.openFile(edit.fileName); - this_5.verifyCurrentFileContent(newContent); - } - else { - assert(edit.textChanges.length === 1); - var change = ts.first(edit.textChanges); - assert.deepEqual(change.span, ts.createTextSpan(0, 0)); - assert.equal(change.newText, newContent, "Content for " + edit.fileName); - } - }; - var this_5 = this; - for (var _i = 0, edits_1 = edits; _i < edits_1.length; _i++) { - var edit = edits_1[_i]; - _loop_10(edit); - } - var _loop_11 = function (fileName) { - assert(edits.some(function (e) { return e.fileName === fileName; })); - }; - for (var fileName in newFileContents) { - _loop_11(fileName); - } - }; - TestState.prototype.verifyFileAfterApplyingRefactorAtMarker = function (markerName, expectedContent, refactorNameToApply, actionName, formattingOptions) { - formattingOptions = formattingOptions || this.formatCodeSettings; - var markerPos = this.getMarkerByName(markerName).position; - var applicableRefactors = this.languageService.getApplicableRefactors(this.activeFile.fileName, markerPos, ts.defaultPreferences); - var applicableRefactorToApply = ts.find(applicableRefactors, function (refactor) { return refactor.name === refactorNameToApply; }); - if (!applicableRefactorToApply) { - this.raiseError("The expected refactor: " + refactorNameToApply + " is not available at the marker location."); - } - var editInfo = this.languageService.getEditsForRefactor(this.activeFile.fileName, formattingOptions, markerPos, refactorNameToApply, actionName, ts.defaultPreferences); - for (var _i = 0, _a = editInfo.edits; _i < _a.length; _i++) { - var edit = _a[_i]; - this.applyEdits(edit.fileName, edit.textChanges, /*isFormattingEdit*/ false); - } - var actualContent = this.getFileContent(this.activeFile.fileName); - if (actualContent !== expectedContent) { - this.raiseError("verifyFileAfterApplyingRefactors failed:\n" + showTextDiff(expectedContent, actualContent)); - } - }; - TestState.prototype.printAvailableCodeFixes = function () { - var codeFixes = this.getCodeFixes(this.activeFile.fileName); - Harness.IO.log(stringify(codeFixes)); - }; - // Get the text of the entire line the caret is currently at - TestState.prototype.getCurrentLineContent = function () { - var text = this.getFileContent(this.activeFile.fileName); - var pos = this.currentCaretPosition; - var startPos = pos, endPos = pos; - while (startPos > 0) { - var ch = text.charCodeAt(startPos - 1); - if (ch === 13 /* carriageReturn */ || ch === 10 /* lineFeed */) { - break; - } - startPos--; - } - while (endPos < text.length) { - var ch = text.charCodeAt(endPos); - if (ch === 13 /* carriageReturn */ || ch === 10 /* lineFeed */) { - break; - } - endPos++; - } - return text.substring(startPos, endPos); - }; - TestState.prototype.assertItemInCompletionList = function (items, entryId, text, documentation, kind, spanIndex, hasAction, options) { - var _this = this; - var eq = function (a, b, msg) { - assert.deepEqual(a, b, _this.assertionMessageAtLastKnownMarker(msg + " for " + stringify(entryId))); - }; - var matchingItems = items.filter(function (item) { return item.name === entryId.name && item.source === entryId.source; }); - if (matchingItems.length === 0) { - var itemsString = items.map(function (item) { return stringify({ name: item.name, source: item.source, kind: item.kind }); }).join(",\n"); - this.raiseError("Expected \"" + stringify({ entryId: entryId, text: text, documentation: documentation, kind: kind }) + "\" to be in list [" + itemsString + "]"); - } - else if (matchingItems.length > 1) { - this.raiseError("Found duplicate completion items for " + stringify(entryId)); - } - var item = matchingItems[0]; - if (documentation !== undefined || text !== undefined || entryId.source !== undefined) { - var details = this.getCompletionEntryDetails(item.name, item.source); - if (documentation !== undefined) { - eq(ts.displayPartsToString(details.documentation), documentation, "completion item documentation"); - } - if (text !== undefined) { - eq(ts.displayPartsToString(details.displayParts), text, "completion item detail text"); - } - if (entryId.source === undefined) { - eq(options && options.sourceDisplay, /*b*/ undefined, "source display"); - } - else { - eq(details.source, [ts.textPart(options.sourceDisplay)], "source display"); - } - } - if (kind !== undefined) { - if (typeof kind === "string") { - eq(item.kind, kind, "completion item kind"); - } - else { - if (kind.kind) { - eq(item.kind, kind.kind, "completion item kind"); - } - if (kind.kindModifiers !== undefined) { - eq(item.kindModifiers, kind.kindModifiers, "completion item kindModifiers"); - } - } - } - if (spanIndex !== undefined) { - var span = this.getTextSpanForRangeAtIndex(spanIndex); - assert.isTrue(TestState.textSpansEqual(span, item.replacementSpan), this.assertionMessageAtLastKnownMarker(stringify(span) + " does not equal " + stringify(item.replacementSpan) + " replacement span for " + stringify(entryId))); - } - eq(item.hasAction, hasAction, "hasAction"); - eq(item.isRecommended, options && options.isRecommended, "isRecommended"); - eq(item.insertText, options && options.insertText, "insertText"); - eq(item.replacementSpan, options && options.replacementSpan && ts.createTextSpanFromRange(options.replacementSpan), "replacementSpan"); - }; - TestState.prototype.findFile = function (indexOrName) { - if (typeof indexOrName === "number") { - var index = indexOrName; - if (index >= this.testData.files.length) { - throw new Error("File index (" + index + ") in openFile was out of range. There are only " + this.testData.files.length + " files in this test."); - } - else { - return this.testData.files[index]; - } - } - else if (ts.isString(indexOrName)) { - var name_1 = ts.normalizePath(indexOrName); - // names are stored in the compiler with this relative path, this allows people to use goTo.file on just the fileName - name_1 = name_1.indexOf("/") === -1 ? (this.basePath + "/" + name_1) : name_1; - var availableNames_1 = []; - var result = ts.forEach(this.testData.files, function (file) { - var fn = ts.normalizePath(file.fileName); - if (fn) { - if (fn === name_1) { - return file; - } - availableNames_1.push(fn); - } - }); - if (!result) { - throw new Error("No test file named \"" + name_1 + "\" exists. Available file names are: " + availableNames_1.join(", ")); - } - return result; - } - else { - return ts.Debug.assertNever(indexOrName); - } - }; - TestState.prototype.getLineColStringAtPosition = function (position) { - var pos = this.languageServiceAdapterHost.positionToLineAndCharacter(this.activeFile.fileName, position); - return "line " + (pos.line + 1) + ", col " + pos.character; - }; - TestState.prototype.getTextSpanForRangeAtIndex = function (index) { - var ranges = this.getRanges(); - if (ranges.length > index) { - return ts.createTextSpanFromRange(ranges[index]); - } - else { - throw this.raiseError("Supplied span index: " + index + " does not exist in range list of size: " + ranges.length); - } - }; - TestState.prototype.getMarkerByName = function (markerName) { - var markerPos = this.testData.markerPositions.get(markerName); - if (markerPos === undefined) { - throw new Error("Unknown marker \"" + markerName + "\" Available markers: " + this.getMarkerNames().map(function (m) { return "\"" + m + "\""; }).join(", ")); - } - else { - return markerPos; - } - }; - TestState.prototype.setCancelled = function (numberOfCalls) { - this.cancellationToken.setCancelled(numberOfCalls); - }; - TestState.prototype.resetCancelled = function () { - this.cancellationToken.resetCancelled(); - }; - TestState.textSpansEqual = function (a, b) { - return !!a && !!b && a.start === b.start && a.length === b.length; - }; - TestState.prototype.getEditsForFileRename = function (options) { - var changes = this.languageService.getEditsForFileRename(options.oldPath, options.newPath, this.formatCodeSettings, ts.defaultPreferences); - this.testNewFileContents(changes, options.newFileContents); - }; - TestState.prototype.getApplicableRefactors = function (positionOrRange, preferences) { - if (preferences === void 0) { preferences = ts.defaultPreferences; } - return this.languageService.getApplicableRefactors(this.activeFile.fileName, positionOrRange, preferences) || ts.emptyArray; - }; - return TestState; - }()); - FourSlash.TestState = TestState; - function runFourSlashTest(basePath, testType, fileName) { - var content = Harness.IO.readFile(fileName); - runFourSlashTestContent(basePath, testType, content, fileName); - } - FourSlash.runFourSlashTest = runFourSlashTest; - function runFourSlashTestContent(basePath, testType, content, fileName) { - // Give file paths an absolute path for the virtual file system - var absoluteBasePath = ts.combinePaths(Harness.virtualFileSystemRoot, basePath); - var absoluteFileName = ts.combinePaths(Harness.virtualFileSystemRoot, fileName); - // Parse out the files and their metadata - var testData = parseTestData(absoluteBasePath, content, absoluteFileName); - var state = new TestState(absoluteBasePath, testType, testData); - var output = ts.transpileModule(content, { reportDiagnostics: true }); - if (output.diagnostics.length > 0) { - throw new Error("Syntax error in " + absoluteBasePath + ": " + output.diagnostics[0].messageText); - } - runCode(output.outputText, state); - } - FourSlash.runFourSlashTestContent = runFourSlashTestContent; - function runCode(code, state) { - // Compile and execute the test - var wrappedCode = "(function(test, goTo, verify, edit, debug, format, cancellation, classification, verifyOperationIsCancelled) {\n" + code + "\n})"; - try { - var test_1 = new FourSlashInterface.Test(state); - var goTo = new FourSlashInterface.GoTo(state); - var verify = new FourSlashInterface.Verify(state); - var edit = new FourSlashInterface.Edit(state); - var debug = new FourSlashInterface.Debug(state); - var format = new FourSlashInterface.Format(state); - var cancellation = new FourSlashInterface.Cancellation(state); - var f = eval(wrappedCode); - f(test_1, goTo, verify, edit, debug, format, cancellation, FourSlashInterface.Classification, verifyOperationIsCancelled); - } - catch (err) { - throw err; - } - } - function chompLeadingSpace(content) { - var lines = content.split("\n"); - for (var _i = 0, lines_4 = lines; _i < lines_4.length; _i++) { - var line = lines_4[_i]; - if ((line.length !== 0) && (line.charAt(0) !== " ")) { - return content; - } - } - return lines.map(function (s) { return s.substr(1); }).join("\n"); - } - function parseTestData(basePath, contents, fileName) { - // Regex for parsing options in the format "@Alpha: Value of any sort" - var optionRegex = /^\s*@(\w+): (.*)\s*/; - // List of all the subfiles we've parsed out - var files = []; - // Global options - var globalOptions = {}; - // Marker positions - // Split up the input file by line - // Note: IE JS engine incorrectly handles consecutive delimiters here when using RegExp split, so - // we have to string-based splitting instead and try to figure out the delimiting chars - var lines = contents.split("\n"); - var markerPositions = ts.createMap(); - var markers = []; - var ranges = []; - // Stuff related to the subfile we're parsing - var currentFileContent; - var currentFileName = fileName; - var currentFileSymlinks; - var currentFileOptions = {}; - function nextFile() { - if (currentFileContent === undefined) - return; - var file = parseFileContent(currentFileContent, currentFileName, markerPositions, markers, ranges); - file.fileOptions = currentFileOptions; - file.symlinks = currentFileSymlinks; - // Store result file - files.push(file); - currentFileContent = undefined; - currentFileOptions = {}; - currentFileName = fileName; - currentFileSymlinks = undefined; - } - for (var _i = 0, lines_5 = lines; _i < lines_5.length; _i++) { - var line = lines_5[_i]; - if (line.length > 0 && line.charAt(line.length - 1) === "\r") { - line = line.substr(0, line.length - 1); - } - if (line.substr(0, 4) === "////") { - var text = line.substr(4); - currentFileContent = currentFileContent === undefined ? text : currentFileContent + "\n" + text; - } - else if (line.substr(0, 2) === "//") { - // Comment line, check for global/file @options and record them - var match = optionRegex.exec(line.substr(2)); - if (match) { - var _a = match.slice(1), key = _a[0], value = _a[1]; - if (!ts.contains(fileMetadataNames, key)) { - // Check if the match is already existed in the global options - if (globalOptions[key] !== undefined) { - throw new Error("Global option '" + key + "' already exists"); - } - globalOptions[key] = value; - } - else { - switch (key) { - case "Filename" /* fileName */: - // Found an @FileName directive, if this is not the first then create a new subfile - nextFile(); - currentFileName = ts.isRootedDiskPath(value) ? value : basePath + "/" + value; - currentFileOptions[key] = value; - break; - case "Symlink" /* symlink */: - currentFileSymlinks = ts.append(currentFileSymlinks, value); - break; - default: - // Add other fileMetadata flag - currentFileOptions[key] = value; - } - } - } - } - // Previously blank lines between fourslash content caused it to be considered as 2 files, - // Remove this behavior since it just causes errors now - else if (line !== "") { - // Code line, terminate current subfile if there is one - nextFile(); - } - } - // @Filename is the only directive that can be used in a test that contains tsconfig.json file. - var config = ts.find(files, isConfig); - if (config) { - var directive = getNonFileNameOptionInFileList(files); - if (!directive) { - directive = getNonFileNameOptionInObject(globalOptions); - } - if (directive) { - throw Error("It is not allowed to use " + config.fileName + " along with directive '" + directive + "'"); - } - } - return { - markerPositions: markerPositions, - markers: markers, - globalOptions: globalOptions, - files: files, - ranges: ranges - }; - } - function isConfig(file) { - return Harness.getConfigNameFromFileName(file.fileName) !== undefined; - } - function getNonFileNameOptionInFileList(files) { - return ts.forEach(files, function (f) { return getNonFileNameOptionInObject(f.fileOptions); }); - } - function getNonFileNameOptionInObject(optionObject) { - for (var option in optionObject) { - if (option !== "Filename" /* fileName */) { - return option; - } - } - return undefined; - } - var State; - (function (State) { - State[State["none"] = 0] = "none"; - State[State["inSlashStarMarker"] = 1] = "inSlashStarMarker"; - State[State["inObjectMarker"] = 2] = "inObjectMarker"; - })(State || (State = {})); - function reportError(fileName, line, col, message) { - var errorMessage = fileName + "(" + line + "," + col + "): " + message; - throw new Error(errorMessage); - } - function recordObjectMarker(fileName, location, text, markerMap, markers) { - var markerValue; - try { - // Attempt to parse the marker value as JSON - markerValue = JSON.parse("{ " + text + " }"); - } - catch (e) { - reportError(fileName, location.sourceLine, location.sourceColumn, "Unable to parse marker text " + e.message); - } - if (markerValue === undefined) { - reportError(fileName, location.sourceLine, location.sourceColumn, "Object markers can not be empty"); - return undefined; - } - var marker = { - fileName: fileName, - position: location.position, - data: markerValue - }; - // Object markers can be anonymous - if (markerValue.name) { - markerMap.set(markerValue.name, marker); - } - markers.push(marker); - return marker; - } - function recordMarker(fileName, location, name, markerMap, markers) { - var marker = { - fileName: fileName, - position: location.position - }; - // Verify markers for uniqueness - if (markerMap.has(name)) { - var message = "Marker '" + name + "' is duplicated in the source file contents."; - reportError(marker.fileName, location.sourceLine, location.sourceColumn, message); - return undefined; - } - else { - markerMap.set(name, marker); - markers.push(marker); - return marker; - } - } - function parseFileContent(content, fileName, markerMap, markers, ranges) { - content = chompLeadingSpace(content); - // Any slash-star comment with a character not in this string is not a marker. - var validMarkerChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz$1234567890_"; - /// The file content (minus metacharacters) so far - var output = ""; - /// The current marker (or maybe multi-line comment?) we're parsing, possibly - var openMarker; - /// A stack of the open range markers that are still unclosed - var openRanges = []; - /// A list of ranges we've collected so far */ - var localRanges = []; - /// The latest position of the start of an unflushed plain text area - var lastNormalCharPosition = 0; - /// The total number of metacharacters removed from the file (so far) - var difference = 0; - /// The fourslash file state object we are generating - var state = 0 /* none */; - /// Current position data - var line = 1; - var column = 1; - var flush = function (lastSafeCharIndex) { - output = output + content.substr(lastNormalCharPosition, lastSafeCharIndex === undefined ? undefined : lastSafeCharIndex - lastNormalCharPosition); - }; - if (content.length > 0) { - var previousChar = content.charAt(0); - for (var i = 1; i < content.length; i++) { - var currentChar = content.charAt(i); - switch (state) { - case 0 /* none */: - if (previousChar === "[" && currentChar === "|") { - // found a range start - openRanges.push({ - position: (i - 1) - difference, - sourcePosition: i - 1, - sourceLine: line, - sourceColumn: column, - }); - // copy all text up to marker position - flush(i - 1); - lastNormalCharPosition = i + 1; - difference += 2; - } - else if (previousChar === "|" && currentChar === "]") { - // found a range end - var rangeStart = openRanges.pop(); - if (!rangeStart) { - throw reportError(fileName, line, column, "Found range end with no matching start."); - } - var range = { - fileName: fileName, - pos: rangeStart.position, - end: (i - 1) - difference, - marker: rangeStart.marker - }; - localRanges.push(range); - // copy all text up to range marker position - flush(i - 1); - lastNormalCharPosition = i + 1; - difference += 2; - } - else if (previousChar === "/" && currentChar === "*") { - // found a possible marker start - state = 1 /* inSlashStarMarker */; - openMarker = { - position: (i - 1) - difference, - sourcePosition: i - 1, - sourceLine: line, - sourceColumn: column, - }; - } - else if (previousChar === "{" && currentChar === "|") { - // found an object marker start - state = 2 /* inObjectMarker */; - openMarker = { - position: (i - 1) - difference, - sourcePosition: i - 1, - sourceLine: line, - sourceColumn: column, - }; - flush(i - 1); - } - break; - case 2 /* inObjectMarker */: - // Object markers are only ever terminated by |} and have no content restrictions - if (previousChar === "|" && currentChar === "}") { - // Record the marker - var objectMarkerNameText = content.substring(openMarker.sourcePosition + 2, i - 1).trim(); - var marker = recordObjectMarker(fileName, openMarker, objectMarkerNameText, markerMap, markers); - if (openRanges.length > 0) { - openRanges[openRanges.length - 1].marker = marker; - } - // Set the current start to point to the end of the current marker to ignore its text - lastNormalCharPosition = i + 1; - difference += i + 1 - openMarker.sourcePosition; - // Reset the state - openMarker = undefined; - state = 0 /* none */; - } - break; - case 1 /* inSlashStarMarker */: - if (previousChar === "*" && currentChar === "/") { - // Record the marker - // start + 2 to ignore the */, -1 on the end to ignore the * (/ is next) - var markerNameText = content.substring(openMarker.sourcePosition + 2, i - 1).trim(); - var marker = recordMarker(fileName, openMarker, markerNameText, markerMap, markers); - if (openRanges.length > 0) { - openRanges[openRanges.length - 1].marker = marker; - } - // Set the current start to point to the end of the current marker to ignore its text - flush(openMarker.sourcePosition); - lastNormalCharPosition = i + 1; - difference += i + 1 - openMarker.sourcePosition; - // Reset the state - openMarker = undefined; - state = 0 /* none */; - } - else if (validMarkerChars.indexOf(currentChar) < 0) { - if (currentChar === "*" && i < content.length - 1 && content.charAt(i + 1) === "/") { - // The marker is about to be closed, ignore the 'invalid' char - } - else { - // We've hit a non-valid marker character, so we were actually in a block comment - // Bail out the text we've gathered so far back into the output - flush(i); - lastNormalCharPosition = i; - openMarker = undefined; - state = 0 /* none */; - } - } - break; - } - if (currentChar === "\n" && previousChar === "\r") { - // Ignore trailing \n after a \r - continue; - } - else if (currentChar === "\n" || currentChar === "\r") { - line++; - column = 1; - continue; - } - column++; - previousChar = currentChar; - } - } - // Add the remaining text - flush(/*lastSafeCharIndex*/ undefined); - if (openRanges.length > 0) { - var openRange = openRanges[0]; - reportError(fileName, openRange.sourceLine, openRange.sourceColumn, "Unterminated range."); - } - if (openMarker) { - reportError(fileName, openMarker.sourceLine, openMarker.sourceColumn, "Unterminated marker."); - } - // put ranges in the correct order - localRanges = localRanges.sort(function (a, b) { return a.pos < b.pos ? -1 : 1; }); - localRanges.forEach(function (r) { ranges.push(r); }); - return { - content: output, - fileOptions: {}, - version: 0, - fileName: fileName, - }; - } - function stringify(data, replacer) { - return JSON.stringify(data, replacer, 2); - } - /** Collects an array of unique outputs. */ - function unique(inputs, getOutput) { - var set = ts.createMap(); - for (var _i = 0, inputs_2 = inputs; _i < inputs_2.length; _i++) { - var input = inputs_2[_i]; - var out = getOutput(input); - set.set(out, true); - } - return ts.arrayFrom(set.keys()); - } - function toArray(x) { - return ts.isArray(x) ? x : [x]; - } - function makeWhitespaceVisible(text) { - return text.replace(/ /g, "\u00B7").replace(/\r/g, "\u00B6").replace(/\n/g, "\u2193\n").replace(/\t/g, "\u2192\ "); - } - function showTextDiff(expected, actual) { - // Only show whitespace if the difference is whitespace-only. - if (differOnlyByWhitespace(expected, actual)) { - expected = makeWhitespaceVisible(expected); - actual = makeWhitespaceVisible(actual); - } - return "Expected:\n" + expected + "\nActual:\n" + actual; - } - function differOnlyByWhitespace(a, b) { - return stripWhitespace(a) === stripWhitespace(b); - } - function stripWhitespace(s) { - return s.replace(/\s/g, ""); - } - function findDuplicatedElement(a, equal) { - for (var i = 0; i < a.length; i++) { - for (var j = i + 1; j < a.length; j++) { - if (equal(a[i], a[j])) { - return a[i]; - } - } - } - } -})(FourSlash || (FourSlash = {})); -var FourSlashInterface; -(function (FourSlashInterface) { - var Test = /** @class */ (function () { - function Test(state) { - this.state = state; - } - Test.prototype.markers = function () { - return this.state.getMarkers(); - }; - Test.prototype.markerNames = function () { - return this.state.getMarkerNames(); - }; - Test.prototype.marker = function (name) { - return this.state.getMarkerByName(name); - }; - Test.prototype.markerName = function (m) { - return this.state.markerName(m); - }; - Test.prototype.ranges = function () { - return this.state.getRanges(); - }; - Test.prototype.spans = function () { - return this.ranges().map(function (r) { return ts.createTextSpan(r.pos, r.end - r.pos); }); - }; - Test.prototype.rangesByText = function () { - return this.state.rangesByText(); - }; - Test.prototype.markerByName = function (s) { - return this.state.getMarkerByName(s); - }; - Test.prototype.symbolsInScope = function (range) { - return this.state.symbolsInScope(range); - }; - Test.prototype.setTypesRegistry = function (map) { - this.state.setTypesRegistry(map); - }; - return Test; - }()); - FourSlashInterface.Test = Test; - var GoTo = /** @class */ (function () { - function GoTo(state) { - this.state = state; - } - // Moves the caret to the specified marker, - // or the anonymous marker ('/**/') if no name - // is given - GoTo.prototype.marker = function (name) { - this.state.goToMarker(name); - }; - GoTo.prototype.eachMarker = function (a, b) { - var _this = this; - var markers = typeof a === "function" ? this.state.getMarkers() : a.map(function (m) { return _this.state.getMarkerByName(m); }); - this.state.goToEachMarker(markers, typeof a === "function" ? a : b); - }; - GoTo.prototype.rangeStart = function (range) { - this.state.goToRangeStart(range); - }; - GoTo.prototype.eachRange = function (action) { - this.state.goToEachRange(action); - }; - GoTo.prototype.bof = function () { - this.state.goToBOF(); - }; - GoTo.prototype.eof = function () { - this.state.goToEOF(); - }; - GoTo.prototype.implementation = function () { - this.state.goToImplementation(); - }; - GoTo.prototype.position = function (position, fileNameOrIndex) { - if (fileNameOrIndex !== undefined) { - this.file(fileNameOrIndex); - } - this.state.goToPosition(position); - }; - // Opens a file, given either its index as it - // appears in the test source, or its filename - // as specified in the test metadata - GoTo.prototype.file = function (indexOrName, content, scriptKindName) { - this.state.openFile(indexOrName, content, scriptKindName); - }; - GoTo.prototype.select = function (startMarker, endMarker) { - this.state.select(startMarker, endMarker); - }; - GoTo.prototype.selectRange = function (range) { - this.state.selectRange(range); - }; - return GoTo; - }()); - FourSlashInterface.GoTo = GoTo; - var VerifyNegatable = /** @class */ (function () { - function VerifyNegatable(state, negative) { - if (negative === void 0) { negative = false; } - this.state = state; - this.negative = negative; - this.allowedClassElementKeywords = [ - "public", - "private", - "protected", - "static", - "abstract", - "readonly", - "get", - "set", - "constructor", - "async" - ]; - this.allowedConstructorParameterKeywords = [ - "public", - "private", - "protected", - "readonly", - ]; - if (!negative) { - this.not = new VerifyNegatable(state, true); - } - } - VerifyNegatable.prototype.completionListCount = function (expectedCount) { - this.state.verifyCompletionListCount(expectedCount, this.negative); - }; - // Verifies the completion list contains the specified symbol. The - // completion list is brought up if necessary - VerifyNegatable.prototype.completionListContains = function (entryId, text, documentation, kind, spanIndex, hasAction, options) { - if (typeof entryId === "string") { - entryId = { name: entryId, source: undefined }; - } - if (this.negative) { - this.state.verifyCompletionListDoesNotContain(entryId, text, documentation, kind, spanIndex, options); - } - else { - this.state.verifyCompletionListContains(entryId, text, documentation, kind, spanIndex, hasAction, options); - } - }; - // Verifies the completion list items count to be greater than the specified amount. The - // completion list is brought up if necessary - VerifyNegatable.prototype.completionListItemsCountIsGreaterThan = function (count) { - this.state.verifyCompletionListItemsCountIsGreaterThan(count, this.negative); - }; - VerifyNegatable.prototype.assertHasRanges = function (ranges) { - assert(ranges.length !== 0, "Array of ranges is expected to be non-empty"); - }; - VerifyNegatable.prototype.completionListIsEmpty = function () { - this.state.verifyCompletionListIsEmpty(this.negative); - }; - VerifyNegatable.prototype.completionListContainsClassElementKeywords = function () { - for (var _i = 0, _a = this.allowedClassElementKeywords; _i < _a.length; _i++) { - var keyword = _a[_i]; - this.completionListContains(keyword, keyword, /*documentation*/ undefined, "keyword"); - } - }; - VerifyNegatable.prototype.completionListContainsConstructorParameterKeywords = function () { - for (var _i = 0, _a = this.allowedConstructorParameterKeywords; _i < _a.length; _i++) { - var keyword = _a[_i]; - this.completionListContains(keyword, keyword, /*documentation*/ undefined, "keyword"); - } - }; - VerifyNegatable.prototype.completionListIsGlobal = function (expected) { - this.state.verifyCompletionListIsGlobal(expected); - }; - VerifyNegatable.prototype.completionListAllowsNewIdentifier = function () { - this.state.verifyCompletionListAllowsNewIdentifier(this.negative); - }; - VerifyNegatable.prototype.noSignatureHelp = function () { - var markers = []; - for (var _i = 0; _i < arguments.length; _i++) { - markers[_i] = arguments[_i]; - } - this.state.verifyNoSignatureHelp(markers); - }; - VerifyNegatable.prototype.signatureHelp = function () { - var options = []; - for (var _i = 0; _i < arguments.length; _i++) { - options[_i] = arguments[_i]; - } - this.state.verifySignatureHelp(options); - }; - VerifyNegatable.prototype.errorExistsBetweenMarkers = function (startMarker, endMarker) { - this.state.verifyErrorExistsBetweenMarkers(startMarker, endMarker, !this.negative); - }; - VerifyNegatable.prototype.errorExistsAfterMarker = function (markerName) { - if (markerName === void 0) { markerName = ""; } - this.state.verifyErrorExistsAfterMarker(markerName, !this.negative, /*after*/ true); - }; - VerifyNegatable.prototype.errorExistsBeforeMarker = function (markerName) { - if (markerName === void 0) { markerName = ""; } - this.state.verifyErrorExistsAfterMarker(markerName, !this.negative, /*after*/ false); - }; - VerifyNegatable.prototype.quickInfoExists = function () { - this.state.verifyQuickInfoExists(this.negative); - }; - VerifyNegatable.prototype.typeDefinitionCountIs = function (expectedCount) { - this.state.verifyTypeDefinitionsCount(this.negative, expectedCount); - }; - VerifyNegatable.prototype.implementationListIsEmpty = function () { - this.state.verifyImplementationListIsEmpty(this.negative); - }; - VerifyNegatable.prototype.isValidBraceCompletionAtPosition = function (openingBrace) { - this.state.verifyBraceCompletionAtPosition(this.negative, openingBrace); - }; - VerifyNegatable.prototype.jsxClosingTag = function (map) { - this.state.verifyJsxClosingTag(map); - }; - VerifyNegatable.prototype.isInCommentAtPosition = function (onlyMultiLineDiverges) { - this.state.verifySpanOfEnclosingComment(this.negative, onlyMultiLineDiverges); - }; - VerifyNegatable.prototype.codeFix = function (options) { - this.state.verifyCodeFix(options); - }; - VerifyNegatable.prototype.codeFixAvailable = function (options) { - this.state.verifyCodeFixAvailable(this.negative, options); - }; - VerifyNegatable.prototype.applicableRefactorAvailableAtMarker = function (markerName) { - this.state.verifyApplicableRefactorAvailableAtMarker(this.negative, markerName); - }; - VerifyNegatable.prototype.applicableRefactorAvailableForRange = function () { - this.state.verifyApplicableRefactorAvailableForRange(this.negative); - }; - VerifyNegatable.prototype.refactor = function (options) { - this.state.verifyRefactor(options); - }; - VerifyNegatable.prototype.refactorAvailable = function (name, actionName) { - this.state.verifyRefactorAvailable(this.negative, name, actionName); - }; - return VerifyNegatable; - }()); - FourSlashInterface.VerifyNegatable = VerifyNegatable; - var Verify = /** @class */ (function (_super) { - __extends(Verify, _super); - function Verify(state) { - return _super.call(this, state) || this; - } - Verify.prototype.completionsAt = function (markerName, completions, options) { - this.state.verifyCompletionsAt(markerName, completions, options); - }; - Verify.prototype.completions = function () { - var optionsArray = []; - for (var _i = 0; _i < arguments.length; _i++) { - optionsArray[_i] = arguments[_i]; - } - for (var _a = 0, optionsArray_1 = optionsArray; _a < optionsArray_1.length; _a++) { - var options = optionsArray_1[_a]; - this.state.verifyCompletions(options); - } - }; - Verify.prototype.quickInfoIs = function (expectedText, expectedDocumentation) { - this.state.verifyQuickInfoString(expectedText, expectedDocumentation); - }; - Verify.prototype.quickInfoAt = function (markerName, expectedText, expectedDocumentation) { - this.state.verifyQuickInfoAt(markerName, expectedText, expectedDocumentation); - }; - Verify.prototype.quickInfos = function (namesAndTexts) { - this.state.verifyQuickInfos(namesAndTexts); - }; - Verify.prototype.caretAtMarker = function (markerName) { - this.state.verifyCaretAtMarker(markerName); - }; - Verify.prototype.indentationIs = function (numberOfSpaces) { - this.state.verifyIndentationAtCurrentPosition(numberOfSpaces); - }; - Verify.prototype.indentationAtPositionIs = function (fileName, position, numberOfSpaces, indentStyle, baseIndentSize) { - if (indentStyle === void 0) { indentStyle = ts.IndentStyle.Smart; } - if (baseIndentSize === void 0) { baseIndentSize = 0; } - this.state.verifyIndentationAtPosition(fileName, position, numberOfSpaces, indentStyle, baseIndentSize); - }; - Verify.prototype.textAtCaretIs = function (text) { - this.state.verifyTextAtCaretIs(text); - }; - /** - * Compiles the current file and evaluates 'expr' in a context containing - * the emitted output, then compares (using ===) the result of that expression - * to 'value'. Do not use this function with external modules as it is not supported. - */ - Verify.prototype.eval = function (expr, value) { - this.state.verifyEval(expr, value); - }; - Verify.prototype.currentLineContentIs = function (text) { - this.state.verifyCurrentLineContent(text); - }; - Verify.prototype.currentFileContentIs = function (text) { - this.state.verifyCurrentFileContent(text); - }; - Verify.prototype.goToDefinitionIs = function (endMarkers) { - this.state.verifyGoToDefinitionIs(endMarkers); - }; - Verify.prototype.goToDefinition = function (arg0, endMarkerName) { - this.state.verifyGoToDefinition(arg0, endMarkerName); - }; - Verify.prototype.goToType = function (arg0, endMarkerName) { - this.state.verifyGoToType(arg0, endMarkerName); - }; - Verify.prototype.goToDefinitionForMarkers = function () { - var markerNames = []; - for (var _i = 0; _i < arguments.length; _i++) { - markerNames[_i] = arguments[_i]; - } - this.state.verifyGoToDefinitionForMarkers(markerNames); - }; - Verify.prototype.goToDefinitionName = function (name, containerName) { - this.state.verifyGoToDefinitionName(name, containerName); - }; - Verify.prototype.verifyGetEmitOutputForCurrentFile = function (expected) { - this.state.verifyGetEmitOutputForCurrentFile(expected); - }; - Verify.prototype.verifyGetEmitOutputContentsForCurrentFile = function (expected) { - this.state.verifyGetEmitOutputContentsForCurrentFile(expected); - }; - Verify.prototype.symbolAtLocation = function (startRange) { - var declarationRanges = []; - for (var _i = 1; _i < arguments.length; _i++) { - declarationRanges[_i - 1] = arguments[_i]; - } - this.state.verifySymbolAtLocation(startRange, declarationRanges); - }; - Verify.prototype.typeOfSymbolAtLocation = function (range, symbol, expected) { - this.state.verifyTypeOfSymbolAtLocation(range, symbol, expected); - }; - Verify.prototype.referenceGroups = function (starts, parts) { - this.state.verifyReferenceGroups(starts, parts); - }; - Verify.prototype.noReferences = function (markerNameOrRange) { - this.state.verifyNoReferences(markerNameOrRange); - }; - Verify.prototype.getReferencesForServerTest = function (expected) { - this.state.verifyGetReferencesForServerTest(expected); - }; - Verify.prototype.singleReferenceGroup = function (definition, ranges) { - this.state.verifySingleReferenceGroup(definition, ranges); - }; - Verify.prototype.findReferencesDefinitionDisplayPartsAtCaretAre = function (expected) { - this.state.verifyDisplayPartsOfReferencedSymbol(expected); - }; - Verify.prototype.noErrors = function () { - this.state.verifyNoErrors(); - }; - Verify.prototype.numberOfErrorsInCurrentFile = function (expected) { - this.state.verifyNumberOfErrorsInCurrentFile(expected); - }; - Verify.prototype.baselineCurrentFileBreakpointLocations = function () { - this.state.baselineCurrentFileBreakpointLocations(); - }; - Verify.prototype.baselineCurrentFileNameOrDottedNameSpans = function () { - this.state.baselineCurrentFileNameOrDottedNameSpans(); - }; - Verify.prototype.baselineGetEmitOutput = function (insertResultsIntoVfs) { - this.state.baselineGetEmitOutput(insertResultsIntoVfs); - }; - Verify.prototype.baselineQuickInfo = function () { - this.state.baselineQuickInfo(); - }; - Verify.prototype.nameOrDottedNameSpanTextIs = function (text) { - this.state.verifyCurrentNameOrDottedNameSpanText(text); - }; - Verify.prototype.outliningSpansInCurrentFile = function (spans, kind) { - this.state.verifyOutliningSpans(spans, kind); - }; - Verify.prototype.todoCommentsInCurrentFile = function (descriptors) { - this.state.verifyTodoComments(descriptors, this.state.getRanges()); - }; - Verify.prototype.matchingBracePositionInCurrentFile = function (bracePosition, expectedMatchPosition) { - this.state.verifyMatchingBracePosition(bracePosition, expectedMatchPosition); - }; - Verify.prototype.noMatchingBracePositionInCurrentFile = function (bracePosition) { - this.state.verifyNoMatchingBracePosition(bracePosition); - }; - Verify.prototype.docCommentTemplateAt = function (marker, expectedOffset, expectedText) { - this.state.goToMarker(marker); - this.state.verifyDocCommentTemplate({ newText: expectedText.replace(/\r?\n/g, "\r\n"), caretOffset: expectedOffset }); - }; - Verify.prototype.noDocCommentTemplateAt = function (marker) { - this.state.goToMarker(marker); - this.state.verifyDocCommentTemplate(/*expected*/ undefined); - }; - Verify.prototype.rangeAfterCodeFix = function (expectedText, includeWhiteSpace, errorCode, index) { - this.state.verifyRangeAfterCodeFix(expectedText, includeWhiteSpace, errorCode, index); - }; - Verify.prototype.codeFixAll = function (options) { - this.state.verifyCodeFixAll(options); - }; - Verify.prototype.fileAfterApplyingRefactorAtMarker = function (markerName, expectedContent, refactorNameToApply, actionName, formattingOptions) { - this.state.verifyFileAfterApplyingRefactorAtMarker(markerName, expectedContent, refactorNameToApply, actionName, formattingOptions); - }; - Verify.prototype.rangeIs = function (expectedText, includeWhiteSpace) { - this.state.verifyRangeIs(expectedText, includeWhiteSpace); - }; - Verify.prototype.getAndApplyCodeFix = function (errorCode, index) { - this.state.getAndApplyCodeActions(errorCode, index); - }; - Verify.prototype.applyCodeActionFromCompletion = function (markerName, options) { - this.state.applyCodeActionFromCompletion(markerName, options); - }; - Verify.prototype.importFixAtPosition = function (expectedTextArray, errorCode, preferences) { - this.state.verifyImportFixAtPosition(expectedTextArray, errorCode, preferences); - }; - Verify.prototype.navigationBar = function (json, options) { - this.state.verifyNavigationBar(json, options); - }; - Verify.prototype.navigationTree = function (json, options) { - this.state.verifyNavigationTree(json, options); - }; - Verify.prototype.navigationItemsListCount = function (count, searchValue, matchKind, fileName) { - this.state.verifyNavigationItemsCount(count, searchValue, matchKind, fileName); - }; - Verify.prototype.navigationItemsListContains = function (name, kind, searchValue, matchKind, fileName, parentName) { - this.state.verifyNavigationItemsListContains(name, kind, searchValue, matchKind, fileName, parentName); - }; - Verify.prototype.occurrencesAtPositionContains = function (range, isWriteAccess) { - this.state.verifyOccurrencesAtPositionListContains(range.fileName, range.pos, range.end, isWriteAccess); - }; - Verify.prototype.occurrencesAtPositionCount = function (expectedCount) { - this.state.verifyOccurrencesAtPositionListCount(expectedCount); - }; - Verify.prototype.rangesAreOccurrences = function (isWriteAccess) { - this.state.verifyRangesAreOccurrences(isWriteAccess); - }; - Verify.prototype.rangesWithSameTextAreRenameLocations = function () { - this.state.verifyRangesWithSameTextAreRenameLocations(); - }; - Verify.prototype.rangesAreRenameLocations = function (options) { - this.state.verifyRangesAreRenameLocations(options); - }; - Verify.prototype.rangesAreDocumentHighlights = function (ranges, options) { - this.state.verifyRangesAreDocumentHighlights(ranges, options); - }; - Verify.prototype.rangesWithSameTextAreDocumentHighlights = function () { - this.state.verifyRangesWithSameTextAreDocumentHighlights(); - }; - Verify.prototype.documentHighlightsOf = function (startRange, ranges, options) { - this.state.verifyDocumentHighlightsOf(startRange, ranges, options); - }; - Verify.prototype.noDocumentHighlights = function (startRange) { - this.state.verifyNoDocumentHighlights(startRange); - }; - Verify.prototype.completionEntryDetailIs = function (entryName, text, documentation, kind, tags) { - this.state.verifyCompletionEntryDetails(entryName, text, documentation, kind, tags); - }; - /** - * This method *requires* a contiguous, complete, and ordered stream of classifications for a file. - */ - Verify.prototype.syntacticClassificationsAre = function () { - var classifications = []; - for (var _i = 0; _i < arguments.length; _i++) { - classifications[_i] = arguments[_i]; - } - this.state.verifySyntacticClassifications(classifications); - }; - /** - * This method *requires* an ordered stream of classifications for a file, and spans are highly recommended. - */ - Verify.prototype.semanticClassificationsAre = function () { - var classifications = []; - for (var _i = 0; _i < arguments.length; _i++) { - classifications[_i] = arguments[_i]; - } - this.state.verifySemanticClassifications(classifications); - }; - Verify.prototype.renameInfoSucceeded = function (displayName, fullDisplayName, kind, kindModifiers) { - this.state.verifyRenameInfoSucceeded(displayName, fullDisplayName, kind, kindModifiers); - }; - Verify.prototype.renameInfoFailed = function (message) { - this.state.verifyRenameInfoFailed(message); - }; - Verify.prototype.renameLocations = function (startRanges, options) { - this.state.verifyRenameLocations(startRanges, options); - }; - Verify.prototype.verifyQuickInfoDisplayParts = function (kind, kindModifiers, textSpan, displayParts, documentation, tags) { - this.state.verifyQuickInfoDisplayParts(kind, kindModifiers, textSpan, displayParts, documentation, tags); - }; - Verify.prototype.getSyntacticDiagnostics = function (expected) { - this.state.getSyntacticDiagnostics(expected); - }; - Verify.prototype.getSemanticDiagnostics = function (expected) { - this.state.getSemanticDiagnostics(expected); - }; - Verify.prototype.getSuggestionDiagnostics = function (expected) { - this.state.getSuggestionDiagnostics(expected); - }; - Verify.prototype.ProjectInfo = function (expected) { - this.state.verifyProjectInfo(expected); - }; - Verify.prototype.allRangesAppearInImplementationList = function (markerName) { - this.state.verifyRangesInImplementationList(markerName); - }; - Verify.prototype.getEditsForFileRename = function (options) { - this.state.getEditsForFileRename(options); - }; - Verify.prototype.moveToNewFile = function (options) { - this.state.moveToNewFile(options); - }; - Verify.prototype.noMoveToNewFile = function () { - this.state.noMoveToNewFile(); - }; - return Verify; - }(VerifyNegatable)); - FourSlashInterface.Verify = Verify; - var Edit = /** @class */ (function () { - function Edit(state) { - this.state = state; - } - Edit.prototype.backspace = function (count) { - this.state.deleteCharBehindMarker(count); - }; - Edit.prototype.deleteAtCaret = function (times) { - this.state.deleteChar(times); - }; - Edit.prototype.replace = function (start, length, text) { - this.state.replace(start, length, text); - }; - Edit.prototype.paste = function (text) { - this.state.paste(text); - }; - Edit.prototype.insert = function (text) { - this.insertLines(text); - }; - Edit.prototype.insertLine = function (text) { - this.insertLines(text + "\n"); - }; - Edit.prototype.insertLines = function () { - var lines = []; - for (var _i = 0; _i < arguments.length; _i++) { - lines[_i] = arguments[_i]; - } - this.state.type(lines.join("\n")); - }; - Edit.prototype.moveRight = function (count) { - this.state.moveCaretRight(count); - }; - Edit.prototype.moveLeft = function (count) { - if (typeof count === "undefined") { - count = 1; - } - this.state.moveCaretRight(count * -1); - }; - Edit.prototype.enableFormatting = function () { - this.state.enableFormatting = true; - }; - Edit.prototype.disableFormatting = function () { - this.state.enableFormatting = false; - }; - Edit.prototype.applyRefactor = function (options) { - this.state.applyRefactor(options); - }; - return Edit; - }()); - FourSlashInterface.Edit = Edit; - var Debug = /** @class */ (function () { - function Debug(state) { - this.state = state; - } - Debug.prototype.printCurrentParameterHelp = function () { - this.state.printCurrentParameterHelp(); - }; - Debug.prototype.printCurrentFileState = function () { - this.state.printCurrentFileState(/*showWhitespace*/ false, /*makeCaretVisible*/ true); - }; - Debug.prototype.printCurrentFileStateWithWhitespace = function () { - this.state.printCurrentFileState(/*showWhitespace*/ true, /*makeCaretVisible*/ true); - }; - Debug.prototype.printCurrentFileStateWithoutCaret = function () { - this.state.printCurrentFileState(/*showWhitespace*/ false, /*makeCaretVisible*/ false); - }; - Debug.prototype.printCurrentQuickInfo = function () { - this.state.printCurrentQuickInfo(); - }; - Debug.prototype.printCurrentSignatureHelp = function () { - this.state.printCurrentSignatureHelp(); - }; - Debug.prototype.printCompletionListMembers = function (options) { - this.state.printCompletionListMembers(options); - }; - Debug.prototype.printAvailableCodeFixes = function () { - this.state.printAvailableCodeFixes(); - }; - Debug.prototype.printBreakpointLocation = function (pos) { - this.state.printBreakpointLocation(pos); - }; - Debug.prototype.printBreakpointAtCurrentLocation = function () { - this.state.printBreakpointAtCurrentLocation(); - }; - Debug.prototype.printNameOrDottedNameSpans = function (pos) { - this.state.printNameOrDottedNameSpans(pos); - }; - Debug.prototype.printErrorList = function () { - this.state.printErrorList(); - }; - Debug.prototype.printNavigationItems = function (searchValue) { - if (searchValue === void 0) { searchValue = ".*"; } - this.state.printNavigationItems(searchValue); - }; - Debug.prototype.printNavigationBar = function () { - this.state.printNavigationBar(); - }; - Debug.prototype.printContext = function () { - this.state.printContext(); - }; - Debug.prototype.printOutliningSpans = function () { - this.state.printOutliningSpans(); - }; - return Debug; - }()); - FourSlashInterface.Debug = Debug; - var Format = /** @class */ (function () { - function Format(state) { - this.state = state; - } - Format.prototype.document = function () { - this.state.formatDocument(); - }; - Format.prototype.copyFormatOptions = function () { - return this.state.copyFormatOptions(); - }; - Format.prototype.setFormatOptions = function (options) { - return this.state.setFormatOptions(options); - }; - Format.prototype.selection = function (startMarker, endMarker) { - this.state.formatSelection(this.state.getMarkerByName(startMarker).position, this.state.getMarkerByName(endMarker).position); - }; - Format.prototype.onType = function (posMarker, key) { - this.state.formatOnType(this.state.getMarkerByName(posMarker).position, key); - }; - Format.prototype.setOption = function (name, value) { - this.state.formatCodeSettings[name] = value; - }; - return Format; - }()); - FourSlashInterface.Format = Format; - var Cancellation = /** @class */ (function () { - function Cancellation(state) { - this.state = state; - } - Cancellation.prototype.resetCancelled = function () { - this.state.resetCancelled(); - }; - Cancellation.prototype.setCancelled = function (numberOfCalls) { - if (numberOfCalls === void 0) { numberOfCalls = 0; } - this.state.setCancelled(numberOfCalls); - }; - return Cancellation; - }()); - FourSlashInterface.Cancellation = Cancellation; - var Classification; - (function (Classification) { - function comment(text, position) { - return getClassification("comment" /* comment */, text, position); - } - Classification.comment = comment; - function identifier(text, position) { - return getClassification("identifier" /* identifier */, text, position); - } - Classification.identifier = identifier; - function keyword(text, position) { - return getClassification("keyword" /* keyword */, text, position); - } - Classification.keyword = keyword; - function numericLiteral(text, position) { - return getClassification("number" /* numericLiteral */, text, position); - } - Classification.numericLiteral = numericLiteral; - function operator(text, position) { - return getClassification("operator" /* operator */, text, position); - } - Classification.operator = operator; - function stringLiteral(text, position) { - return getClassification("string" /* stringLiteral */, text, position); - } - Classification.stringLiteral = stringLiteral; - function whiteSpace(text, position) { - return getClassification("whitespace" /* whiteSpace */, text, position); - } - Classification.whiteSpace = whiteSpace; - function text(text, position) { - return getClassification("text" /* text */, text, position); - } - Classification.text = text; - function punctuation(text, position) { - return getClassification("punctuation" /* punctuation */, text, position); - } - Classification.punctuation = punctuation; - function docCommentTagName(text, position) { - return getClassification("doc comment tag name" /* docCommentTagName */, text, position); - } - Classification.docCommentTagName = docCommentTagName; - function className(text, position) { - return getClassification("class name" /* className */, text, position); - } - Classification.className = className; - function enumName(text, position) { - return getClassification("enum name" /* enumName */, text, position); - } - Classification.enumName = enumName; - function interfaceName(text, position) { - return getClassification("interface name" /* interfaceName */, text, position); - } - Classification.interfaceName = interfaceName; - function moduleName(text, position) { - return getClassification("module name" /* moduleName */, text, position); - } - Classification.moduleName = moduleName; - function typeParameterName(text, position) { - return getClassification("type parameter name" /* typeParameterName */, text, position); - } - Classification.typeParameterName = typeParameterName; - function parameterName(text, position) { - return getClassification("parameter name" /* parameterName */, text, position); - } - Classification.parameterName = parameterName; - function typeAliasName(text, position) { - return getClassification("type alias name" /* typeAliasName */, text, position); - } - Classification.typeAliasName = typeAliasName; - function jsxOpenTagName(text, position) { - return getClassification("jsx open tag name" /* jsxOpenTagName */, text, position); - } - Classification.jsxOpenTagName = jsxOpenTagName; - function jsxCloseTagName(text, position) { - return getClassification("jsx close tag name" /* jsxCloseTagName */, text, position); - } - Classification.jsxCloseTagName = jsxCloseTagName; - function jsxSelfClosingTagName(text, position) { - return getClassification("jsx self closing tag name" /* jsxSelfClosingTagName */, text, position); - } - Classification.jsxSelfClosingTagName = jsxSelfClosingTagName; - function jsxAttribute(text, position) { - return getClassification("jsx attribute" /* jsxAttribute */, text, position); - } - Classification.jsxAttribute = jsxAttribute; - function jsxText(text, position) { - return getClassification("jsx text" /* jsxText */, text, position); - } - Classification.jsxText = jsxText; - function jsxAttributeStringLiteralValue(text, position) { - return getClassification("jsx attribute string literal value" /* jsxAttributeStringLiteralValue */, text, position); - } - Classification.jsxAttributeStringLiteralValue = jsxAttributeStringLiteralValue; - function getClassification(classificationType, text, position) { - var textSpan = position === undefined ? undefined : { start: position, end: position + text.length }; - return { classificationType: classificationType, text: text, textSpan: textSpan }; - } - })(Classification = FourSlashInterface.Classification || (FourSlashInterface.Classification = {})); -})(FourSlashInterface || (FourSlashInterface = {})); -var TypeWriterWalker = /** @class */ (function () { - function TypeWriterWalker(program, fullTypeCheck) { - this.program = program; - // Consider getting both the diagnostics checker and the non-diagnostics checker to verify - // they are consistent. - this.checker = fullTypeCheck - ? program.getDiagnosticsProducingTypeChecker() - : program.getTypeChecker(); - } - TypeWriterWalker.prototype.getSymbols = function (fileName) { - var _a, sourceFile, gen, _b, done, value; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - sourceFile = this.program.getSourceFile(fileName); - this.currentSourceFile = sourceFile; - gen = this.visitNode(sourceFile, /*isSymbolWalk*/ true); - _b = gen.next(), done = _b.done, value = _b.value; - _c.label = 1; - case 1: - if (!!done) return [3 /*break*/, 4]; - return [4 /*yield*/, value]; - case 2: - _c.sent(); - _c.label = 3; - case 3: - _a = gen.next(), done = _a.done, value = _a.value, _a; - return [3 /*break*/, 1]; - case 4: return [2 /*return*/]; - } - }); - }; - TypeWriterWalker.prototype.getTypes = function (fileName) { - var _a, sourceFile, gen, _b, done, value; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - sourceFile = this.program.getSourceFile(fileName); - this.currentSourceFile = sourceFile; - gen = this.visitNode(sourceFile, /*isSymbolWalk*/ false); - _b = gen.next(), done = _b.done, value = _b.value; - _c.label = 1; - case 1: - if (!!done) return [3 /*break*/, 4]; - return [4 /*yield*/, value]; - case 2: - _c.sent(); - _c.label = 3; - case 3: - _a = gen.next(), done = _a.done, value = _a.value, _a; - return [3 /*break*/, 1]; - case 4: return [2 /*return*/]; - } - }); - }; - TypeWriterWalker.prototype.visitNode = function (node, isSymbolWalk) { - var _a, result, children, _i, children_1, child, gen, _b, done, value; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - if (!(ts.isExpressionNode(node) || node.kind === 71 /* Identifier */ || ts.isDeclarationName(node))) return [3 /*break*/, 2]; - result = this.writeTypeOrSymbol(node, isSymbolWalk); - if (!result) return [3 /*break*/, 2]; - return [4 /*yield*/, result]; - case 1: - _c.sent(); - _c.label = 2; - case 2: - children = []; - ts.forEachChild(node, function (child) { return void children.push(child); }); - _i = 0, children_1 = children; - _c.label = 3; - case 3: - if (!(_i < children_1.length)) return [3 /*break*/, 8]; - child = children_1[_i]; - gen = this.visitNode(child, isSymbolWalk); - _b = gen.next(), done = _b.done, value = _b.value; - _c.label = 4; - case 4: - if (!!done) return [3 /*break*/, 7]; - return [4 /*yield*/, value]; - case 5: - _c.sent(); - _c.label = 6; - case 6: - _a = gen.next(), done = _a.done, value = _a.value, _a; - return [3 /*break*/, 4]; - case 7: - _i++; - return [3 /*break*/, 3]; - case 8: return [2 /*return*/]; - } - }); - }; - TypeWriterWalker.prototype.writeTypeOrSymbol = function (node, isSymbolWalk) { - var actualPos = ts.skipTrivia(this.currentSourceFile.text, node.pos); - var lineAndCharacter = this.currentSourceFile.getLineAndCharacterOfPosition(actualPos); - var sourceText = ts.getSourceTextOfNodeFromSourceFile(this.currentSourceFile, node); - if (!isSymbolWalk) { - // Workaround to ensure we output 'C' instead of 'typeof C' for base class expressions - // let type = this.checker.getTypeAtLocation(node); - var type = node.parent && ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent) && this.checker.getTypeAtLocation(node.parent) || this.checker.getTypeAtLocation(node); - var typeString = type ? this.checker.typeToString(type, node.parent, 1 /* NoTruncation */ | 1048576 /* AllowUniqueESSymbolType */) : "No type information available!"; - return { - line: lineAndCharacter.line, - syntaxKind: node.kind, - sourceText: sourceText, - type: typeString - }; - } - var symbol = this.checker.getSymbolAtLocation(node); - if (!symbol) { - return; - } - var symbolString = "Symbol(" + this.checker.symbolToString(symbol, node.parent); - if (symbol.declarations) { - var count = 0; - for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { - var declaration = _a[_i]; - if (count >= 5) { - symbolString += " ... and " + (symbol.declarations.length - count) + " more"; - break; - } - count++; - symbolString += ", "; - if (declaration.__symbolTestOutputCache) { - symbolString += declaration.__symbolTestOutputCache; - continue; - } - var declSourceFile = declaration.getSourceFile(); - var declLineAndCharacter = declSourceFile.getLineAndCharacterOfPosition(declaration.pos); - var fileName = ts.getBaseFileName(declSourceFile.fileName); - var isLibFile = /lib(.*)\.d\.ts/i.test(fileName); - var declText = "Decl(" + fileName + ", " + (isLibFile ? "--" : declLineAndCharacter.line) + ", " + (isLibFile ? "--" : declLineAndCharacter.character) + ")"; - symbolString += declText; - declaration.__symbolTestOutputCache = declText; - } - } - symbolString += ")"; - return { - line: lineAndCharacter.line, - syntaxKind: node.kind, - sourceText: sourceText, - symbol: symbolString - }; - }; - return TypeWriterWalker; -}()); -var Playback; -(function (Playback) { - var recordLog; - var replayLog; - var replayFilesRead; - var recordLogFileNameBase = ""; - function memoize(func) { - var lookup = {}; - var run = (function (s) { - if (lookup.hasOwnProperty(s)) - return lookup[s]; - return lookup[s] = func(s); - }); - run.reset = function () { - lookup = undefined; // TODO: GH#18217 - }; - return run; - } - function createEmptyLog() { - return { - timestamp: (new Date()).toString(), - arguments: [], - currentDirectory: "", - filesRead: [], - directoriesRead: [], - filesWritten: [], - filesDeleted: [], - filesAppended: [], - fileExists: [], - filesFound: [], - dirs: [], - dirExists: [], - dirsCreated: [], - pathsResolved: [], - executingPath: "" - }; - } - function newStyleLogIntoOldStyleLog(log, host, baseName) { - for (var _i = 0, _a = log.filesAppended; _i < _a.length; _i++) { - var file = _a[_i]; - if (file.contentsPath) { - file.contents = host.readFile(ts.combinePaths(baseName, file.contentsPath)); - delete file.contentsPath; - } - } - for (var _b = 0, _c = log.filesWritten; _b < _c.length; _b++) { - var file = _c[_b]; - if (file.contentsPath) { - file.contents = host.readFile(ts.combinePaths(baseName, file.contentsPath)); - delete file.contentsPath; - } - } - for (var _d = 0, _e = log.filesRead; _d < _e.length; _d++) { - var file = _e[_d]; - var result = file.result; // TODO: GH#18217 - if (result.contentsPath) { - // `readFile` strips away a BOM (and actually reinerprets the file contents according to the correct encoding) - // - but this has the unfortunate sideeffect of removing the BOM from any outputs based on the file, so we readd it here. - result.contents = (result.bom || "") + host.readFile(ts.combinePaths(baseName, result.contentsPath)); - delete result.contentsPath; - } - } - return log; - } - Playback.newStyleLogIntoOldStyleLog = newStyleLogIntoOldStyleLog; - var canonicalizeForHarness = ts.createGetCanonicalFileName(/*caseSensitive*/ false); // This is done so tests work on windows _and_ linux - function sanitizeTestFilePath(name) { - var path = ts.toPath(ts.normalizeSlashes(name.replace(/[\^<>:"|?*%]/g, "_")).replace(/\.\.\//g, "__dotdot/"), "", canonicalizeForHarness); - if (ts.startsWith(path, "/")) { - return path.substring(1); - } - return path; - } - function oldStyleLogIntoNewStyleLog(log, writeFile, baseTestName) { - if (log.filesAppended) { - for (var _i = 0, _a = log.filesAppended; _i < _a.length; _i++) { - var file = _a[_i]; - if (file.contents !== undefined) { - file.contentsPath = ts.combinePaths("appended", sanitizeTestFilePath(file.path)); - writeFile(ts.combinePaths(baseTestName, file.contentsPath), file.contents); - delete file.contents; - } - } - } - if (log.filesWritten) { - for (var _b = 0, _c = log.filesWritten; _b < _c.length; _b++) { - var file = _c[_b]; - if (file.contents !== undefined) { - file.contentsPath = ts.combinePaths("written", sanitizeTestFilePath(file.path)); - writeFile(ts.combinePaths(baseTestName, file.contentsPath), file.contents); - delete file.contents; - } - } - } - if (log.filesRead) { - for (var _d = 0, _e = log.filesRead; _d < _e.length; _d++) { - var file = _e[_d]; - var result = file.result; // TODO: GH#18217 - var contents = result.contents; - if (contents !== undefined) { - result.contentsPath = ts.combinePaths("read", sanitizeTestFilePath(file.path)); - writeFile(ts.combinePaths(baseTestName, result.contentsPath), contents); - var len = contents.length; - if (len >= 2 && contents.charCodeAt(0) === 0xfeff) { - result.bom = "\ufeff"; - } - if (len >= 2 && contents.charCodeAt(0) === 0xfffe) { - result.bom = "\ufffe"; - } - if (len >= 3 && contents.charCodeAt(0) === 0xefbb && contents.charCodeAt(1) === 0xbf) { - result.bom = "\uefbb\xbf"; - } - delete result.contents; - } - } - } - return log; - } - Playback.oldStyleLogIntoNewStyleLog = oldStyleLogIntoNewStyleLog; - function initWrapper(wrapper, underlying) { - ts.forEach(Object.keys(underlying), function (prop) { - wrapper[prop] = underlying[prop]; - }); - wrapper.startReplayFromString = function (logString) { - wrapper.startReplayFromData(JSON.parse(logString)); - }; - wrapper.startReplayFromData = function (log) { - replayLog = log; - // Remove non-found files from the log (shouldn't really need them, but we still record them for diagnostic purposes) - replayLog.filesRead = replayLog.filesRead.filter(function (f) { return f.result.contents !== undefined; }); - replayFilesRead = ts.createMap(); - for (var _i = 0, _a = replayLog.filesRead; _i < _a.length; _i++) { - var file = _a[_i]; - replayFilesRead.set(ts.normalizeSlashes(file.path).toLowerCase(), file); - } - }; - wrapper.endReplay = function () { - replayLog = undefined; - replayFilesRead = undefined; - }; - wrapper.startRecord = function (fileNameBase) { - recordLogFileNameBase = fileNameBase; - recordLog = createEmptyLog(); - recordLog.useCaseSensitiveFileNames = typeof underlying.useCaseSensitiveFileNames === "function" ? underlying.useCaseSensitiveFileNames() : underlying.useCaseSensitiveFileNames; - if (typeof underlying.args !== "function") { - recordLog.arguments = underlying.args; - } - }; - wrapper.startReplayFromFile = function (logFn) { - wrapper.startReplayFromString(underlying.readFile(logFn)); - }; - wrapper.endRecord = function () { - if (recordLog !== undefined) { - var i_1 = 0; - var getBase = function () { return recordLogFileNameBase + i_1; }; - while (underlying.fileExists(ts.combinePaths(getBase(), "test.json"))) - i_1++; - var newLog = oldStyleLogIntoNewStyleLog(recordLog, function (path, str) { return underlying.writeFile(path, str); }, getBase()); - underlying.writeFile(ts.combinePaths(getBase(), "test.json"), JSON.stringify(newLog, null, 4)); // tslint:disable-line:no-null-keyword - var syntheticTsconfig = generateTsconfig(newLog); - if (syntheticTsconfig) { - underlying.writeFile(ts.combinePaths(getBase(), "tsconfig.json"), JSON.stringify(syntheticTsconfig, null, 4)); // tslint:disable-line:no-null-keyword - } - recordLog = undefined; - } - }; - function generateTsconfig(newLog) { - if (newLog.filesRead.some(function (file) { return /tsconfig.+json$/.test(file.path); })) { - return; - } - var files = []; - for (var _i = 0, _a = newLog.filesRead; _i < _a.length; _i++) { - var file = _a[_i]; - var result = file.result; - if (result.contentsPath && - Harness.isDefaultLibraryFile(result.contentsPath) && - /\.[tj]s$/.test(result.contentsPath)) { - files.push(result.contentsPath); - } - } - return { compilerOptions: ts.parseCommandLine(newLog.arguments).options, files: files }; - } - wrapper.fileExists = recordReplay(wrapper.fileExists, underlying)(function (path) { return callAndRecord(underlying.fileExists(path), recordLog.fileExists, { path: path }); }, memoize(function (path) { - // If we read from the file, it must exist - if (findFileByPath(path, /*throwFileNotFoundError*/ false)) { - return true; - } - else { - return findResultByFields(replayLog.fileExists, { path: path }, /*defaultValue*/ false); - } - })); - wrapper.getExecutingFilePath = function () { - if (replayLog !== undefined) { - return replayLog.executingPath; - } - else if (recordLog !== undefined) { - return recordLog.executingPath = underlying.getExecutingFilePath(); - } - else { - return underlying.getExecutingFilePath(); - } - }; - wrapper.getCurrentDirectory = function () { - if (replayLog !== undefined) { - return replayLog.currentDirectory || ""; - } - else if (recordLog !== undefined) { - return recordLog.currentDirectory = underlying.getCurrentDirectory(); - } - else { - return underlying.getCurrentDirectory(); - } - }; - wrapper.resolvePath = recordReplay(wrapper.resolvePath, underlying)(function (path) { return callAndRecord(underlying.resolvePath(path), recordLog.pathsResolved, { path: path }); }, memoize(function (path) { return findResultByFields(replayLog.pathsResolved, { path: path }, !ts.isRootedDiskPath(ts.normalizeSlashes(path)) && replayLog.currentDirectory ? replayLog.currentDirectory + "/" + path : ts.normalizeSlashes(path)); })); - wrapper.readFile = recordReplay(wrapper.readFile, underlying)(function (path) { - var result = underlying.readFile(path); - var logEntry = { path: path, codepage: 0, result: { contents: result, codepage: 0 } }; - recordLog.filesRead.push(logEntry); - return result; - }, memoize(function (path) { return findFileByPath(path, /*throwFileNotFoundError*/ true).contents; })); - wrapper.readDirectory = recordReplay(wrapper.readDirectory, underlying)(function (path, extensions, exclude, include, depth) { - var result = underlying.readDirectory(path, extensions, exclude, include, depth); - recordLog.directoriesRead.push({ path: path, extensions: extensions, exclude: exclude, include: include, depth: depth, result: result }); - return result; - }, function (path) { - // Because extensions is an array of all allowed extension, we will want to merge each of the replayLog.directoriesRead into one - // if each of the directoriesRead has matched path with the given path (directory with same path but different extension will considered - // different entry). - // TODO (yuisu): We can certainly remove these once we recapture the RWC using new API - var normalizedPath = ts.normalizePath(path).toLowerCase(); - return ts.flatMap(replayLog.directoriesRead, function (directory) { - if (ts.normalizeSlashes(directory.path).toLowerCase() === normalizedPath) { - return directory.result; - } - }); - }); - wrapper.writeFile = recordReplay(wrapper.writeFile, underlying)(function (path, contents) { return callAndRecord(underlying.writeFile(path, contents), recordLog.filesWritten, { path: path, contents: contents, bom: false }); }, function () { return noOpReplay("writeFile"); }); - wrapper.exit = function (exitCode) { - if (recordLog !== undefined) { - wrapper.endRecord(); - } - underlying.exit(exitCode); - }; - wrapper.useCaseSensitiveFileNames = function () { - if (replayLog !== undefined) { - return !!replayLog.useCaseSensitiveFileNames; - } - return typeof underlying.useCaseSensitiveFileNames === "function" ? underlying.useCaseSensitiveFileNames() : underlying.useCaseSensitiveFileNames; - }; - } - function recordReplay(original, underlying) { - function createWrapper(record, replay) { - // tslint:disable-next-line only-arrow-functions - return (function () { - if (replayLog !== undefined) { - return replay.apply(undefined, arguments); - } - else if (recordLog !== undefined) { - return record.apply(undefined, arguments); - } - else { - return original.apply(underlying, arguments); - } - }); - } - return createWrapper; - } - function callAndRecord(underlyingResult, logArray, logEntry) { - if (underlyingResult !== undefined) { - logEntry.result = underlyingResult; - } - logArray.push(logEntry); - return underlyingResult; - } - function findResultByFields(logArray, expectedFields, defaultValue) { - var predicate = function (entry) { - return Object.getOwnPropertyNames(expectedFields).every(function (name) { return entry[name] === expectedFields[name]; }); - }; - var results = logArray.filter(function (entry) { return predicate(entry); }); - if (results.length === 0) { - if (defaultValue !== undefined) { - return defaultValue; - } - else { - throw new Error("No matching result in log array for: " + JSON.stringify(expectedFields)); - } - } - return results[0].result; - } - function findFileByPath(expectedPath, throwFileNotFoundError) { - var normalizedName = ts.normalizePath(expectedPath).toLowerCase(); - // Try to find the result through normal fileName - var result = replayFilesRead.get(normalizedName); - if (result) { - return result.result; - } - // If we got here, we didn't find a match - if (throwFileNotFoundError) { - throw new Error("No matching result in log array for path: " + expectedPath); - } - else { - return undefined; - } - } - function noOpReplay(_name) { - // console.log("Swallowed write operation during replay: " + name); - } - function wrapIO(underlying) { - var wrapper = {}; - initWrapper(wrapper, underlying); - wrapper.directoryName = notSupported; - wrapper.createDirectory = notSupported; - wrapper.directoryExists = notSupported; - wrapper.deleteFile = notSupported; - wrapper.listFiles = notSupported; - return wrapper; - function notSupported() { - throw new Error("NotSupported"); - } - } - Playback.wrapIO = wrapIO; - function wrapSystem(underlying) { - var wrapper = {}; - initWrapper(wrapper, underlying); - return wrapper; - } - Playback.wrapSystem = wrapSystem; -})(Playback || (Playback = {})); -//# sourceMappingURL=harness.js.map \ No newline at end of file diff --git a/src/built/local/harness.js.map b/src/built/local/harness.js.map deleted file mode 100644 index 8bae7bf1b91..00000000000 --- a/src/built/local/harness.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../harness/collections.ts","../../harness/utils.ts","../../harness/documents.ts","../../harness/vpath.ts","../../harness/vfs.ts","../../harness/compiler.ts","../../harness/evaluator.ts","../../harness/fakes.ts","../../harness/client.ts","../../harness/runnerbase.ts","../../harness/sourceMapRecorder.ts","../../harness/harness.ts","../../harness/harnessLanguageService.ts","../../harness/virtualFileSystemWithWatch.ts","../../harness/fourslash.ts","../../harness/typeWriter.ts","../../harness/loggedIO.ts"],"names":[],"mappings":"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"} \ No newline at end of file