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