Merge branch 'master' into watch-immediate-clears
# Conflicts: # src/harness/unittests/tscWatchMode.ts
This commit is contained in:
commit
cf9b8baa8c
|
@ -795,7 +795,7 @@ compileFile(
|
|||
/*prereqs*/[builtLocalDirectory, tscFile, tsserverLibraryFile].concat(libraryTargets).concat(servicesSources).concat(harnessSources),
|
||||
/*prefixes*/[],
|
||||
/*useBuiltCompiler:*/ true,
|
||||
/*opts*/ { types: ["node", "mocha", "chai"], lib: "es6" });
|
||||
/*opts*/ { types: ["node", "mocha"], lib: "es6" });
|
||||
|
||||
var internalTests = "internal/";
|
||||
|
||||
|
|
567
package-lock.json
generated
567
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -30,7 +30,6 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@types/browserify": "latest",
|
||||
"@types/chai": "latest",
|
||||
"@types/colors": "latest",
|
||||
"@types/convert-source-map": "latest",
|
||||
"@types/del": "latest",
|
||||
|
@ -53,7 +52,6 @@
|
|||
"xml2js": "^0.4.19",
|
||||
"browser-resolve": "^1.11.2",
|
||||
"browserify": "latest",
|
||||
"chai": "latest",
|
||||
"convert-source-map": "latest",
|
||||
"del": "latest",
|
||||
"gulp": "3.X",
|
||||
|
|
|
@ -22915,6 +22915,7 @@ namespace ts {
|
|||
case SyntaxKind.PlusToken: return left + right;
|
||||
case SyntaxKind.MinusToken: return left - right;
|
||||
case SyntaxKind.PercentToken: return left % right;
|
||||
case SyntaxKind.AsteriskAsteriskToken: return left ** right;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -711,12 +711,11 @@ namespace ts {
|
|||
export function convertEnableAutoDiscoveryToEnable(typeAcquisition: TypeAcquisition): TypeAcquisition {
|
||||
// Convert deprecated typingOptions.enableAutoDiscovery to typeAcquisition.enable
|
||||
if (typeAcquisition && typeAcquisition.enableAutoDiscovery !== undefined && typeAcquisition.enable === undefined) {
|
||||
const result: TypeAcquisition = {
|
||||
return {
|
||||
enable: typeAcquisition.enableAutoDiscovery,
|
||||
include: typeAcquisition.include || [],
|
||||
exclude: typeAcquisition.exclude || []
|
||||
};
|
||||
return result;
|
||||
}
|
||||
return typeAcquisition;
|
||||
}
|
||||
|
@ -1799,9 +1798,8 @@ namespace ts {
|
|||
return options;
|
||||
}
|
||||
|
||||
function getDefaultTypeAcquisition(configFileName?: string) {
|
||||
const options: TypeAcquisition = { enable: getBaseFileName(configFileName) === "jsconfig.json", include: [], exclude: [] };
|
||||
return options;
|
||||
function getDefaultTypeAcquisition(configFileName?: string): TypeAcquisition {
|
||||
return { enable: getBaseFileName(configFileName) === "jsconfig.json", include: [], exclude: [] };
|
||||
}
|
||||
|
||||
function convertTypeAcquisitionFromJsonWorker(jsonOptions: any,
|
||||
|
|
|
@ -2553,7 +2553,7 @@ namespace ts {
|
|||
}
|
||||
|
||||
/**
|
||||
* Visits an ObjectLiteralExpression with computed propety names.
|
||||
* Visits an ObjectLiteralExpression with computed property names.
|
||||
*
|
||||
* @param node An ObjectLiteralExpression node.
|
||||
*/
|
||||
|
|
|
@ -295,7 +295,7 @@ namespace FourSlash {
|
|||
const host = new Utils.MockParseConfigHost(baseDir, /*ignoreCase*/ false, this.inputFiles);
|
||||
|
||||
const configJsonObj = ts.parseConfigFileTextToJson(configFileName, this.inputFiles.get(configFileName));
|
||||
assert.isTrue(configJsonObj.config !== undefined);
|
||||
assert(configJsonObj.config !== undefined);
|
||||
|
||||
const { options, errors } = ts.parseJsonConfigFileContent(configJsonObj.config, host, baseDir);
|
||||
|
||||
|
@ -437,7 +437,7 @@ namespace FourSlash {
|
|||
|
||||
public goToEachMarker(action: () => void) {
|
||||
const markers = this.getMarkers();
|
||||
assert(markers.length);
|
||||
assert(markers.length !== 0);
|
||||
for (const marker of markers) {
|
||||
this.goToMarker(marker);
|
||||
action();
|
||||
|
@ -446,7 +446,7 @@ namespace FourSlash {
|
|||
|
||||
public goToEachRange(action: () => void) {
|
||||
const ranges = this.getRanges();
|
||||
assert(ranges.length);
|
||||
assert(ranges.length !== 0);
|
||||
for (const range of ranges) {
|
||||
this.goToRangeStart(range);
|
||||
action();
|
||||
|
@ -793,7 +793,7 @@ namespace FourSlash {
|
|||
}
|
||||
|
||||
const 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} ]`);
|
||||
assert(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, (entry, item) => {
|
||||
assert.equal(entry.name, item, `Unexpected item in completion list`);
|
||||
});
|
||||
|
@ -947,7 +947,7 @@ namespace FourSlash {
|
|||
public verifyCompletionEntryDetails(entryName: string, expectedText: string, expectedDocumentation?: string, kind?: string, tags?: ts.JSDocTagInfo[]) {
|
||||
const details = this.getCompletionEntryDetails(entryName);
|
||||
|
||||
assert(details, "no completion entry available");
|
||||
assert.isDefined(details, "no completion entry available");
|
||||
|
||||
assert.equal(ts.displayPartsToString(details.displayParts), expectedText, this.assertionMessageAtLastKnownMarker("completion entry details text"));
|
||||
|
||||
|
@ -1082,7 +1082,7 @@ namespace FourSlash {
|
|||
|
||||
public verifyRangesReferenceEachOther(ranges?: Range[]) {
|
||||
ranges = ranges || this.getRanges();
|
||||
assert(ranges.length);
|
||||
assert(ranges.length !== 0);
|
||||
for (const range of ranges) {
|
||||
this.verifyReferencesOf(range, ranges);
|
||||
}
|
||||
|
@ -1368,7 +1368,6 @@ Actual: ${stringify(fullActual)}`);
|
|||
|
||||
public verifyCurrentParameterIsVariable(isVariable: boolean) {
|
||||
const signature = this.getActiveSignatureHelpItem();
|
||||
assert.isOk(signature);
|
||||
assert.equal(isVariable, signature.isVariadic);
|
||||
}
|
||||
|
||||
|
@ -2019,7 +2018,7 @@ Actual: ${stringify(fullActual)}`);
|
|||
const 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");
|
||||
assert(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");
|
||||
|
@ -2522,9 +2521,9 @@ Actual: ${stringify(fullActual)}`);
|
|||
}
|
||||
|
||||
public verifyImportFixAtPosition(expectedTextArray: string[], errorCode?: number) {
|
||||
const ranges = this.getRanges();
|
||||
if (ranges.length === 0) {
|
||||
this.raiseError("At least one range should be specified in the testfile.");
|
||||
const ranges = this.getRanges().filter(r => r.fileName === this.activeFile.fileName);
|
||||
if (ranges.length !== 1) {
|
||||
this.raiseError("Exactly one range should be specified in the testfile.");
|
||||
}
|
||||
|
||||
const codeFixes = this.getCodeFixActions(this.activeFile.fileName, errorCode);
|
||||
|
@ -3110,7 +3109,7 @@ Actual: ${stringify(fullActual)}`);
|
|||
|
||||
if (spanIndex !== undefined) {
|
||||
const span = this.getTextSpanForRangeAtIndex(spanIndex);
|
||||
assert.isTrue(TestState.textSpansEqual(span, item.replacementSpan), this.assertionMessageAtLastKnownMarker(stringify(span) + " does not equal " + stringify(item.replacementSpan) + " replacement span for " + entryId));
|
||||
assert(TestState.textSpansEqual(span, item.replacementSpan), this.assertionMessageAtLastKnownMarker(stringify(span) + " does not equal " + stringify(item.replacementSpan) + " replacement span for " + entryId));
|
||||
}
|
||||
|
||||
assert.equal(item.hasAction, hasAction);
|
||||
|
|
|
@ -23,18 +23,60 @@
|
|||
/// <reference path="virtualFileSystem.ts" />
|
||||
/// <reference types="node" />
|
||||
/// <reference types="mocha" />
|
||||
/// <reference types="chai" />
|
||||
|
||||
|
||||
// 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: typeof chai = require("chai");
|
||||
var assert: typeof _chai.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 = (expr, msg) => { if (expr as any as boolean !== false) throw new Error(msg); };
|
||||
function assert(expr: boolean, msg?: string | (() => string)): void {
|
||||
if (!expr) {
|
||||
throw new Error(typeof msg === "string" ? msg : msg());
|
||||
}
|
||||
}
|
||||
namespace assert {
|
||||
export function isFalse(expr: boolean, msg = "Expected value to be false."): void {
|
||||
assert(!expr, msg);
|
||||
}
|
||||
export function equal<T>(a: T, b: T, msg = "Expected values to be equal."): void {
|
||||
assert(a === b, msg);
|
||||
}
|
||||
export function notEqual<T>(a: T, b: T, msg = "Expected values to not be equal."): void {
|
||||
assert(a !== b, msg);
|
||||
}
|
||||
export function isDefined(x: {} | null | undefined, msg = "Expected value to be defined."): void {
|
||||
assert(x !== undefined && x !== null, msg);
|
||||
}
|
||||
export function isUndefined(x: {} | null | undefined, msg = "Expected value to be undefined."): void {
|
||||
assert(x === undefined, msg);
|
||||
}
|
||||
export function deepEqual<T>(a: T, b: T, msg?: string): void {
|
||||
assert(isDeepEqual(a, b), msg || (() => `Expected values to be deeply equal:\nExpected:\n${JSON.stringify(a, undefined, 4)}\nActual:\n${JSON.stringify(b, undefined, 4)}`));
|
||||
}
|
||||
export function lengthOf(a: ReadonlyArray<{}>, length: number, msg = "Expected length to match."): void {
|
||||
assert(a.length === length, msg);
|
||||
}
|
||||
export function throws(cb: () => void, msg = "Expected callback to throw"): void {
|
||||
let threw = false;
|
||||
try {
|
||||
cb();
|
||||
}
|
||||
catch {
|
||||
threw = true;
|
||||
}
|
||||
assert(threw, msg);
|
||||
}
|
||||
|
||||
function isDeepEqual<T>(a: T, b: T): boolean {
|
||||
if (a === b) {
|
||||
return true;
|
||||
}
|
||||
if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) {
|
||||
return false;
|
||||
}
|
||||
const aKeys = Object.keys(a).sort();
|
||||
const bKeys = Object.keys(b).sort();
|
||||
return aKeys.length === bKeys.length && aKeys.every((key, i) => bKeys[i] === key && isDeepEqual((a as any)[key], (b as any)[key]));
|
||||
}
|
||||
}
|
||||
declare var __dirname: string; // Node-specific
|
||||
var global: NodeJS.Global = <any>Function("return this").call(undefined);
|
||||
|
||||
|
@ -347,8 +389,8 @@ namespace Utils {
|
|||
return;
|
||||
}
|
||||
|
||||
assert(array1, "array1");
|
||||
assert(array2, "array2");
|
||||
assert(!!array1, "array1");
|
||||
assert(!!array2, "array2");
|
||||
|
||||
assert.equal(array1.length, array2.length, "array1.length !== array2.length");
|
||||
|
||||
|
@ -371,8 +413,8 @@ namespace Utils {
|
|||
return;
|
||||
}
|
||||
|
||||
assert(node1, "node1");
|
||||
assert(node2, "node2");
|
||||
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");
|
||||
|
@ -402,8 +444,8 @@ namespace Utils {
|
|||
return;
|
||||
}
|
||||
|
||||
assert(array1, "array1");
|
||||
assert(array2, "array2");
|
||||
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");
|
||||
|
@ -1259,7 +1301,7 @@ namespace Harness {
|
|||
|
||||
function findResultCodeFile(fileName: string) {
|
||||
const sourceFile = result.program.getSourceFile(fileName);
|
||||
assert(sourceFile, "Program has no source file with name '" + fileName + "'");
|
||||
assert.isDefined(sourceFile, "Program has no source file with name '" + fileName + "'");
|
||||
// Is this file going to be emitted separately
|
||||
let sourceFileName: string;
|
||||
const outFile = options.outFile || options.out;
|
||||
|
@ -1942,7 +1984,7 @@ namespace Harness {
|
|||
const data = testUnitData[i];
|
||||
if (ts.getBaseFileName(data.name).toLowerCase() === "tsconfig.json") {
|
||||
const configJson = ts.parseJsonText(data.name, data.content);
|
||||
assert.isTrue(configJson.endOfFileToken !== undefined);
|
||||
assert(configJson.endOfFileToken !== undefined);
|
||||
let baseDir = ts.normalizePath(ts.getDirectoryPath(data.name));
|
||||
if (rootDir) {
|
||||
baseDir = ts.getNormalizedAbsolutePath(baseDir, rootDir);
|
||||
|
|
|
@ -174,8 +174,7 @@ namespace Harness.LanguageService {
|
|||
*/
|
||||
public positionToLineAndCharacter(fileName: string, position: number): ts.LineAndCharacter {
|
||||
const script: ScriptInfo = this.getScriptInfo(fileName);
|
||||
assert.isOk(script);
|
||||
|
||||
assert(!!script);
|
||||
return ts.computeLineAndCharacterOfPosition(script.getLineMap(), position);
|
||||
}
|
||||
}
|
||||
|
@ -360,7 +359,7 @@ namespace Harness.LanguageService {
|
|||
classification: parseInt(result[i + 1])
|
||||
};
|
||||
|
||||
assert.isTrue(t.length > 0, "Result length should be greater than 0, got :" + t.length);
|
||||
assert(t.length > 0, "Result length should be greater than 0, got :" + t.length);
|
||||
position += t.length;
|
||||
}
|
||||
const finalLexState = parseInt(result[result.length - 1]);
|
||||
|
|
|
@ -285,10 +285,10 @@ namespace Harness.SourceMapRecorder {
|
|||
}
|
||||
|
||||
export function recordNewSourceFileSpan(sourceMapSpan: ts.SourceMapSpan, newSourceFileCode: string) {
|
||||
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");
|
||||
assert(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);
|
||||
assert(spansOnSingleLine.length === 1);
|
||||
sourceMapRecorder.WriteLine("-------------------------------------------------------------------");
|
||||
sourceMapRecorder.WriteLine("emittedFile:" + jsFile.fileName);
|
||||
sourceMapRecorder.WriteLine("sourceFile:" + sourceMapSources[spansOnSingleLine[0].sourceMapSpan.sourceIndex]);
|
||||
|
@ -331,7 +331,7 @@ namespace Harness.SourceMapRecorder {
|
|||
function getMarkerId(markerIndex: number) {
|
||||
let markerId = "";
|
||||
if (spanMarkerContinues) {
|
||||
assert.isTrue(markerIndex === 0);
|
||||
assert(markerIndex === 0);
|
||||
markerId = "1->";
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"outFile": "../../built/local/run.js",
|
||||
"declaration": false,
|
||||
"types": [
|
||||
"node", "mocha", "chai"
|
||||
"node", "mocha"
|
||||
],
|
||||
"lib": [
|
||||
"es6",
|
||||
|
|
|
@ -12,7 +12,7 @@ namespace ts {
|
|||
|
||||
const parsedErrors = parsed.errors;
|
||||
const expectedErrors = expectedParsedCommandLine.errors;
|
||||
assert.isTrue(parsedErrors.length === expectedErrors.length, `Expected error: ${JSON.stringify(expectedErrors)}. Actual error: ${JSON.stringify(parsedErrors)}.`);
|
||||
assert(parsedErrors.length === expectedErrors.length, `Expected error: ${JSON.stringify(expectedErrors)}. Actual error: ${JSON.stringify(parsedErrors)}.`);
|
||||
for (let i = 0; i < parsedErrors.length; i++) {
|
||||
const parsedError = parsedErrors[i];
|
||||
const expectedError = expectedErrors[i];
|
||||
|
@ -23,7 +23,7 @@ namespace ts {
|
|||
|
||||
const parsedFileNames = parsed.fileNames;
|
||||
const expectedFileNames = expectedParsedCommandLine.fileNames;
|
||||
assert.isTrue(parsedFileNames.length === expectedFileNames.length, `Expected fileNames: [${JSON.stringify(expectedFileNames)}]. Actual fileNames: [${JSON.stringify(parsedFileNames)}].`);
|
||||
assert(parsedFileNames.length === expectedFileNames.length, `Expected fileNames: [${JSON.stringify(expectedFileNames)}]. Actual fileNames: [${JSON.stringify(parsedFileNames)}].`);
|
||||
for (let i = 0; i < parsedFileNames.length; i++) {
|
||||
const parsedFileName = parsedFileNames[i];
|
||||
const expectedFileName = expectedFileNames[i];
|
||||
|
|
|
@ -25,7 +25,7 @@ namespace ts.projectSystem {
|
|||
|
||||
const actualResultSingleProjectFileNameList = actualResultSingleProject.fileNames.sort();
|
||||
const expectedResultSingleProjectFileNameList = map(expectedResultSingleProject.files, f => f.path).sort();
|
||||
assert.isTrue(
|
||||
assert(
|
||||
arrayIsEqualTo(actualResultSingleProjectFileNameList, expectedResultSingleProjectFileNameList),
|
||||
`For project ${actualResultSingleProject.projectFileName}, the actual result is ${actualResultSingleProjectFileNameList}, while expected ${expectedResultSingleProjectFileNameList}`);
|
||||
}
|
||||
|
@ -563,7 +563,7 @@ namespace ts.projectSystem {
|
|||
session.executeCommand(compileFileRequest);
|
||||
|
||||
const expectedEmittedFileName = "/a/b/f1.js";
|
||||
assert.isTrue(host.fileExists(expectedEmittedFileName));
|
||||
assert(host.fileExists(expectedEmittedFileName));
|
||||
assert.equal(host.readFile(expectedEmittedFileName), `"use strict";\r\nexports.__esModule = true;\r\nfunction Foo() { return 10; }\r\nexports.Foo = Foo;\r\n`);
|
||||
});
|
||||
|
||||
|
@ -600,11 +600,11 @@ namespace ts.projectSystem {
|
|||
session.executeCommand(emitRequest);
|
||||
|
||||
const expectedOutFileName = "/a/b/dist.js";
|
||||
assert.isTrue(host.fileExists(expectedOutFileName));
|
||||
assert(host.fileExists(expectedOutFileName));
|
||||
const outFileContent = host.readFile(expectedOutFileName);
|
||||
assert.isTrue(outFileContent.indexOf(file1.content) !== -1);
|
||||
assert.isTrue(outFileContent.indexOf(file2.content) === -1);
|
||||
assert.isTrue(outFileContent.indexOf(file3.content) === -1);
|
||||
assert(outFileContent.indexOf(file1.content) !== -1);
|
||||
assert(outFileContent.indexOf(file2.content) === -1);
|
||||
assert(outFileContent.indexOf(file3.content) === -1);
|
||||
});
|
||||
|
||||
it("should use project root as current directory so that compile on save results in correct file mapping", () => {
|
||||
|
@ -634,19 +634,19 @@ namespace ts.projectSystem {
|
|||
|
||||
// Verify js file
|
||||
const expectedOutFileName = "/root/TypeScriptProject3/TypeScriptProject3/" + outFileName;
|
||||
assert.isTrue(host.fileExists(expectedOutFileName));
|
||||
assert(host.fileExists(expectedOutFileName));
|
||||
const outFileContent = host.readFile(expectedOutFileName);
|
||||
verifyContentHasString(outFileContent, file1.content);
|
||||
verifyContentHasString(outFileContent, `//# ${"sourceMappingURL"}=${outFileName}.map`); // Sometimes tools can sometimes see this line as a source mapping url comment, so we obfuscate it a little
|
||||
|
||||
// Verify map file
|
||||
const expectedMapFileName = expectedOutFileName + ".map";
|
||||
assert.isTrue(host.fileExists(expectedMapFileName));
|
||||
assert(host.fileExists(expectedMapFileName));
|
||||
const mapFileContent = host.readFile(expectedMapFileName);
|
||||
verifyContentHasString(mapFileContent, `"sources":["${inputFileName}"]`);
|
||||
|
||||
function verifyContentHasString(content: string, str: string) {
|
||||
assert.isTrue(stringContains(content, str), `Expected "${content}" to have "${str}"`);
|
||||
assert(stringContains(content, str), `Expected "${content}" to have "${str}"`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -113,7 +113,7 @@ namespace ts {
|
|||
const caseSensitiveHost = new Utils.MockParseConfigHost(caseSensitiveBasePath, /*useCaseSensitiveFileNames*/ true, testContents);
|
||||
|
||||
function verifyDiagnostics(actual: Diagnostic[], expected: {code: number, category: DiagnosticCategory, messageText: string}[]) {
|
||||
assert.isTrue(expected.length === actual.length, `Expected error: ${JSON.stringify(expected)}. Actual error: ${JSON.stringify(actual)}.`);
|
||||
assert(expected.length === actual.length, `Expected error: ${JSON.stringify(expected)}. Actual error: ${JSON.stringify(actual)}.`);
|
||||
for (let i = 0; i < actual.length; i++) {
|
||||
const actualError = actual[i];
|
||||
const expectedError = expected[i];
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace ts {
|
|||
assert.equal(parsedCompilerOptions, expectedCompilerOptions);
|
||||
|
||||
const expectedErrors = expectedResult.errors;
|
||||
assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
|
||||
assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
|
||||
for (let i = 0; i < actualErrors.length; i++) {
|
||||
const actualError = actualErrors[i];
|
||||
const expectedError = expectedErrors[i];
|
||||
|
@ -42,15 +42,15 @@ namespace ts {
|
|||
|
||||
const actualErrors = filter(actualParseErrors, error => error.code !== Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2.code);
|
||||
const expectedErrors = expectedResult.errors;
|
||||
assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
|
||||
assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
|
||||
for (let i = 0; i < actualErrors.length; i++) {
|
||||
const actualError = actualErrors[i];
|
||||
const expectedError = expectedErrors[i];
|
||||
assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`);
|
||||
assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`);
|
||||
assert(actualError.file);
|
||||
assert(actualError.start);
|
||||
assert(actualError.length);
|
||||
assert.isDefined(actualError.file);
|
||||
assert(actualError.start > 0);
|
||||
assert(actualError.length > 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,16 +17,16 @@ namespace ts {
|
|||
|
||||
function verifyErrors(actualErrors: Diagnostic[], expectedResult: ExpectedResult, hasLocation?: boolean) {
|
||||
const expectedErrors = expectedResult.errors;
|
||||
assert.isTrue(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
|
||||
assert(expectedResult.errors.length === actualErrors.length, `Expected error: ${JSON.stringify(expectedResult.errors)}. Actual error: ${JSON.stringify(actualErrors)}.`);
|
||||
for (let i = 0; i < actualErrors.length; i++) {
|
||||
const actualError = actualErrors[i];
|
||||
const expectedError = expectedErrors[i];
|
||||
assert.equal(actualError.code, expectedError.code, `Expected error-code: ${JSON.stringify(expectedError.code)}. Actual error-code: ${JSON.stringify(actualError.code)}.`);
|
||||
assert.equal(actualError.category, expectedError.category, `Expected error-category: ${JSON.stringify(expectedError.category)}. Actual error-category: ${JSON.stringify(actualError.category)}.`);
|
||||
if (hasLocation) {
|
||||
assert(actualError.file);
|
||||
assert(actualError.start);
|
||||
assert(actualError.length);
|
||||
assert.isDefined(actualError.file);
|
||||
assert(actualError.start > 0);
|
||||
assert(actualError.length > 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace ts {
|
|||
assert.equal(end, expectedRange.end, "incorrect end of range");
|
||||
}
|
||||
else {
|
||||
assert.isTrue(!result.targetRange, `expected range to extract to be undefined`);
|
||||
assert(!result.targetRange, `expected range to extract to be undefined`);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ namespace ts {
|
|||
assert(!result.emitSkipped, "emit was skipped");
|
||||
assert(result.outputFiles.length === 1, "a number of files other than 1 was output");
|
||||
assert(result.outputFiles[0].name === "input.js", `Expected output file name input.js, but got ${result.outputFiles[0].name}`);
|
||||
assert(result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /\r\n/ : /[^\r]\n/), "expected to find appropriate newlines");
|
||||
assert.isDefined(result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /\r\n/ : /[^\r]\n/), "expected to find appropriate newlines");
|
||||
assert(!result.outputFiles[0].text.match(options.newLine === NewLineKind.CarriageReturnLineFeed ? /[^\r]\n/ : /\r\n/), "expected not to find inappropriate newlines");
|
||||
}
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ namespace ts {
|
|||
assertSameDiagnostics(newTree, incrementalNewTree);
|
||||
|
||||
// There should be no reused nodes between two trees that are fully parsed.
|
||||
assert.isTrue(reusedElements(oldTree, newTree) === 0);
|
||||
assert(reusedElements(oldTree, newTree) === 0);
|
||||
|
||||
assert.equal(newTree.fileName, incrementalNewTree.fileName, "newTree.fileName !== incrementalNewTree.fileName");
|
||||
assert.equal(newTree.text, incrementalNewTree.text, "newTree.text !== incrementalNewTree.text");
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace ts {
|
|||
function parsesCorrectly(name: string, content: string) {
|
||||
it(name, () => {
|
||||
const typeAndDiagnostics = ts.parseJSDocTypeExpressionForTests(content);
|
||||
assert.isTrue(typeAndDiagnostics && typeAndDiagnostics.diagnostics.length === 0, "no errors issued");
|
||||
assert(typeAndDiagnostics && typeAndDiagnostics.diagnostics.length === 0, "no errors issued");
|
||||
|
||||
Harness.Baseline.runBaseline("JSDocParsing/TypeExpressions.parsesCorrectly." + name + ".json",
|
||||
() => Utils.sourceFileToJSON(typeAndDiagnostics.jsDocTypeExpression.type));
|
||||
|
@ -17,7 +17,7 @@ namespace ts {
|
|||
function parsesIncorrectly(name: string, content: string) {
|
||||
it(name, () => {
|
||||
const type = ts.parseJSDocTypeExpressionForTests(content);
|
||||
assert.isTrue(!type || type.diagnostics.length > 0);
|
||||
assert(!type || type.diagnostics.length > 0);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -106,7 +106,7 @@ namespace ts {
|
|||
function parsesIncorrectly(name: string, content: string) {
|
||||
it(name, () => {
|
||||
const type = parseIsolatedJSDocComment(content);
|
||||
assert.isTrue(!type || type.diagnostics.length > 0);
|
||||
assert(!type || type.diagnostics.length > 0);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ export function Component(x: Config): any;`
|
|||
readDirectory: noop as any,
|
||||
});
|
||||
const definitions = languageService.getDefinitionAtPosition("foo.ts", 160); // 160 is the latter `vueTemplateHtml` position
|
||||
expect(definitions).to.exist; // tslint:disable-line no-unused-expression
|
||||
assert.isDefined(definitions);
|
||||
});
|
||||
});
|
||||
}
|
|
@ -4,9 +4,9 @@ namespace ts {
|
|||
export function checkResolvedModule(expected: ResolvedModuleFull, actual: ResolvedModuleFull): boolean {
|
||||
if (!expected === !actual) {
|
||||
if (expected) {
|
||||
assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`);
|
||||
assert.isTrue(expected.extension === actual.extension, `'ext': expected '${expected.extension}' to be equal to '${actual.extension}'`);
|
||||
assert.isTrue(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'isExternalLibraryImport': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`);
|
||||
assert(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`);
|
||||
assert(expected.extension === actual.extension, `'ext': expected '${expected.extension}' to be equal to '${actual.extension}'`);
|
||||
assert(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'isExternalLibraryImport': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ namespace ts {
|
|||
}
|
||||
|
||||
export function checkResolvedModuleWithFailedLookupLocations(actual: ResolvedModuleWithFailedLookupLocations, expectedResolvedModule: ResolvedModuleFull, expectedFailedLookupLocations: string[]): void {
|
||||
assert.isTrue(actual.resolvedModule !== undefined, "module should be resolved");
|
||||
assert(actual.resolvedModule !== undefined, "module should be resolved");
|
||||
checkResolvedModule(actual.resolvedModule, expectedResolvedModule);
|
||||
assert.deepEqual(actual.failedLookupLocations, expectedFailedLookupLocations);
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ namespace ts {
|
|||
realpath,
|
||||
directoryExists: path => directories.has(path),
|
||||
fileExists: path => {
|
||||
assert.isTrue(directories.has(getDirectoryPath(path)), `'fileExists' '${path}' request in non-existing directory`);
|
||||
assert(directories.has(getDirectoryPath(path)), `'fileExists' '${path}' request in non-existing directory`);
|
||||
return map.has(path);
|
||||
}
|
||||
};
|
||||
|
@ -351,7 +351,7 @@ namespace ts {
|
|||
|
||||
// try to get file using a relative name
|
||||
for (const relativeFileName of relativeNamesToCheck) {
|
||||
assert.isTrue(program.getSourceFile(relativeFileName) !== undefined, `expected to get file by relative name, got undefined`);
|
||||
assert(program.getSourceFile(relativeFileName) !== undefined, `expected to get file by relative name, got undefined`);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1074,7 +1074,7 @@ import b = require("./moduleB");
|
|||
assert.equal(diagnostics1.length, 1, "expected one diagnostic");
|
||||
|
||||
createProgram(names, {}, compilerHost, program1);
|
||||
assert.isTrue(program1.structureIsReused === StructureIsReused.Completely);
|
||||
assert(program1.structureIsReused === StructureIsReused.Completely);
|
||||
const diagnostics2 = program1.getFileProcessingDiagnostics().getDiagnostics();
|
||||
assert.equal(diagnostics2.length, 1, "expected one diagnostic");
|
||||
assert.equal(diagnostics1[0].messageText, diagnostics2[0].messageText, "expected one diagnostic");
|
||||
|
|
|
@ -6,7 +6,7 @@ namespace ts {
|
|||
const map = arrayToSet(expected) as Map<boolean>;
|
||||
for (const missing of missingPaths) {
|
||||
const value = map.get(missing);
|
||||
assert.isTrue(value, `${missing} to be ${value === undefined ? "not present" : "present only once"}, in actual: ${missingPaths} expected: ${expected}`);
|
||||
assert(value, `${missing} to be ${value === undefined ? "not present" : "present only once"}, in actual: ${missingPaths} expected: ${expected}`);
|
||||
map.set(missing, false);
|
||||
}
|
||||
const notFound = mapDefinedIter(map.keys(), k => map.get(k) === true ? k : undefined);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
namespace ts.projectSystem {
|
||||
describe("Project errors", () => {
|
||||
function checkProjectErrors(projectFiles: server.ProjectFilesWithTSDiagnostics, expectedErrors: ReadonlyArray<string>): void {
|
||||
assert.isTrue(projectFiles !== undefined, "missing project files");
|
||||
assert(projectFiles !== undefined, "missing project files");
|
||||
checkProjectErrorsWorker(projectFiles.projectErrors, expectedErrors);
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ namespace ts.projectSystem {
|
|||
for (let i = 0; i < errors.length; i++) {
|
||||
const actualMessage = flattenDiagnosticMessageText(errors[i].messageText, "\n");
|
||||
const expectedMessage = expectedErrors[i];
|
||||
assert.isTrue(actualMessage.indexOf(expectedMessage) === 0, `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
|
||||
assert(actualMessage.indexOf(expectedMessage) === 0, `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ namespace ts.projectSystem {
|
|||
assert.equal(errors ? errors.length : 0, expectedErrors.length, `expected ${expectedErrors.length} error in the list`);
|
||||
if (expectedErrors.length) {
|
||||
zipWith(errors, expectedErrors, ({ message: actualMessage }, expectedMessage) => {
|
||||
assert.isTrue(startsWith(actualMessage, actualMessage), `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
|
||||
assert(startsWith(actualMessage, actualMessage), `error message does not match, expected ${actualMessage} to start with ${expectedMessage}`);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -137,13 +137,13 @@ namespace ts.projectSystem {
|
|||
{
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
|
||||
assert.isTrue(configuredProject !== undefined, "should find configured project");
|
||||
assert(configuredProject !== undefined, "should find configured project");
|
||||
checkProjectErrors(configuredProject, []);
|
||||
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
|
||||
checkProjectErrorsWorker(projectErrors, [
|
||||
"'{' expected."
|
||||
]);
|
||||
assert.isNotNull(projectErrors[0].file);
|
||||
assert.isDefined(projectErrors[0].file);
|
||||
assert.equal(projectErrors[0].file.fileName, corruptedConfig.path);
|
||||
}
|
||||
// fix config and trigger watcher
|
||||
|
@ -151,7 +151,7 @@ namespace ts.projectSystem {
|
|||
{
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
|
||||
assert.isTrue(configuredProject !== undefined, "should find configured project");
|
||||
assert(configuredProject !== undefined, "should find configured project");
|
||||
checkProjectErrors(configuredProject, []);
|
||||
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
|
||||
checkProjectErrorsWorker(projectErrors, []);
|
||||
|
@ -182,7 +182,7 @@ namespace ts.projectSystem {
|
|||
{
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
|
||||
assert.isTrue(configuredProject !== undefined, "should find configured project");
|
||||
assert(configuredProject !== undefined, "should find configured project");
|
||||
checkProjectErrors(configuredProject, []);
|
||||
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
|
||||
checkProjectErrorsWorker(projectErrors, []);
|
||||
|
@ -192,13 +192,13 @@ namespace ts.projectSystem {
|
|||
{
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
|
||||
assert.isTrue(configuredProject !== undefined, "should find configured project");
|
||||
assert(configuredProject !== undefined, "should find configured project");
|
||||
checkProjectErrors(configuredProject, []);
|
||||
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
|
||||
checkProjectErrorsWorker(projectErrors, [
|
||||
"'{' expected."
|
||||
]);
|
||||
assert.isNotNull(projectErrors[0].file);
|
||||
assert.isDefined(projectErrors[0].file);
|
||||
assert.equal(projectErrors[0].file.fileName, corruptedConfig.path);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -193,14 +193,14 @@ namespace ts {
|
|||
|
||||
function checkCache<T>(caption: string, program: Program, fileName: string, expectedContent: Map<T>, getCache: (f: SourceFile) => Map<T>, entryChecker: (expected: T, original: T) => boolean): void {
|
||||
const file = program.getSourceFile(fileName);
|
||||
assert.isTrue(file !== undefined, `cannot find file ${fileName}`);
|
||||
assert(file !== undefined, `cannot find file ${fileName}`);
|
||||
const cache = getCache(file);
|
||||
if (expectedContent === undefined) {
|
||||
assert.isTrue(cache === undefined, `expected ${caption} to be undefined`);
|
||||
assert(cache === undefined, `expected ${caption} to be undefined`);
|
||||
}
|
||||
else {
|
||||
assert.isTrue(cache !== undefined, `expected ${caption} to be set`);
|
||||
assert.isTrue(mapsAreEqual(expectedContent, cache, entryChecker), `contents of ${caption} did not match the expected contents.`);
|
||||
assert(cache !== undefined, `expected ${caption} to be set`);
|
||||
assert(mapsAreEqual(expectedContent, cache, entryChecker), `contents of ${caption} did not match the expected contents.`);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -329,7 +329,7 @@ namespace ts {
|
|||
const options: CompilerOptions = { target, noLib: true };
|
||||
|
||||
const program1 = newProgram(files, ["a.ts"], options);
|
||||
assert.notDeepEqual(emptyArray, program1.getMissingFilePaths());
|
||||
assert(program1.getMissingFilePaths().length !== 0);
|
||||
|
||||
const program2 = updateProgram(program1, ["a.ts"], options, noop);
|
||||
assert.deepEqual(program1.getMissingFilePaths(), program2.getMissingFilePaths());
|
||||
|
@ -341,11 +341,11 @@ namespace ts {
|
|||
const options: CompilerOptions = { target, noLib: true };
|
||||
|
||||
const program1 = newProgram(files, ["a.ts"], options);
|
||||
assert.notDeepEqual(emptyArray, program1.getMissingFilePaths());
|
||||
assert(program1.getMissingFilePaths().length !== 0);
|
||||
|
||||
const newTexts: NamedSourceText[] = files.concat([{ name: "non-existing-file.ts", text: SourceText.New("", "", `var x = 1`) }]);
|
||||
const program2 = updateProgram(program1, ["a.ts"], options, noop, newTexts);
|
||||
assert.deepEqual(emptyArray, program2.getMissingFilePaths());
|
||||
assert.lengthOf(program2.getMissingFilePaths(), 0);
|
||||
|
||||
assert.equal(StructureIsReused.Not, program1.structureIsReused);
|
||||
});
|
||||
|
@ -826,12 +826,12 @@ namespace ts {
|
|||
updateProgramText(files, root, "const x = 1;");
|
||||
});
|
||||
assert.equal(program1.structureIsReused, StructureIsReused.Completely);
|
||||
assert.deepEqual(program2.getSemanticDiagnostics(), emptyArray);
|
||||
assert.lengthOf(program2.getSemanticDiagnostics(), 0);
|
||||
});
|
||||
|
||||
it("Target changes -> redirect broken", () => {
|
||||
const program1 = createRedirectProgram();
|
||||
assert.deepEqual(program1.getSemanticDiagnostics(), emptyArray);
|
||||
assert.lengthOf(program1.getSemanticDiagnostics(), 0);
|
||||
|
||||
const program2 = updateRedirectProgram(program1, files => {
|
||||
updateProgramText(files, axIndex, "export default class X { private x: number; private y: number; }");
|
||||
|
@ -860,7 +860,7 @@ namespace ts {
|
|||
updateProgramText(files, bxPackage, JSON.stringify({ name: "x", version: "1.2.3" }));
|
||||
});
|
||||
assert.equal(program1.structureIsReused, StructureIsReused.Not);
|
||||
assert.deepEqual(program2.getSemanticDiagnostics(), []);
|
||||
assert.lengthOf(program2.getSemanticDiagnostics(), 0);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -888,7 +888,7 @@ namespace ts {
|
|||
/*hasInvalidatedResolution*/ returnFalse,
|
||||
/*hasChangedAutomaticTypeDirectiveNames*/ false
|
||||
);
|
||||
assert.isTrue(actual);
|
||||
assert(actual);
|
||||
}
|
||||
|
||||
function duplicate(options: CompilerOptions): CompilerOptions;
|
||||
|
|
|
@ -50,7 +50,7 @@ describe("Colorization", () => {
|
|||
|
||||
const actualEntry = getEntryAtPosition(result, actualEntryPosition);
|
||||
|
||||
assert(actualEntry, "Could not find classification entry for '" + expectedEntry.value + "' at position: " + actualEntryPosition);
|
||||
assert.isDefined(actualEntry, "Could not find classification entry for '" + expectedEntry.value + "' at position: " + actualEntryPosition);
|
||||
assert.equal(actualEntry.classification, expectedEntry.classification, "Classification class does not match expected. Expected: " + ts.TokenClass[expectedEntry.classification] + ", Actual: " + ts.TokenClass[actualEntry.classification]);
|
||||
assert.equal(actualEntry.length, expectedEntry.value.length, "Classification length does not match expected. Expected: " + ts.TokenClass[expectedEntry.value.length] + ", Actual: " + ts.TokenClass[actualEntry.length]);
|
||||
}
|
||||
|
|
|
@ -140,25 +140,25 @@ describe("PatternMatcher", () => {
|
|||
it("PreferCaseSensitiveCamelCaseMatchToLongPattern1", () => {
|
||||
const match = getFirstMatch("FogBar", "FBB");
|
||||
|
||||
assert.isTrue(match === undefined);
|
||||
assert(match === undefined);
|
||||
});
|
||||
|
||||
it("PreferCaseSensitiveCamelCaseMatchToLongPattern2", () => {
|
||||
const match = getFirstMatch("FogBar", "FoooB");
|
||||
|
||||
assert.isTrue(match === undefined);
|
||||
assert(match === undefined);
|
||||
});
|
||||
|
||||
it("CamelCaseMatchPartiallyUnmatched", () => {
|
||||
const match = getFirstMatch("FogBarBaz", "FZ");
|
||||
|
||||
assert.isTrue(match === undefined);
|
||||
assert(match === undefined);
|
||||
});
|
||||
|
||||
it("CamelCaseMatchCompletelyUnmatched", () => {
|
||||
const match = getFirstMatch("FogBarBaz", "ZZ");
|
||||
|
||||
assert.isTrue(match === undefined);
|
||||
assert(match === undefined);
|
||||
});
|
||||
|
||||
it("TwoUppercaseCharacters", () => {
|
||||
|
@ -220,7 +220,7 @@ describe("PatternMatcher", () => {
|
|||
it("PreferCaseSensitiveMiddleUnderscore3", () => {
|
||||
const match = getFirstMatch("Fog_Bar", "F__B");
|
||||
|
||||
assert.isTrue(undefined === match);
|
||||
assert(undefined === match);
|
||||
});
|
||||
|
||||
it("PreferCaseSensitiveMiddleUnderscore4", () => {
|
||||
|
@ -264,25 +264,25 @@ describe("PatternMatcher", () => {
|
|||
it("AllLowerPattern1", () => {
|
||||
const match = getFirstMatch("FogBarChangedEventArgs", "changedeventargs");
|
||||
|
||||
assert.isTrue(undefined !== match);
|
||||
assert(undefined !== match);
|
||||
});
|
||||
|
||||
it("AllLowerPattern2", () => {
|
||||
const match = getFirstMatch("FogBarChangedEventArgs", "changedeventarrrgh");
|
||||
|
||||
assert.isTrue(undefined === match);
|
||||
assert(undefined === match);
|
||||
});
|
||||
|
||||
it("AllLowerPattern3", () => {
|
||||
const match = getFirstMatch("ABCDEFGH", "bcd");
|
||||
|
||||
assert.isTrue(undefined !== match);
|
||||
assert(undefined !== match);
|
||||
});
|
||||
|
||||
it("AllLowerPattern4", () => {
|
||||
const match = getFirstMatch("AbcdefghijEfgHij", "efghij");
|
||||
|
||||
assert.isTrue(undefined === match);
|
||||
assert(undefined === match);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -370,13 +370,13 @@ describe("PatternMatcher", () => {
|
|||
it("BlankPattern", () => {
|
||||
const matches = getAllMatches("AddMetadataReference", "");
|
||||
|
||||
assert.isTrue(matches === undefined);
|
||||
assert(matches === undefined);
|
||||
});
|
||||
|
||||
it("WhitespaceOnlyPattern", () => {
|
||||
const matches = getAllMatches("AddMetadataReference", " ");
|
||||
|
||||
assert.isTrue(matches === undefined);
|
||||
assert(matches === undefined);
|
||||
});
|
||||
|
||||
it("EachWordSeparately1", () => {
|
||||
|
@ -403,13 +403,13 @@ describe("PatternMatcher", () => {
|
|||
it("MixedCasing", () => {
|
||||
const matches = getAllMatches("AddMetadataReference", "mEta");
|
||||
|
||||
assert.isTrue(matches === undefined);
|
||||
assert(matches === undefined);
|
||||
});
|
||||
|
||||
it("MixedCasing2", () => {
|
||||
const matches = getAllMatches("AddMetadataReference", "Data");
|
||||
|
||||
assert.isTrue(matches === undefined);
|
||||
assert(matches === undefined);
|
||||
});
|
||||
|
||||
it("AsteriskSplit", () => {
|
||||
|
@ -421,7 +421,7 @@ describe("PatternMatcher", () => {
|
|||
it("LowercaseSubstring1", () => {
|
||||
const matches = getAllMatches("Operator", "a");
|
||||
|
||||
assert.isTrue(matches === undefined);
|
||||
assert(matches === undefined);
|
||||
});
|
||||
|
||||
it("LowercaseSubstring2", () => {
|
||||
|
@ -441,7 +441,7 @@ describe("PatternMatcher", () => {
|
|||
|
||||
it("DottedPattern2", () => {
|
||||
const match = getFirstMatchForDottedPattern("Foo.Bar.Baz", "Quux", "C.Q");
|
||||
assert.isTrue(match === undefined);
|
||||
assert(match === undefined);
|
||||
});
|
||||
|
||||
it("DottedPattern3", () => {
|
||||
|
@ -464,13 +464,13 @@ describe("PatternMatcher", () => {
|
|||
|
||||
it("DottedPattern6", () => {
|
||||
const match = getFirstMatchForDottedPattern("Foo.Bar.Baz", "Quux", "F.F.B.B.Quux");
|
||||
assert.isTrue(match === undefined);
|
||||
assert(match === undefined);
|
||||
});
|
||||
|
||||
it("DottedPattern7", () => {
|
||||
let match = getFirstMatch("UIElement", "UIElement");
|
||||
match = getFirstMatch("GetKeyword", "UIElement");
|
||||
assert.isTrue(match === undefined);
|
||||
assert(match === undefined);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -508,8 +508,8 @@ describe("PatternMatcher", () => {
|
|||
}
|
||||
|
||||
function assertInRange(val: number, low: number, high: number) {
|
||||
assert.isTrue(val >= low);
|
||||
assert.isTrue(val <= high);
|
||||
assert(val >= low);
|
||||
assert(val <= high);
|
||||
}
|
||||
|
||||
function verifyBreakIntoCharacterSpans(original: string, ...parts: string[]): void {
|
||||
|
@ -521,6 +521,6 @@ describe("PatternMatcher", () => {
|
|||
}
|
||||
|
||||
function assertContainsKind(kind: ts.PatternMatchKind, results: ts.PatternMatch[]) {
|
||||
assert.isTrue(ts.forEach(results, r => r.kind === kind));
|
||||
assert(ts.forEach(results, r => r.kind === kind));
|
||||
}
|
||||
});
|
||||
|
|
|
@ -18,7 +18,7 @@ describe("PreProcessFile:", () => {
|
|||
return;
|
||||
}
|
||||
if (!expected) {
|
||||
assert.isTrue(false, `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);
|
||||
assert(false, `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);
|
||||
}
|
||||
assert.equal(actual.length, expected.length, `[${kind}] Actual array's length does not match expected length. Expected files: ${JSON.stringify(expected)}, actual files: ${JSON.stringify(actual)}`);
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
/// <reference path="..\harness.ts" />
|
||||
|
||||
const expect: typeof _chai.expect = _chai.expect;
|
||||
|
||||
namespace ts.server {
|
||||
let lastWrittenToHost: string;
|
||||
const mockHost: ServerHost = {
|
||||
|
@ -82,7 +80,7 @@ namespace ts.server {
|
|||
}
|
||||
};
|
||||
|
||||
expect(() => session.executeCommand(req)).to.throw();
|
||||
assert.throws(() => session.executeCommand(req));
|
||||
});
|
||||
it("should output an error response when a command does not exist", () => {
|
||||
const req: protocol.Request = {
|
||||
|
@ -101,7 +99,7 @@ namespace ts.server {
|
|||
request_seq: 0,
|
||||
success: false
|
||||
};
|
||||
expect(lastSent).to.deep.equal(expected);
|
||||
assert.deepEqual(lastSent, expected);
|
||||
});
|
||||
it("should return a tuple containing the response and if a response is required on success", () => {
|
||||
const req: protocol.ConfigureRequest = {
|
||||
|
@ -116,17 +114,18 @@ namespace ts.server {
|
|||
}
|
||||
};
|
||||
|
||||
expect(session.executeCommand(req)).to.deep.equal({
|
||||
assert.deepEqual(session.executeCommand(req), {
|
||||
responseRequired: false
|
||||
});
|
||||
expect(lastSent).to.deep.equal({
|
||||
const expected: protocol.Response = {
|
||||
command: CommandNames.Configure,
|
||||
type: "response",
|
||||
success: true,
|
||||
request_seq: 0,
|
||||
seq: 0,
|
||||
body: undefined
|
||||
});
|
||||
};
|
||||
assert.deepEqual(lastSent, expected);
|
||||
});
|
||||
it("should handle literal types in request", () => {
|
||||
const configureRequest: protocol.ConfigureRequest = {
|
||||
|
@ -297,14 +296,15 @@ namespace ts.server {
|
|||
|
||||
session.onMessage(JSON.stringify(req));
|
||||
|
||||
expect(lastSent).to.deep.equal(<protocol.ConfigureResponse>{
|
||||
const expected: protocol.ConfigureResponse = {
|
||||
command: CommandNames.Configure,
|
||||
type: "response",
|
||||
success: true,
|
||||
request_seq: 0,
|
||||
seq: 0,
|
||||
body: undefined
|
||||
});
|
||||
};
|
||||
assert.deepEqual(lastSent, expected);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -316,9 +316,9 @@ namespace ts.server {
|
|||
const resultMsg = `Content-Length: ${len}\r\n\r\n${strmsg}\n`;
|
||||
|
||||
session.send = Session.prototype.send;
|
||||
assert(session.send);
|
||||
expect(session.send(msg)).to.not.exist; // tslint:disable-line no-unused-expression
|
||||
expect(lastWrittenToHost).to.equal(resultMsg);
|
||||
assert.isDefined(session.send);
|
||||
session.send(msg);
|
||||
assert.equal(lastWrittenToHost, resultMsg);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -335,11 +335,7 @@ namespace ts.server {
|
|||
|
||||
session.addProtocolHandler(command, () => result);
|
||||
|
||||
expect(session.executeCommand({
|
||||
command,
|
||||
seq: 0,
|
||||
type: "request"
|
||||
})).to.deep.equal(result);
|
||||
assert.deepEqual(session.executeCommand({ command, seq: 0, type: "request" }), result);
|
||||
});
|
||||
it("throws when a duplicate handler is passed", () => {
|
||||
const respBody = {
|
||||
|
@ -353,8 +349,7 @@ namespace ts.server {
|
|||
|
||||
session.addProtocolHandler(command, () => resp);
|
||||
|
||||
expect(() => session.addProtocolHandler(command, () => resp))
|
||||
.to.throw(`Protocol handler already exists for command "${command}"`);
|
||||
assert.throws(() => session.addProtocolHandler(command, () => resp), `Protocol handler already exists for command "${command}"`);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -367,12 +362,13 @@ namespace ts.server {
|
|||
|
||||
session.event(info, evt);
|
||||
|
||||
expect(lastSent).to.deep.equal({
|
||||
const expected: protocol.Event = {
|
||||
type: "event",
|
||||
seq: 0,
|
||||
event: evt,
|
||||
body: info
|
||||
});
|
||||
};
|
||||
assert.deepEqual(lastSent, expected);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -387,14 +383,15 @@ namespace ts.server {
|
|||
|
||||
session.output(body, command, /*reqSeq*/ 0);
|
||||
|
||||
expect(lastSent).to.deep.equal({
|
||||
const expected: protocol.Response = {
|
||||
seq: 0,
|
||||
request_seq: 0,
|
||||
type: "response",
|
||||
command,
|
||||
body,
|
||||
success: true
|
||||
});
|
||||
};
|
||||
assert.deepEqual(lastSent, expected);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -455,14 +452,16 @@ namespace ts.server {
|
|||
session.onMessage(JSON.stringify(request));
|
||||
const lastSent = session.lastSent as protocol.Response;
|
||||
|
||||
expect(lastSent).to.contain({
|
||||
assert.deepEqual({ ...lastSent, message: undefined }, {
|
||||
request_seq: 0,
|
||||
seq: 0,
|
||||
type: "response",
|
||||
command,
|
||||
success: false
|
||||
success: false,
|
||||
message: undefined,
|
||||
});
|
||||
|
||||
expect(lastSent.message).has.string("myMessage").and.has.string("f1");
|
||||
assert(ts.stringContains(lastSent.message, "myMessage") && ts.stringContains(lastSent.message, "f1"));
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -502,23 +501,24 @@ namespace ts.server {
|
|||
|
||||
session.output(body, command, /*reqSeq*/ 0);
|
||||
|
||||
expect(session.lastSent).to.deep.equal({
|
||||
const expected: protocol.Response = {
|
||||
seq: 0,
|
||||
request_seq: 0,
|
||||
type: "response",
|
||||
command,
|
||||
body,
|
||||
success: true
|
||||
});
|
||||
};
|
||||
assert.deepEqual(session.lastSent, expected);
|
||||
});
|
||||
it("can add and respond to new protocol handlers", () => {
|
||||
const session = new TestSession();
|
||||
|
||||
expect(session.executeCommand({
|
||||
assert.deepEqual(session.executeCommand({
|
||||
seq: 0,
|
||||
type: "request",
|
||||
command: session.customHandler
|
||||
})).to.deep.equal({
|
||||
}), {
|
||||
response: undefined,
|
||||
responseRequired: true
|
||||
});
|
||||
|
@ -528,8 +528,7 @@ namespace ts.server {
|
|||
new class extends TestSession {
|
||||
constructor() {
|
||||
super();
|
||||
assert(this.projectService);
|
||||
expect(this.projectService).to.be.instanceOf(ProjectService);
|
||||
assert(this.projectService instanceof ProjectService);
|
||||
}
|
||||
}();
|
||||
});
|
||||
|
@ -653,9 +652,9 @@ namespace ts.server {
|
|||
|
||||
// Add an event handler
|
||||
cli.on("testevent", (eventinfo) => {
|
||||
expect(eventinfo).to.equal(toEvent);
|
||||
assert.equal(eventinfo, toEvent);
|
||||
responses++;
|
||||
expect(responses).to.equal(1);
|
||||
assert.equal(responses, 1);
|
||||
});
|
||||
|
||||
// Trigger said event from the server
|
||||
|
@ -665,8 +664,8 @@ namespace ts.server {
|
|||
cli.execute("echo", toEcho, (resp) => {
|
||||
assert(resp.success, resp.message);
|
||||
responses++;
|
||||
expect(responses).to.equal(2);
|
||||
expect(resp.body).to.deep.equal(toEcho);
|
||||
assert.equal(responses, 2);
|
||||
assert.deepEqual(resp.body, toEcho);
|
||||
});
|
||||
|
||||
// Queue a configure command
|
||||
|
@ -678,7 +677,7 @@ namespace ts.server {
|
|||
}, (resp) => {
|
||||
assert(resp.success, resp.message);
|
||||
responses++;
|
||||
expect(responses).to.equal(3);
|
||||
assert.equal(responses, 3);
|
||||
done();
|
||||
});
|
||||
|
||||
|
|
|
@ -33,20 +33,20 @@ namespace ts.textStorage {
|
|||
for (let offset = 0; offset < end - start; offset++) {
|
||||
const pos1 = ts1.lineOffsetToPosition(line + 1, offset + 1);
|
||||
const pos2 = ts2.lineOffsetToPosition(line + 1, offset + 1);
|
||||
assert.isTrue(pos1 === pos2, `lineOffsetToPosition ${line + 1}-${offset + 1}: expected ${pos1} to equal ${pos2}`);
|
||||
assert(pos1 === pos2, `lineOffsetToPosition ${line + 1}-${offset + 1}: expected ${pos1} to equal ${pos2}`);
|
||||
}
|
||||
|
||||
const {start: start1, length: length1 } = ts1.lineToTextSpan(line);
|
||||
const {start: start2, length: length2 } = ts2.lineToTextSpan(line);
|
||||
assert.isTrue(start1 === start2, `lineToTextSpan ${line}::start:: expected ${start1} to equal ${start2}`);
|
||||
assert.isTrue(length1 === length2, `lineToTextSpan ${line}::length:: expected ${length1} to equal ${length2}`);
|
||||
assert(start1 === start2, `lineToTextSpan ${line}::start:: expected ${start1} to equal ${start2}`);
|
||||
assert(length1 === length2, `lineToTextSpan ${line}::length:: expected ${length1} to equal ${length2}`);
|
||||
}
|
||||
|
||||
for (let pos = 0; pos < f.content.length; pos++) {
|
||||
const { line: line1, offset: offset1 } = ts1.positionToLineOffset(pos);
|
||||
const { line: line2, offset: offset2 } = ts2.positionToLineOffset(pos);
|
||||
assert.isTrue(line1 === line2, `positionToLineOffset ${pos}::line:: expected ${line1} to equal ${line2}`);
|
||||
assert.isTrue(offset1 === offset2, `positionToLineOffset ${pos}::offset:: expected ${offset1} to equal ${offset2}`);
|
||||
assert(line1 === line2, `positionToLineOffset ${pos}::line:: expected ${line1} to equal ${line2}`);
|
||||
assert(offset1 === offset2, `positionToLineOffset ${pos}::offset:: expected ${offset1} to equal ${offset2}`);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -55,16 +55,16 @@ namespace ts.textStorage {
|
|||
const ts1 = new server.TextStorage(host, server.asNormalizedPath(f.path));
|
||||
|
||||
ts1.getSnapshot();
|
||||
assert.isTrue(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 1");
|
||||
assert(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 1");
|
||||
|
||||
ts1.edit(0, 5, " ");
|
||||
assert.isTrue(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 1");
|
||||
assert(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 1");
|
||||
|
||||
ts1.useText();
|
||||
assert.isTrue(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 2");
|
||||
assert(!ts1.hasScriptVersionCache_TestOnly(), "should not have script version cache - 2");
|
||||
|
||||
ts1.getLineInfo(0);
|
||||
assert.isTrue(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 2");
|
||||
assert(ts1.hasScriptVersionCache_TestOnly(), "have script version cache - 2");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -133,7 +133,7 @@ namespace ts.tscWatch {
|
|||
|
||||
function assertWatchDiagnosticAt(host: WatchedSystem, outputAt: number, diagnosticMessage: DiagnosticMessage) {
|
||||
const output = host.getOutput()[outputAt];
|
||||
assert.isTrue(endsWith(output, getWatchDiagnosticWithoutDate(host, diagnosticMessage)), "outputs[" + outputAt + "] is " + output);
|
||||
assert(endsWith(output, getWatchDiagnosticWithoutDate(host, diagnosticMessage)), "outputs[" + outputAt + "] is " + output);
|
||||
}
|
||||
|
||||
function getWatchDiagnosticWithoutDate(host: WatchedSystem, diagnosticMessage: DiagnosticMessage) {
|
||||
|
@ -1543,11 +1543,11 @@ namespace ts.tscWatch {
|
|||
function verifyEmittedFiles(host: WatchedSystem, emittedFiles: EmittedFile[]) {
|
||||
for (const { path, content, shouldBeWritten } of emittedFiles) {
|
||||
if (shouldBeWritten) {
|
||||
assert.isTrue(host.fileExists(path), `Expected file ${path} to be present`);
|
||||
assert(host.fileExists(path), `Expected file ${path} to be present`);
|
||||
assert.equal(host.readFile(path), content, `Contents of file ${path} do not match`);
|
||||
}
|
||||
else {
|
||||
assert.isNotTrue(host.fileExists(path), `Expected file ${path} to be absent`);
|
||||
assert(!host.fileExists(path), `Expected file ${path} to be absent`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1723,7 +1723,7 @@ namespace ts.tscWatch {
|
|||
return false;
|
||||
}
|
||||
fileExistsIsCalled = true;
|
||||
assert.isTrue(fileName.indexOf("/f2.") !== -1);
|
||||
assert(fileName.indexOf("/f2.") !== -1);
|
||||
return originalFileExists.call(host, fileName);
|
||||
};
|
||||
|
||||
|
@ -1738,7 +1738,7 @@ namespace ts.tscWatch {
|
|||
getDiagnosticModuleNotFoundOfFile(watch(), root, "f2")
|
||||
], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected);
|
||||
|
||||
assert.isTrue(fileExistsIsCalled);
|
||||
assert(fileExistsIsCalled);
|
||||
}
|
||||
{
|
||||
let fileExistsCalled = false;
|
||||
|
@ -1747,7 +1747,7 @@ namespace ts.tscWatch {
|
|||
return false;
|
||||
}
|
||||
fileExistsCalled = true;
|
||||
assert.isTrue(fileName.indexOf("/f1.") !== -1);
|
||||
assert(fileName.indexOf("/f1.") !== -1);
|
||||
return originalFileExists.call(host, fileName);
|
||||
};
|
||||
|
||||
|
@ -1758,7 +1758,7 @@ namespace ts.tscWatch {
|
|||
host.runQueuedTimeoutCallbacks();
|
||||
|
||||
checkOutputErrors(host, [f1IsNotModule, cannotFindFoo], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected);
|
||||
assert.isTrue(fileExistsCalled);
|
||||
assert(fileExistsCalled);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1791,7 +1791,7 @@ namespace ts.tscWatch {
|
|||
|
||||
const watch = createWatchModeWithoutConfigFile([root.path], host, { module: ModuleKind.AMD });
|
||||
|
||||
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called");
|
||||
assert(fileExistsCalledForBar, "'fileExists' should be called");
|
||||
checkOutputErrors(host, [
|
||||
getDiagnosticModuleNotFoundOfFile(watch(), root, "bar")
|
||||
], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterCompilationStarting);
|
||||
|
@ -1801,8 +1801,8 @@ namespace ts.tscWatch {
|
|||
host.reloadFS(files.concat(imported));
|
||||
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called.");
|
||||
checkOutputErrors(host, emptyArray, /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected);
|
||||
assert(fileExistsCalledForBar, "'fileExists' should be called.");
|
||||
});
|
||||
|
||||
it("should compile correctly when resolved module goes missing and then comes back (module is not part of the root)", () => {
|
||||
|
@ -1833,13 +1833,13 @@ namespace ts.tscWatch {
|
|||
|
||||
const watch = createWatchModeWithoutConfigFile([root.path], host, { module: ModuleKind.AMD });
|
||||
|
||||
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called");
|
||||
assert(fileExistsCalledForBar, "'fileExists' should be called");
|
||||
checkOutputErrors(host, emptyArray, /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterCompilationStarting);
|
||||
|
||||
fileExistsCalledForBar = false;
|
||||
host.reloadFS(files);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called.");
|
||||
assert(fileExistsCalledForBar, "'fileExists' should be called.");
|
||||
checkOutputErrors(host, [
|
||||
getDiagnosticModuleNotFoundOfFile(watch(), root, "bar")
|
||||
], /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected);
|
||||
|
@ -1847,8 +1847,8 @@ namespace ts.tscWatch {
|
|||
fileExistsCalledForBar = false;
|
||||
host.reloadFS(filesWithImported);
|
||||
host.checkTimeoutQueueLengthAndRun(1);
|
||||
assert.isTrue(fileExistsCalledForBar, "'fileExists' should be called.");
|
||||
checkOutputErrors(host, emptyArray, /*errorsPosition*/ ExpectedOutputErrorsPosition.AfterFileChangeDetected);
|
||||
assert(fileExistsCalledForBar, "'fileExists' should be called.");
|
||||
});
|
||||
|
||||
it("works when module resolution changes to ambient module", () => {
|
||||
|
@ -2050,7 +2050,7 @@ declare module "fs" {
|
|||
|
||||
checkProgramActualFiles(watch(), mapDefined(files, f => f === configFile ? undefined : f.path));
|
||||
const outputFile1 = changeExtension((outputFolder + getBaseFileName(file1.path)), ".js");
|
||||
assert.isTrue(host.fileExists(outputFile1));
|
||||
assert(host.fileExists(outputFile1));
|
||||
assert.equal(host.readFile(outputFile1), file1.content + host.newLine);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -11,20 +11,20 @@ namespace ts {
|
|||
function assertParseError(jsonText: string) {
|
||||
const parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
|
||||
assert.deepEqual(parsed.config, {});
|
||||
assert.isTrue(undefined !== parsed.error);
|
||||
assert(undefined !== parsed.error);
|
||||
}
|
||||
|
||||
function assertParseErrorWithExcludesKeyword(jsonText: string) {
|
||||
{
|
||||
const parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
|
||||
const parsedCommand = ts.parseJsonConfigFileContent(parsed.config, ts.sys, "tests/cases/unittests");
|
||||
assert.isTrue(parsedCommand.errors && parsedCommand.errors.length === 1 &&
|
||||
assert(parsedCommand.errors && parsedCommand.errors.length === 1 &&
|
||||
parsedCommand.errors[0].code === ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude.code);
|
||||
}
|
||||
{
|
||||
const parsed = ts.parseJsonText("/apath/tsconfig.json", jsonText);
|
||||
const parsedCommand = ts.parseJsonSourceFileConfigFileContent(parsed, ts.sys, "tests/cases/unittests");
|
||||
assert.isTrue(parsedCommand.errors && parsedCommand.errors.length === 1 &&
|
||||
assert(parsedCommand.errors && parsedCommand.errors.length === 1 &&
|
||||
parsedCommand.errors[0].code === ts.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude.code);
|
||||
}
|
||||
}
|
||||
|
@ -44,26 +44,26 @@ namespace ts {
|
|||
function assertParseFileList(jsonText: string, configFileName: string, basePath: string, allFileList: string[], expectedFileList: string[]) {
|
||||
{
|
||||
const parsed = getParsedCommandJson(jsonText, configFileName, basePath, allFileList);
|
||||
assert.isTrue(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
|
||||
assert(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
|
||||
}
|
||||
{
|
||||
const parsed = getParsedCommandJsonNode(jsonText, configFileName, basePath, allFileList);
|
||||
assert.isTrue(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
|
||||
assert(arrayIsEqualTo(parsed.fileNames.sort(), expectedFileList.sort()));
|
||||
}
|
||||
}
|
||||
|
||||
function assertParseFileDiagnostics(jsonText: string, configFileName: string, basePath: string, allFileList: string[], expectedDiagnosticCode: number, noLocation?: boolean) {
|
||||
{
|
||||
const parsed = getParsedCommandJson(jsonText, configFileName, basePath, allFileList);
|
||||
assert.isTrue(parsed.errors.length >= 0);
|
||||
assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
|
||||
assert(parsed.errors.length >= 0);
|
||||
assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
|
||||
}
|
||||
{
|
||||
const parsed = getParsedCommandJsonNode(jsonText, configFileName, basePath, allFileList);
|
||||
assert.isTrue(parsed.errors.length >= 0);
|
||||
assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
|
||||
assert(parsed.errors.length >= 0);
|
||||
assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)}`);
|
||||
if (!noLocation) {
|
||||
assert.isTrue(parsed.errors.filter(e => e.code === expectedDiagnosticCode && e.file && e.start && e.length).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)} with location information`);
|
||||
assert(parsed.errors.filter(e => e.code === expectedDiagnosticCode && e.file && e.start && e.length).length > 0, `Expected error code ${expectedDiagnosticCode} to be in ${JSON.stringify(parsed.errors)} with location information`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -241,7 +241,7 @@ namespace ts {
|
|||
},
|
||||
files: ["file1.ts"]
|
||||
};
|
||||
assert.isTrue(diagnostics.length === 2);
|
||||
assert(diagnostics.length === 2);
|
||||
assert.equal(JSON.stringify(configJsonObject), JSON.stringify(expectedResult));
|
||||
});
|
||||
|
||||
|
|
|
@ -468,8 +468,8 @@ namespace ts.projectSystem {
|
|||
assert.equal(outputs[index], server.formatMessage(expectedEvent, nullLogger, Utils.byteLength, session.host.newLine));
|
||||
|
||||
if (isMostRecent) {
|
||||
assert.strictEqual(events.length, index + 1, JSON.stringify(events));
|
||||
assert.strictEqual(outputs.length, index + 1, JSON.stringify(outputs));
|
||||
assert.equal(events.length, index + 1, JSON.stringify(events));
|
||||
assert.equal(outputs.length, index + 1, JSON.stringify(outputs));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -572,8 +572,8 @@ namespace ts.projectSystem {
|
|||
const projectService = createProjectService(host);
|
||||
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
|
||||
|
||||
assert(configFileName, "should find config file");
|
||||
assert.isTrue(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
|
||||
assert.isDefined(configFileName, "should find config file");
|
||||
assert(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
|
||||
checkNumberOfInferredProjects(projectService, 0);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
|
||||
|
@ -612,8 +612,8 @@ namespace ts.projectSystem {
|
|||
const projectService = createProjectService(host);
|
||||
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
|
||||
|
||||
assert(configFileName, "should find config file");
|
||||
assert.isTrue(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
|
||||
assert.isDefined(configFileName, "should find config file");
|
||||
assert(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
|
||||
checkNumberOfInferredProjects(projectService, 0);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
|
||||
|
@ -821,7 +821,7 @@ namespace ts.projectSystem {
|
|||
host.reloadFS([file1, commonFile2, libFile]);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
checkNumberOfInferredProjects(projectService, 1);
|
||||
assert.strictEqual(projectService.inferredProjects[0], project, "Inferred project should be same");
|
||||
assert.equal(projectService.inferredProjects[0], project, "Inferred project should be same");
|
||||
checkProjectRootFiles(project, [file1.path]);
|
||||
checkProjectActualFiles(project, [file1.path, libFile.path, commonFile2.path]);
|
||||
diags = session.executeCommand(getErrRequest).response as server.protocol.Diagnostic[];
|
||||
|
@ -1024,11 +1024,11 @@ namespace ts.projectSystem {
|
|||
|
||||
projectService.openExternalProject({ rootFiles: toExternalFiles([file1.path]), options: {}, projectFileName: proj1name });
|
||||
const proj1 = projectService.findProject(proj1name);
|
||||
assert.isTrue(proj1.languageServiceEnabled);
|
||||
assert(proj1.languageServiceEnabled);
|
||||
|
||||
projectService.openExternalProject({ rootFiles: toExternalFiles([file2.path]), options: {}, projectFileName: proj2name });
|
||||
const proj2 = projectService.findProject(proj2name);
|
||||
assert.isTrue(proj2.languageServiceEnabled);
|
||||
assert(proj2.languageServiceEnabled);
|
||||
|
||||
projectService.openExternalProject({ rootFiles: toExternalFiles([file3.path]), options: {}, projectFileName: proj3name });
|
||||
const proj3 = projectService.findProject(proj3name);
|
||||
|
@ -1100,18 +1100,18 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
const project = projectService.configuredProjects.get(configFile.path);
|
||||
assert.isTrue(project.hasOpenRef()); // file1
|
||||
assert(project.hasOpenRef()); // file1
|
||||
|
||||
projectService.closeClientFile(file1.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert.isFalse(project.hasOpenRef()); // No open files
|
||||
assert.isFalse(project.isClosed());
|
||||
|
||||
projectService.openClientFile(file2.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert.isTrue(project.hasOpenRef()); // file2
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert(project.hasOpenRef()); // file2
|
||||
assert.isFalse(project.isClosed());
|
||||
});
|
||||
|
||||
|
@ -1134,18 +1134,18 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
const project = projectService.configuredProjects.get(configFile.path);
|
||||
assert.isTrue(project.hasOpenRef()); // file1
|
||||
assert(project.hasOpenRef()); // file1
|
||||
|
||||
projectService.closeClientFile(file1.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert.isFalse(project.hasOpenRef()); // No files
|
||||
assert.isFalse(project.isClosed());
|
||||
|
||||
projectService.openClientFile(libFile.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 0);
|
||||
assert.isFalse(project.hasOpenRef()); // No files + project closed
|
||||
assert.isTrue(project.isClosed());
|
||||
assert(project.isClosed());
|
||||
});
|
||||
|
||||
it("should not close external project with no open files", () => {
|
||||
|
@ -1233,28 +1233,28 @@ namespace ts.projectSystem {
|
|||
// open client file - should not lead to creation of inferred project
|
||||
projectService.openClientFile(file1.path, file1.content);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 2 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(config2.path), proj2);
|
||||
assert.equal(projectService.configuredProjects.get(config1.path), proj1);
|
||||
assert.equal(projectService.configuredProjects.get(config2.path), proj2);
|
||||
|
||||
projectService.openClientFile(file3.path, file3.content);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 2, inferredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(config2.path), proj2);
|
||||
assert.equal(projectService.configuredProjects.get(config1.path), proj1);
|
||||
assert.equal(projectService.configuredProjects.get(config2.path), proj2);
|
||||
|
||||
projectService.closeExternalProject(externalProjectName);
|
||||
// open file 'file1' from configured project keeps project alive
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
|
||||
assert.equal(projectService.configuredProjects.get(config1.path), proj1);
|
||||
assert.isUndefined(projectService.configuredProjects.get(config2.path));
|
||||
|
||||
projectService.closeClientFile(file3.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
|
||||
assert.equal(projectService.configuredProjects.get(config1.path), proj1);
|
||||
assert.isUndefined(projectService.configuredProjects.get(config2.path));
|
||||
|
||||
projectService.closeClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(config1.path), proj1);
|
||||
assert.equal(projectService.configuredProjects.get(config1.path), proj1);
|
||||
assert.isUndefined(projectService.configuredProjects.get(config2.path));
|
||||
|
||||
projectService.openClientFile(file2.path, file2.content);
|
||||
|
@ -1286,14 +1286,14 @@ namespace ts.projectSystem {
|
|||
|
||||
const completions1 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 2, { includeExternalModuleExports: false });
|
||||
// should contain completions for string
|
||||
assert.isTrue(completions1.entries.some(e => e.name === "charAt"), "should contain 'charAt'");
|
||||
assert(completions1.entries.some(e => e.name === "charAt"), "should contain 'charAt'");
|
||||
assert.isFalse(completions1.entries.some(e => e.name === "toExponential"), "should not contain 'toExponential'");
|
||||
|
||||
service.closeClientFile(f2.path);
|
||||
const completions2 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 2, { includeExternalModuleExports: false });
|
||||
// should contain completions for string
|
||||
assert.isFalse(completions2.entries.some(e => e.name === "charAt"), "should not contain 'charAt'");
|
||||
assert.isTrue(completions2.entries.some(e => e.name === "toExponential"), "should contain 'toExponential'");
|
||||
assert(completions2.entries.some(e => e.name === "toExponential"), "should contain 'toExponential'");
|
||||
});
|
||||
|
||||
it("clear mixed content file after closing", () => {
|
||||
|
@ -1317,7 +1317,7 @@ namespace ts.projectSystem {
|
|||
checkProjectActualFiles(service.externalProjects[0], [f1.path, f2.path, libFile.path]);
|
||||
|
||||
const completions1 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 0, { includeExternalModuleExports: false });
|
||||
assert.isTrue(completions1.entries.some(e => e.name === "somelongname"), "should contain 'somelongname'");
|
||||
assert(completions1.entries.some(e => e.name === "somelongname"), "should contain 'somelongname'");
|
||||
|
||||
service.closeClientFile(f2.path);
|
||||
const completions2 = service.externalProjects[0].getLanguageService().getCompletionsAtPosition(f1.path, 0, { includeExternalModuleExports: false });
|
||||
|
@ -1387,16 +1387,16 @@ namespace ts.projectSystem {
|
|||
});
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), project);
|
||||
|
||||
projectService.closeExternalProject(externalProjectName);
|
||||
// configured project is alive since file is still open
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), project);
|
||||
|
||||
projectService.closeClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), project);
|
||||
|
||||
projectService.openClientFile(file2.path);
|
||||
checkNumberOfProjects(projectService, { inferredProjects: 1 });
|
||||
|
@ -1910,7 +1910,7 @@ namespace ts.projectSystem {
|
|||
|
||||
// The configured project should now be updated to include html file
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(configuredProjectAt(projectService, 0), configuredProj, "Same configured project should be updated");
|
||||
assert.equal(configuredProjectAt(projectService, 0), configuredProj, "Same configured project should be updated");
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, config.path]);
|
||||
|
||||
// Open HTML file
|
||||
|
@ -2176,18 +2176,18 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(file2.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const project1 = projectService.configuredProjects.get(tsconfig1.path);
|
||||
assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 1"); // file2
|
||||
assert(project1.hasOpenRef(), "Has open ref count in project1 - 1"); // file2
|
||||
assert.equal(project1.getScriptInfo(file2.path).containingProjects.length, 1, "containing projects count");
|
||||
assert.isFalse(project1.isClosed());
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 2 });
|
||||
assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 2"); // file2
|
||||
assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
|
||||
assert(project1.hasOpenRef(), "Has open ref count in project1 - 2"); // file2
|
||||
assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
|
||||
assert.isFalse(project1.isClosed());
|
||||
|
||||
const project2 = projectService.configuredProjects.get(tsconfig2.path);
|
||||
assert.isTrue(project2.hasOpenRef(), "Has open ref count in project2 - 2"); // file1
|
||||
assert(project2.hasOpenRef(), "Has open ref count in project2 - 2"); // file1
|
||||
assert.isFalse(project2.isClosed());
|
||||
|
||||
assert.equal(project1.getScriptInfo(file1.path).containingProjects.length, 2, `${file1.path} containing projects count`);
|
||||
|
@ -2196,9 +2196,9 @@ namespace ts.projectSystem {
|
|||
projectService.closeClientFile(file2.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 2 });
|
||||
assert.isFalse(project1.hasOpenRef(), "Has open ref count in project1 - 3"); // No files
|
||||
assert.isTrue(project2.hasOpenRef(), "Has open ref count in project2 - 3"); // file1
|
||||
assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(tsconfig2.path), project2);
|
||||
assert(project2.hasOpenRef(), "Has open ref count in project2 - 3"); // file1
|
||||
assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
|
||||
assert.equal(projectService.configuredProjects.get(tsconfig2.path), project2);
|
||||
assert.isFalse(project1.isClosed());
|
||||
assert.isFalse(project2.isClosed());
|
||||
|
||||
|
@ -2206,18 +2206,18 @@ namespace ts.projectSystem {
|
|||
checkNumberOfProjects(projectService, { configuredProjects: 2 });
|
||||
assert.isFalse(project1.hasOpenRef(), "Has open ref count in project1 - 4"); // No files
|
||||
assert.isFalse(project2.hasOpenRef(), "Has open ref count in project2 - 4"); // No files
|
||||
assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(tsconfig2.path), project2);
|
||||
assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
|
||||
assert.equal(projectService.configuredProjects.get(tsconfig2.path), project2);
|
||||
assert.isFalse(project1.isClosed());
|
||||
assert.isFalse(project2.isClosed());
|
||||
|
||||
projectService.openClientFile(file2.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(tsconfig1.path), project1);
|
||||
assert.equal(projectService.configuredProjects.get(tsconfig1.path), project1);
|
||||
assert.isUndefined(projectService.configuredProjects.get(tsconfig2.path));
|
||||
assert.isTrue(project1.hasOpenRef(), "Has open ref count in project1 - 5"); // file2
|
||||
assert(project1.hasOpenRef(), "Has open ref count in project1 - 5"); // file2
|
||||
assert.isFalse(project1.isClosed());
|
||||
assert.isTrue(project2.isClosed());
|
||||
assert(project2.isClosed());
|
||||
});
|
||||
|
||||
it("Open ref of configured project when open file gets added to the project as part of configured file update", () => {
|
||||
|
@ -2255,7 +2255,7 @@ namespace ts.projectSystem {
|
|||
checkOpenFiles(projectService, files);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 2 });
|
||||
const configProject1 = projectService.configuredProjects.get(configFile.path);
|
||||
assert.isTrue(configProject1.hasOpenRef()); // file1 and file3
|
||||
assert(configProject1.hasOpenRef()); // file1 and file3
|
||||
checkProjectActualFiles(configProject1, [file1.path, file3.path, configFile.path]);
|
||||
const inferredProject1 = projectService.inferredProjects[0];
|
||||
checkProjectActualFiles(inferredProject1, [file2.path]);
|
||||
|
@ -2272,7 +2272,7 @@ namespace ts.projectSystem {
|
|||
checkNumberOfInferredProjects(projectService, 1);
|
||||
const inferredProject3 = projectService.inferredProjects[0];
|
||||
checkProjectActualFiles(inferredProject3, [file4.path]);
|
||||
assert.strictEqual(inferredProject3, inferredProject2);
|
||||
assert.equal(inferredProject3, inferredProject2);
|
||||
|
||||
projectService.closeClientFile(file1.path);
|
||||
projectService.closeClientFile(file2.path);
|
||||
|
@ -2298,7 +2298,7 @@ namespace ts.projectSystem {
|
|||
checkNumberOfInferredProjects(projectService, 1);
|
||||
const inferredProject5 = projectService.inferredProjects[0];
|
||||
checkProjectActualFiles(inferredProject4, [file4.path]);
|
||||
assert.strictEqual(inferredProject5, inferredProject4);
|
||||
assert.equal(inferredProject5, inferredProject4);
|
||||
|
||||
const file5: FileOrFolder = {
|
||||
path: "/file5.ts",
|
||||
|
@ -2307,13 +2307,13 @@ namespace ts.projectSystem {
|
|||
host.reloadFS(files.concat(configFile, file5));
|
||||
projectService.openClientFile(file5.path);
|
||||
verifyScriptInfosAreUndefined([file1, file2, file3]);
|
||||
assert.strictEqual(projectService.getScriptInfoForPath(file4.path as Path), find(infos, info => info.path === file4.path));
|
||||
assert.equal(projectService.getScriptInfoForPath(file4.path as Path), find(infos, info => info.path === file4.path));
|
||||
assert.isDefined(projectService.getScriptInfoForPath(file5.path as Path));
|
||||
checkOpenFiles(projectService, [file4, file5]);
|
||||
checkNumberOfConfiguredProjects(projectService, 0);
|
||||
|
||||
function verifyScriptInfos() {
|
||||
infos.forEach(info => assert.strictEqual(projectService.getScriptInfoForPath(info.path), info));
|
||||
infos.forEach(info => assert.equal(projectService.getScriptInfoForPath(info.path), info));
|
||||
}
|
||||
|
||||
function verifyScriptInfosAreUndefined(files: FileOrFolder[]) {
|
||||
|
@ -2325,7 +2325,7 @@ namespace ts.projectSystem {
|
|||
function verifyConfiguredProjectStateAfterUpdate(hasOpenRef: boolean) {
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
const configProject2 = projectService.configuredProjects.get(configFile.path);
|
||||
assert.strictEqual(configProject2, configProject1);
|
||||
assert.equal(configProject2, configProject1);
|
||||
checkProjectActualFiles(configProject2, [file1.path, file2.path, file3.path, configFile.path]);
|
||||
assert.equal(configProject2.hasOpenRef(), hasOpenRef);
|
||||
}
|
||||
|
@ -2364,7 +2364,7 @@ namespace ts.projectSystem {
|
|||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 });
|
||||
const configuredProject = projectService.configuredProjects.get(configFile.path);
|
||||
assert.isTrue(configuredProject.hasOpenRef()); // file1 and file3
|
||||
assert(configuredProject.hasOpenRef()); // file1 and file3
|
||||
checkProjectActualFiles(configuredProject, [file1.path, file3.path, configFile.path]);
|
||||
const inferredProject1 = projectService.inferredProjects[0];
|
||||
checkProjectActualFiles(inferredProject1, [file2.path]);
|
||||
|
@ -2376,23 +2376,23 @@ namespace ts.projectSystem {
|
|||
configFile.content = "{}";
|
||||
host.reloadFS(files.concat(configFile));
|
||||
// Time out is not yet run so there is project update pending
|
||||
assert.isTrue(configuredProject.hasOpenRef()); // Pending update and file2 might get into the project
|
||||
assert(configuredProject.hasOpenRef()); // Pending update and file2 might get into the project
|
||||
|
||||
projectService.openClientFile(file4.path);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 2 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), configuredProject);
|
||||
assert.isTrue(configuredProject.hasOpenRef()); // Pending update and F2 might get into the project
|
||||
assert.strictEqual(projectService.inferredProjects[0], inferredProject1);
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), configuredProject);
|
||||
assert(configuredProject.hasOpenRef()); // Pending update and F2 might get into the project
|
||||
assert.equal(projectService.inferredProjects[0], inferredProject1);
|
||||
const inferredProject2 = projectService.inferredProjects[1];
|
||||
checkProjectActualFiles(inferredProject2, [file4.path]);
|
||||
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), configuredProject);
|
||||
assert.isTrue(configuredProject.hasOpenRef()); // file2
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), configuredProject);
|
||||
assert(configuredProject.hasOpenRef()); // file2
|
||||
checkProjectActualFiles(configuredProject, [file1.path, file2.path, file3.path, configFile.path]);
|
||||
assert.strictEqual(projectService.inferredProjects[0], inferredProject2);
|
||||
assert.equal(projectService.inferredProjects[0], inferredProject2);
|
||||
checkProjectActualFiles(inferredProject2, [file4.path]);
|
||||
});
|
||||
|
||||
|
@ -2427,7 +2427,7 @@ namespace ts.projectSystem {
|
|||
options: {}
|
||||
});
|
||||
service.checkNumberOfProjects({ externalProjects: 1 });
|
||||
assert.isTrue(service.externalProjects[0].languageServiceEnabled, "language service should be enabled");
|
||||
assert(service.externalProjects[0].languageServiceEnabled, "language service should be enabled");
|
||||
|
||||
service.openExternalProject({
|
||||
projectFileName,
|
||||
|
@ -2464,12 +2464,12 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(f1.path);
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
const project = projectService.configuredProjects.get(config.path);
|
||||
assert.isTrue(project.hasOpenRef()); // f1
|
||||
assert(project.hasOpenRef()); // f1
|
||||
assert.isFalse(project.isClosed());
|
||||
|
||||
projectService.closeClientFile(f1.path);
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(config.path), project);
|
||||
assert.equal(projectService.configuredProjects.get(config.path), project);
|
||||
assert.isFalse(project.hasOpenRef()); // No files
|
||||
assert.isFalse(project.isClosed());
|
||||
|
||||
|
@ -2488,7 +2488,7 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(f4.path);
|
||||
projectService.checkNumberOfProjects({ inferredProjects: 1 });
|
||||
assert.isFalse(project.hasOpenRef()); // No files
|
||||
assert.isTrue(project.isClosed());
|
||||
assert(project.isClosed());
|
||||
|
||||
for (const f of [f1, f2, f3]) {
|
||||
// All the script infos should not be present since the project is closed and orphan script infos are collected
|
||||
|
@ -2540,7 +2540,7 @@ namespace ts.projectSystem {
|
|||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
assert.isFalse(project.languageServiceEnabled, "Language service enabled");
|
||||
assert.isTrue(!!lastEvent, "should receive event");
|
||||
assert(!!lastEvent, "should receive event");
|
||||
assert.equal(lastEvent.data.project, project, "project name");
|
||||
assert.equal(lastEvent.data.project.getProjectName(), config.path, "config path");
|
||||
assert.isFalse(lastEvent.data.languageServiceEnabled, "Language service state");
|
||||
|
@ -2548,9 +2548,9 @@ namespace ts.projectSystem {
|
|||
host.reloadFS([f1, f2, configWithExclude]);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.isTrue(project.languageServiceEnabled, "Language service enabled");
|
||||
assert(project.languageServiceEnabled, "Language service enabled");
|
||||
assert.equal(lastEvent.data.project, project, "project");
|
||||
assert.isTrue(lastEvent.data.languageServiceEnabled, "Language service state");
|
||||
assert(lastEvent.data.languageServiceEnabled, "Language service state");
|
||||
});
|
||||
|
||||
it("syntactic features work even if language service is disabled", () => {
|
||||
|
@ -2592,7 +2592,7 @@ namespace ts.projectSystem {
|
|||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
assert.isFalse(project.languageServiceEnabled, "Language service enabled");
|
||||
assert.isTrue(!!lastEvent, "should receive event");
|
||||
assert(!!lastEvent, "should receive event");
|
||||
assert.equal(lastEvent.data.project, project, "project name");
|
||||
assert.isFalse(lastEvent.data.languageServiceEnabled, "Language service state");
|
||||
|
||||
|
@ -2747,7 +2747,7 @@ namespace ts.projectSystem {
|
|||
host.runQueuedTimeoutCallbacks();
|
||||
watchedRecursiveDirectories.pop();
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), project);
|
||||
checkProjectActualFiles(project, mapDefined(files, file => file === file2a ? undefined : file.path));
|
||||
checkWatchedFiles(host, mapDefined(files, file => file === file1 ? undefined : file.path));
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
|
@ -2756,7 +2756,7 @@ namespace ts.projectSystem {
|
|||
// On next file open the files file2a should be closed and not watched any more
|
||||
projectService.openClientFile(file2.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), project);
|
||||
checkProjectActualFiles(project, mapDefined(files, file => file === file2a ? undefined : file.path));
|
||||
checkWatchedFiles(host, [libFile.path, configFile.path]);
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
|
@ -2979,7 +2979,7 @@ namespace ts.projectSystem {
|
|||
});
|
||||
projectService.checkNumberOfProjects({ externalProjects: 1 });
|
||||
const typeAcquisition = projectService.externalProjects[0].getTypeAcquisition();
|
||||
assert.isTrue(typeAcquisition.enable, "Typine acquisition should be enabled");
|
||||
assert(typeAcquisition.enable, "Typine acquisition should be enabled");
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -3050,7 +3050,7 @@ namespace ts.projectSystem {
|
|||
|
||||
const localFunctionNavToRequst = makeSessionRequest<protocol.NavtoRequestArgs>(CommandNames.Navto, { searchValue: "foo", file: file1.path, projectFileName: configFile.path });
|
||||
const items2 = session.executeCommand(localFunctionNavToRequst).response as protocol.NavtoItem[];
|
||||
assert.isTrue(containsNavToItem(items2, "foo", "function"), `Cannot find function symbol "foo".`);
|
||||
assert(containsNavToItem(items2, "foo", "function"), `Cannot find function symbol "foo".`);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -3264,18 +3264,18 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(f.path);
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
const project = projectService.configuredProjects.get(config.path);
|
||||
assert.isTrue(project.hasOpenRef()); // f
|
||||
assert(project.hasOpenRef()); // f
|
||||
|
||||
projectService.closeClientFile(f.path);
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(config.path), project);
|
||||
assert.equal(projectService.configuredProjects.get(config.path), project);
|
||||
assert.isFalse(project.hasOpenRef()); // No files
|
||||
assert.isFalse(project.isClosed());
|
||||
|
||||
projectService.openClientFile(f.path);
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(config.path), project);
|
||||
assert.isTrue(project.hasOpenRef()); // f
|
||||
assert.equal(projectService.configuredProjects.get(config.path), project);
|
||||
assert(project.hasOpenRef()); // f
|
||||
assert.isFalse(project.isClosed());
|
||||
});
|
||||
});
|
||||
|
@ -3872,16 +3872,16 @@ namespace ts.projectSystem {
|
|||
{ file: file2.path }
|
||||
);
|
||||
let errorResult = <protocol.Diagnostic[]>session.executeCommand(file2GetErrRequest).response;
|
||||
assert.isTrue(errorResult.length === 0);
|
||||
assert(errorResult.length === 0);
|
||||
|
||||
const closeFileRequest = makeSessionRequest<protocol.FileRequestArgs>(CommandNames.Close, { file: file1.path });
|
||||
session.executeCommand(closeFileRequest);
|
||||
errorResult = <protocol.Diagnostic[]>session.executeCommand(file2GetErrRequest).response;
|
||||
assert.isTrue(errorResult.length !== 0);
|
||||
assert(errorResult.length !== 0);
|
||||
|
||||
openFilesForSession([file1], session);
|
||||
errorResult = <protocol.Diagnostic[]>session.executeCommand(file2GetErrRequest).response;
|
||||
assert.isTrue(errorResult.length === 0);
|
||||
assert(errorResult.length === 0);
|
||||
});
|
||||
|
||||
it("should be turned on for js-only external projects", () => {
|
||||
|
@ -3917,7 +3917,7 @@ namespace ts.projectSystem {
|
|||
{ file: dTsFile.path }
|
||||
);
|
||||
const errorResult = <protocol.Diagnostic[]>session.executeCommand(dTsFileGetErrRequest).response;
|
||||
assert.isTrue(errorResult.length === 0);
|
||||
assert(errorResult.length === 0);
|
||||
});
|
||||
|
||||
it("should be turned on for js-only external projects with skipLibCheck=false", () => {
|
||||
|
@ -3953,7 +3953,7 @@ namespace ts.projectSystem {
|
|||
{ file: dTsFile.path }
|
||||
);
|
||||
const errorResult = <protocol.Diagnostic[]>session.executeCommand(dTsFileGetErrRequest).response;
|
||||
assert.isTrue(errorResult.length === 0);
|
||||
assert(errorResult.length === 0);
|
||||
});
|
||||
|
||||
it("should not report bind errors for declaration files with skipLibCheck=true", () => {
|
||||
|
@ -3984,14 +3984,14 @@ namespace ts.projectSystem {
|
|||
{ file: dTsFile1.path }
|
||||
);
|
||||
const error1Result = <protocol.Diagnostic[]>session.executeCommand(dTsFile1GetErrRequest).response;
|
||||
assert.isTrue(error1Result.length === 0);
|
||||
assert(error1Result.length === 0);
|
||||
|
||||
const dTsFile2GetErrRequest = makeSessionRequest<protocol.SemanticDiagnosticsSyncRequestArgs>(
|
||||
CommandNames.SemanticDiagnosticsSync,
|
||||
{ file: dTsFile2.path }
|
||||
);
|
||||
const error2Result = <protocol.Diagnostic[]>session.executeCommand(dTsFile2GetErrRequest).response;
|
||||
assert.isTrue(error2Result.length === 0);
|
||||
assert(error2Result.length === 0);
|
||||
});
|
||||
|
||||
it("should report semanitc errors for loose JS files with '// @ts-check' and skipLibCheck=true", () => {
|
||||
|
@ -4012,7 +4012,7 @@ namespace ts.projectSystem {
|
|||
{ file: jsFile.path }
|
||||
);
|
||||
const errorResult = <protocol.Diagnostic[]>session.executeCommand(getErrRequest).response;
|
||||
assert.isTrue(errorResult.length === 1);
|
||||
assert(errorResult.length === 1);
|
||||
assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code);
|
||||
});
|
||||
|
||||
|
@ -4039,7 +4039,7 @@ namespace ts.projectSystem {
|
|||
{ file: jsFile.path }
|
||||
);
|
||||
const errorResult = <protocol.Diagnostic[]>session.executeCommand(getErrRequest).response;
|
||||
assert.isTrue(errorResult.length === 1);
|
||||
assert(errorResult.length === 1);
|
||||
assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code);
|
||||
});
|
||||
|
||||
|
@ -4068,7 +4068,7 @@ namespace ts.projectSystem {
|
|||
{ file: jsFile.path }
|
||||
);
|
||||
const errorResult = <protocol.Diagnostic[]>session.executeCommand(getErrRequest).response;
|
||||
assert.isTrue(errorResult.length === 1);
|
||||
assert(errorResult.length === 1);
|
||||
assert.equal(errorResult[0].code, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code);
|
||||
});
|
||||
});
|
||||
|
@ -4096,7 +4096,7 @@ namespace ts.projectSystem {
|
|||
checkNumberOfInferredProjects(projectService, 1);
|
||||
|
||||
const inferredProject = projectService.inferredProjects[0];
|
||||
assert.isTrue(inferredProject.containsFile(<server.NormalizedPath>file1.path));
|
||||
assert(inferredProject.containsFile(<server.NormalizedPath>file1.path));
|
||||
});
|
||||
|
||||
it("should be able to handle @types if input file list is empty", () => {
|
||||
|
@ -4236,7 +4236,7 @@ namespace ts.projectSystem {
|
|||
arguments: { file: f1.path }
|
||||
});
|
||||
checkScriptInfoAndProjects(0, f1.content, "contents of closed file");
|
||||
assert.strictEqual(info.getSnapshot(), snap);
|
||||
assert.equal(info.getSnapshot(), snap);
|
||||
|
||||
// reload from temp file
|
||||
session.executeCommandSeq(<server.protocol.ReloadRequest>{
|
||||
|
@ -4244,7 +4244,7 @@ namespace ts.projectSystem {
|
|||
arguments: { file: f1.path, tmpfile: tmp.path }
|
||||
});
|
||||
checkScriptInfoAndProjects(0, tmp.content, "contents of temp file");
|
||||
assert.notStrictEqual(info.getSnapshot(), snap);
|
||||
assert.notEqual(info.getSnapshot(), snap);
|
||||
|
||||
// reload from own file
|
||||
session.executeCommandSeq(<server.protocol.ReloadRequest>{
|
||||
|
@ -4252,11 +4252,11 @@ namespace ts.projectSystem {
|
|||
arguments: { file: f1.path }
|
||||
});
|
||||
checkScriptInfoAndProjects(0, f1.content, "contents of closed file");
|
||||
assert.notStrictEqual(info.getSnapshot(), snap);
|
||||
assert.notEqual(info.getSnapshot(), snap);
|
||||
|
||||
function checkScriptInfoAndProjects(inferredProjects: number, contentsOfInfo: string, captionForContents: string) {
|
||||
checkNumberOfProjects(projectService, { inferredProjects });
|
||||
assert.strictEqual(projectService.getScriptInfo(f1.path), info);
|
||||
assert.equal(projectService.getScriptInfo(f1.path), info);
|
||||
checkScriptInfoContents(contentsOfInfo, captionForContents);
|
||||
}
|
||||
|
||||
|
@ -4515,7 +4515,7 @@ namespace ts.projectSystem {
|
|||
seq: 2,
|
||||
arguments: { projectFileName: projectName }
|
||||
}).response as ReadonlyArray<protocol.DiagnosticWithLinePosition>;
|
||||
assert.isTrue(diags.length === 0);
|
||||
assert(diags.length === 0);
|
||||
|
||||
session.executeCommand(<server.protocol.SetCompilerOptionsForInferredProjectsRequest>{
|
||||
type: "request",
|
||||
|
@ -4529,7 +4529,7 @@ namespace ts.projectSystem {
|
|||
seq: 4,
|
||||
arguments: { projectFileName: projectName }
|
||||
}).response as ReadonlyArray<protocol.DiagnosticWithLinePosition>;
|
||||
assert.isTrue(diagsAfterUpdate.length === 0);
|
||||
assert(diagsAfterUpdate.length === 0);
|
||||
});
|
||||
|
||||
it("for external project", () => {
|
||||
|
@ -4556,7 +4556,7 @@ namespace ts.projectSystem {
|
|||
seq: 2,
|
||||
arguments: { projectFileName }
|
||||
}).response as ReadonlyArray<ts.server.protocol.DiagnosticWithLinePosition>;
|
||||
assert.isTrue(diags.length === 0);
|
||||
assert(diags.length === 0);
|
||||
|
||||
session.executeCommand(<server.protocol.OpenExternalProjectRequest>{
|
||||
type: "request",
|
||||
|
@ -4574,7 +4574,7 @@ namespace ts.projectSystem {
|
|||
seq: 4,
|
||||
arguments: { projectFileName }
|
||||
}).response as ReadonlyArray<ts.server.protocol.DiagnosticWithLinePosition>;
|
||||
assert.isTrue(diagsAfterUpdate.length === 0);
|
||||
assert(diagsAfterUpdate.length === 0);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -4758,7 +4758,7 @@ namespace ts.projectSystem {
|
|||
isCancellationRequested: () => false,
|
||||
setRequest: requestId => {
|
||||
if (expectedRequestId === undefined) {
|
||||
assert.isTrue(false, "unexpected call");
|
||||
assert(false, "unexpected call");
|
||||
}
|
||||
assert.equal(requestId, expectedRequestId);
|
||||
},
|
||||
|
@ -5017,7 +5017,7 @@ namespace ts.projectSystem {
|
|||
);
|
||||
const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[];
|
||||
const firstOccurence = highlightResponse[0];
|
||||
assert.isTrue(firstOccurence.isInString, "Highlights should be marked with isInString");
|
||||
assert(firstOccurence.isInString, "Highlights should be marked with isInString");
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -5026,7 +5026,7 @@ namespace ts.projectSystem {
|
|||
{ file: file1.path, line: 3, offset: 13 }
|
||||
);
|
||||
const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[];
|
||||
assert.isTrue(highlightResponse.length === 2);
|
||||
assert(highlightResponse.length === 2);
|
||||
const firstOccurence = highlightResponse[0];
|
||||
assert.isUndefined(firstOccurence.isInString, "Highlights should not be marked with isInString if on property name");
|
||||
}
|
||||
|
@ -5037,7 +5037,7 @@ namespace ts.projectSystem {
|
|||
{ file: file1.path, line: 4, offset: 14 }
|
||||
);
|
||||
const highlightResponse = session.executeCommand(highlightRequest).response as protocol.OccurrencesResponseItem[];
|
||||
assert.isTrue(highlightResponse.length === 2);
|
||||
assert(highlightResponse.length === 2);
|
||||
const firstOccurence = highlightResponse[0];
|
||||
assert.isUndefined(firstOccurence.isInString, "Highlights should not be marked with isInString if on indexer");
|
||||
}
|
||||
|
@ -5061,13 +5061,13 @@ namespace ts.projectSystem {
|
|||
|
||||
let project = projectService.inferredProjects[0];
|
||||
let options = project.getCompilationSettings();
|
||||
assert.isTrue(options.maxNodeModuleJsDepth === 2);
|
||||
assert(options.maxNodeModuleJsDepth === 2);
|
||||
|
||||
// Assert the option sticks
|
||||
projectService.setCompilerOptionsForInferredProjects({ target: ScriptTarget.ES2016 });
|
||||
project = projectService.inferredProjects[0];
|
||||
options = project.getCompilationSettings();
|
||||
assert.isTrue(options.maxNodeModuleJsDepth === 2);
|
||||
assert(options.maxNodeModuleJsDepth === 2);
|
||||
});
|
||||
|
||||
it("should return to normal state when all js root files are removed from project", () => {
|
||||
|
@ -5090,7 +5090,7 @@ namespace ts.projectSystem {
|
|||
|
||||
projectService.openClientFile(file2.path);
|
||||
project = projectService.inferredProjects[0];
|
||||
assert.isTrue(project.getCompilationSettings().maxNodeModuleJsDepth === 2);
|
||||
assert(project.getCompilationSettings().maxNodeModuleJsDepth === 2);
|
||||
|
||||
projectService.closeClientFile(file2.path);
|
||||
project = projectService.inferredProjects[0];
|
||||
|
@ -5134,7 +5134,7 @@ namespace ts.projectSystem {
|
|||
seq: 2,
|
||||
arguments: { file: configFile.path, projectFileName: projectName, includeLinePosition: true }
|
||||
}).response as ReadonlyArray<server.protocol.DiagnosticWithLinePosition>;
|
||||
assert.isTrue(diags.length === 2);
|
||||
assert(diags.length === 2);
|
||||
|
||||
configFile.content = configFileContentWithoutCommentLine;
|
||||
host.reloadFS([file, configFile]);
|
||||
|
@ -5145,7 +5145,7 @@ namespace ts.projectSystem {
|
|||
seq: 2,
|
||||
arguments: { file: configFile.path, projectFileName: projectName, includeLinePosition: true }
|
||||
}).response as ReadonlyArray<server.protocol.DiagnosticWithLinePosition>;
|
||||
assert.isTrue(diagsAfterEdit.length === 2);
|
||||
assert(diagsAfterEdit.length === 2);
|
||||
|
||||
verifyDiagnostic(diags[0], diagsAfterEdit[0]);
|
||||
verifyDiagnostic(diags[1], diagsAfterEdit[1]);
|
||||
|
@ -5271,7 +5271,7 @@ namespace ts.projectSystem {
|
|||
function verifyCalledOn(callback: CalledMaps, name: string) {
|
||||
const calledMap = calledMaps[callback];
|
||||
const result = calledMap.get(name);
|
||||
assert.isTrue(result && !!result.length, `${callback} should be called with name: ${name}: ${arrayFrom(calledMap.keys())}`);
|
||||
assert(result && !!result.length, `${callback} should be called with name: ${name}: ${arrayFrom(calledMap.keys())}`);
|
||||
}
|
||||
|
||||
function verifyNoCall(callback: CalledMaps) {
|
||||
|
@ -5283,7 +5283,7 @@ namespace ts.projectSystem {
|
|||
const calledMap = calledMaps[callback];
|
||||
ts.TestFSWithWatch.verifyMapSize(callback, calledMap, arrayFrom(expectedKeys.keys()));
|
||||
expectedKeys.forEach((called, name) => {
|
||||
assert.isTrue(calledMap.has(name), `${callback} is expected to contain ${name}, actual keys: ${arrayFrom(calledMap.keys())}`);
|
||||
assert(calledMap.has(name), `${callback} is expected to contain ${name}, actual keys: ${arrayFrom(calledMap.keys())}`);
|
||||
assert.equal(calledMap.get(name).length, called, `${callback} is expected to be called ${called} times with ${name}. Actual entry: ${calledMap.get(name)}`);
|
||||
});
|
||||
}
|
||||
|
@ -5356,10 +5356,10 @@ namespace ts.projectSystem {
|
|||
try {
|
||||
// trigger synchronization to make sure that LSHost will try to find 'f2' module on disk
|
||||
verifyImportedDiagnostics();
|
||||
assert.isTrue(false, `should not find file '${imported.path}'`);
|
||||
assert(false, `should not find file '${imported.path}'`);
|
||||
}
|
||||
catch (e) {
|
||||
assert.isTrue(e.message.indexOf(`Could not find file: '${imported.path}'.`) === 0);
|
||||
assert(e.message.indexOf(`Could not find file: '${imported.path}'.`) === 0);
|
||||
}
|
||||
const f2Lookups = getLocationsForModuleLookup("f2");
|
||||
callsTrackingHost.verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.fileExists, f2Lookups, 1);
|
||||
|
@ -5544,7 +5544,7 @@ namespace ts.projectSystem {
|
|||
callsTrackingHost.verifyNoHostCallsExceptFileExistsOnce(["/a/b/models/tsconfig.json", "/a/b/models/jsconfig.json"]);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(tsconfigFile.path), project);
|
||||
assert.equal(projectService.configuredProjects.get(tsconfigFile.path), project);
|
||||
});
|
||||
|
||||
describe("WatchDirectories for config file with", () => {
|
||||
|
@ -5631,7 +5631,7 @@ namespace ts.projectSystem {
|
|||
callsTrackingHost.verifyNoCall(CalledMapsWithFiveArgs.readDirectory);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(canonicalConfigPath), project);
|
||||
assert.equal(projectService.configuredProjects.get(canonicalConfigPath), project);
|
||||
verifyProjectAndWatchedDirectories();
|
||||
|
||||
callsTrackingHost.clear();
|
||||
|
@ -5640,7 +5640,7 @@ namespace ts.projectSystem {
|
|||
assert.equal(configFile2, configFileName);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(canonicalConfigPath), project);
|
||||
assert.equal(projectService.configuredProjects.get(canonicalConfigPath), project);
|
||||
verifyProjectAndWatchedDirectories();
|
||||
callsTrackingHost.verifyNoHostCalls();
|
||||
|
||||
|
@ -5842,7 +5842,7 @@ namespace ts.projectSystem {
|
|||
forEach(actual, f => {
|
||||
assert.isFalse(seen.has(f), `${caption}: Found duplicate ${f}. Actual: ${actual} Expected: ${expected}`);
|
||||
seen.set(f, true);
|
||||
assert.isTrue(contains(expected, f), `${caption}: Expected not to contain ${f}. Actual: ${actual} Expected: ${expected}`);
|
||||
assert(contains(expected, f), `${caption}: Expected not to contain ${f}. Actual: ${actual} Expected: ${expected}`);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -6313,7 +6313,7 @@ namespace ts.projectSystem {
|
|||
else {
|
||||
// file2 addition wont be detected
|
||||
projectFiles.pop();
|
||||
assert.isTrue(host.fileExists(file2.path));
|
||||
assert(host.fileExists(file2.path));
|
||||
}
|
||||
verifyProject();
|
||||
|
||||
|
@ -6380,7 +6380,7 @@ namespace ts.projectSystem {
|
|||
assert.equal(projectChangedEvents.length, expectedEvents.length, `Incorrect number of events Actual: ${eventsToString(projectChangedEvents)} Expected: ${eventsToString(expectedEvents)}`);
|
||||
forEach(projectChangedEvents, (actualEvent, i) => {
|
||||
const expectedEvent = expectedEvents[i];
|
||||
assert.strictEqual(actualEvent.eventName, expectedEvent.eventName);
|
||||
assert.equal(actualEvent.eventName, expectedEvent.eventName);
|
||||
verifyFiles("openFiles", actualEvent.data.openFiles, expectedEvent.data.openFiles);
|
||||
});
|
||||
|
||||
|
|
|
@ -292,7 +292,7 @@ namespace ts.projectSystem {
|
|||
typeAcquisition: { enable: true, include: ["jquery"] }
|
||||
});
|
||||
|
||||
assert.isTrue(enqueueIsCalled, "expected enqueueIsCalled to be true");
|
||||
assert(enqueueIsCalled, "expected enqueueIsCalled to be true");
|
||||
installer.installAll(/*expectedCount*/ 1);
|
||||
|
||||
// auto is set in type acquisition - use it even if project contains only .ts files
|
||||
|
@ -598,7 +598,7 @@ namespace ts.projectSystem {
|
|||
installer.executePendingCommands();
|
||||
// expected all typings file to exist
|
||||
for (const f of typingFiles) {
|
||||
assert.isTrue(host.fileExists(f.path), `expected file ${f.path} to exist`);
|
||||
assert(host.fileExists(f.path), `expected file ${f.path} to exist`);
|
||||
}
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(projectService, { externalProjects: 1 });
|
||||
|
@ -934,8 +934,8 @@ namespace ts.projectSystem {
|
|||
|
||||
installer.installAll(/*expectedCount*/1);
|
||||
|
||||
assert.isTrue(host.fileExists(node.path), "typings for 'node' should be created");
|
||||
assert.isTrue(host.fileExists(commander.path), "typings for 'commander' should be created");
|
||||
assert(host.fileExists(node.path), "typings for 'node' should be created");
|
||||
assert(host.fileExists(commander.path), "typings for 'commander' should be created");
|
||||
|
||||
checkProjectActualFiles(service.inferredProjects[0], [file.path, node.path, commander.path]);
|
||||
});
|
||||
|
@ -1076,7 +1076,7 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(f1.path);
|
||||
|
||||
installer.checkPendingCommands(/*expectedCount*/ 0);
|
||||
assert.isTrue(messages.indexOf("Package name '; say ‘Hello from TypeScript!’ #' contains non URI safe characters") > 0, "should find package with invalid name");
|
||||
assert(messages.indexOf("Package name '; say ‘Hello from TypeScript!’ #' contains non URI safe characters") > 0, "should find package with invalid name");
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -1225,7 +1225,7 @@ namespace ts.projectSystem {
|
|||
|
||||
installer.installAll(/*expectedCount*/ 1);
|
||||
|
||||
assert.isTrue(seenTelemetryEvent);
|
||||
assert(seenTelemetryEvent);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(projectService, { inferredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.inferredProjects[0], [f1.path, commander.path]);
|
||||
|
@ -1276,10 +1276,10 @@ namespace ts.projectSystem {
|
|||
|
||||
installer.installAll(/*expectedCount*/ 1);
|
||||
|
||||
assert.isTrue(!!beginEvent);
|
||||
assert.isTrue(!!endEvent);
|
||||
assert.isTrue(beginEvent.eventId === endEvent.eventId);
|
||||
assert.isTrue(endEvent.installSuccess);
|
||||
assert(!!beginEvent);
|
||||
assert(!!endEvent);
|
||||
assert(beginEvent.eventId === endEvent.eventId);
|
||||
assert(endEvent.installSuccess);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(projectService, { inferredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.inferredProjects[0], [f1.path, commander.path]);
|
||||
|
@ -1322,9 +1322,9 @@ namespace ts.projectSystem {
|
|||
|
||||
installer.installAll(/*expectedCount*/ 1);
|
||||
|
||||
assert.isTrue(!!beginEvent);
|
||||
assert.isTrue(!!endEvent);
|
||||
assert.isTrue(beginEvent.eventId === endEvent.eventId);
|
||||
assert(!!beginEvent);
|
||||
assert(!!endEvent);
|
||||
assert(beginEvent.eventId === endEvent.eventId);
|
||||
assert.isFalse(endEvent.installSuccess);
|
||||
checkNumberOfProjects(projectService, { inferredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.inferredProjects[0], [f1.path]);
|
||||
|
|
|
@ -34,7 +34,7 @@ var p:Point=new Point();
|
|||
var q:Point=<Point>p;`;
|
||||
|
||||
const { lines } = server.LineIndex.linesFromText(testContent);
|
||||
assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
|
||||
assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
|
||||
|
||||
const lineIndex = new server.LineIndex();
|
||||
lineIndex.load(lines);
|
||||
|
@ -94,7 +94,7 @@ that was purple at the tips
|
|||
and grew 1cm per day`;
|
||||
|
||||
({ lines, lineMap } = server.LineIndex.linesFromText(testContent));
|
||||
assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
|
||||
assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
|
||||
|
||||
const lineIndex = new server.LineIndex();
|
||||
lineIndex.load(lines);
|
||||
|
@ -203,10 +203,10 @@ and grew 1cm per day`;
|
|||
const testFileName = "src/compiler/scanner.ts";
|
||||
testContent = Harness.IO.readFile(testFileName);
|
||||
const totalChars = testContent.length;
|
||||
assert.isTrue(totalChars > 0, "Failed to read test file.");
|
||||
assert(totalChars > 0, "Failed to read test file.");
|
||||
|
||||
({ lines, lineMap } = server.LineIndex.linesFromText(testContent));
|
||||
assert.isTrue(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
|
||||
assert(lines.length > 0, "Failed to initialize test text. Expected text to have at least one line");
|
||||
|
||||
lineIndex = new server.LineIndex();
|
||||
lineIndex.load(lines);
|
||||
|
|
|
@ -139,7 +139,7 @@ interface Array<T> {}`
|
|||
function checkMapKeys(caption: string, map: Map<any>, expectedKeys: ReadonlyArray<string>) {
|
||||
verifyMapSize(caption, map, expectedKeys);
|
||||
for (const name of expectedKeys) {
|
||||
assert.isTrue(map.has(name), `${caption} is expected to contain ${name}, actual keys: ${arrayFrom(map.keys())}`);
|
||||
assert(map.has(name), `${caption} is expected to contain ${name}, actual keys: ${arrayFrom(map.keys())}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -863,49 +863,55 @@
|
|||
</Item>
|
||||
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Fügen Sie "{0}" zur vorhandenen Importdeklaration aus "{1}" hinzu.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Add {0} to existing import declaration from {1}.]]></Val>
|
||||
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Add index signature for property '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Indexsignatur für die Eigenschaft "{0}" hinzufügen.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Add missing 'super()' call.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Add missing 'super()' call]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Fügen Sie den fehlenden super()-Aufruf hinzu.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Add missing 'super()' call.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Der nicht aufgelösten Variablen "this." hinzufügen.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__90009" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Das Hinzufügen einer "tsconfig.json"-Datei erleichtert die Organisation von Projekten, die sowohl TypeScript- als auch JavaScript-Dateien enthalten. Weitere Informationen finden Sie unter https://aka.ms/tsconfig.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -1535,10 +1541,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Call decorator expression.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Call decorator expression]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Rufen Sie den Decoratorausdruck auf.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Call decorator expression.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -1949,31 +1958,37 @@
|
|||
</Item>
|
||||
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Ändern Sie "{0}" in "{1}".]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Change {0} to {1}.]]></Val>
|
||||
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Change_extends_to_implements_90003" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Change 'extends' to 'implements'.]]></Val>
|
||||
<Val><![CDATA[Change 'extends' to 'implements']]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA["extends" in "implements" ändern]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Change 'extends' to 'implements'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Change spelling to '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Ändern Sie die Schreibweise in "{0}".]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -2345,37 +2360,49 @@
|
|||
</Item>
|
||||
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Declare method '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Declare method '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Methode "{0}" deklarieren.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Declare method '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Declare property '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Declare property '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Eigenschaft "{0}" deklarieren.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Declare property '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Declare static method '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Declare static method '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Statische Methode "{0}" deklarieren.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Declare static method '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Declare static property '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Declare static property '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Deklarieren Sie die statische Eigenschaft "{0}".]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Declare static property '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -2453,10 +2480,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Disable checking for this file.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Disable checking for this file]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Überprüfung für diese Datei deaktivieren.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Disable checking for this file.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -3722,28 +3752,37 @@
|
|||
</Item>
|
||||
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Ignore this error message.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Ignore this error message]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Diese Fehlermeldung ignorieren.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Ignore this error message.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Implement_inherited_abstract_class_90007" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Implement inherited abstract class.]]></Val>
|
||||
<Val><![CDATA[Implement inherited abstract class]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Geerbte abstrakte Klasse implementieren]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Implement inherited abstract class.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Implement interface '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Implement interface '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Schnittstelle "{0}" implementieren]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Implement interface '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -3758,10 +3797,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Import von "{0}" aus Modul "{1}".]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -3908,37 +3950,49 @@
|
|||
</Item>
|
||||
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Infer parameter types from usage.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Infer parameter types from usage]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Leiten Sie Parametertypen aus der Nutzung ab.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Infer parameter types from usage.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Leiten Sie den Typ von "{0}" aus der Nutzung ab.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Eigenschaft '{0}' im Konstruktor initialisieren.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Initialize static property '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Statische Eigenschaft '{0}' initialisieren.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -4469,10 +4523,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Legen Sie den super()-Aufruf als erste Anweisung im Konstruktor fest.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -5381,10 +5438,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Präfix "{0}" mit einem Unterstrich.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -5834,10 +5894,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Deklaration entfernen für: {0}]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -6257,10 +6320,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Als indizierten Zugriffstyp "{0}" neu schreiben.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -6372,12 +6438,9 @@
|
|||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[ECMAScript-Zielversion angeben: ES3 (Standard), ES5, ES2015, ES2016, ES2017 oder ESNEXT.]]></Val>
|
||||
</Tgt>
|
||||
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -7329,12 +7392,9 @@
|
|||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_90010" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Typ "{0}" kann nicht zu Typ "{1}" zugewiesen werden. Es sind zwei verschiedene Typen mit diesem Namen vorhanden, diese sind jedoch nicht verwandt.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
|
|
@ -856,49 +856,55 @@
|
|||
</Item>
|
||||
<Item ItemId=";Add_0_to_existing_import_declaration_from_1_90015" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}"]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Dodaj element „{0}” do istniejącej deklaracji importu z elementu „{1}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Add {0} to existing import declaration from {1}.]]></Val>
|
||||
<Val><![CDATA[Add '{0}' to existing import declaration from "{1}".]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Add_index_signature_for_property_0_90017" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Add index signature for property '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Dodaj sygnaturę indeksu dla właściwości „{0}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Add index signature for property '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Add_missing_super_call_90001" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Add missing 'super()' call.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Add missing 'super()' call]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Dodaj brakujące wywołanie „super()”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Add missing 'super()' call.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Add_this_to_unresolved_variable_90008" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Add 'this.' to unresolved variable]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Dodaj „this.” do nierozpoznanej zmiennej.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Add 'this.' to unresolved variable.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__90009" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Item ItemId=";Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Dodanie pliku tsconfig.json pomoże w organizowaniu projektów, które zawierają pliki TypeScript i JavaScript. Dowiedz się więcej: https://aka.ms/tsconfig.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -1528,10 +1534,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Call decorator expression.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Call decorator expression]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Wywołaj wyrażenie dekoratora.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Call decorator expression.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -1942,31 +1951,37 @@
|
|||
</Item>
|
||||
<Item ItemId=";Change_0_to_1_90014" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Change '{0}' to '{1}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Zmień element „{0}” na „{1}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Change {0} to {1}.]]></Val>
|
||||
<Val><![CDATA[Change '{0}' to '{1}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Change_extends_to_implements_90003" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Change 'extends' to 'implements'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Change 'extends' to 'implements']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Zmień atrybut „extends” na „implements”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Change 'extends' to 'implements'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Change_spelling_to_0_90022" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Change spelling to '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Zmiana pisowni na „{0}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Change spelling to '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -2338,37 +2353,49 @@
|
|||
</Item>
|
||||
<Item ItemId=";Declare_method_0_90023" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Declare method '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Declare method '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Zadeklaruj metodę „{0}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Declare method '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Declare_property_0_90016" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Declare property '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Declare property '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Zadeklaruj właściwość „{0}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Declare property '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Declare_static_method_0_90024" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Declare static method '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Declare static method '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Zadeklaruj metodę statyczną „{0}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Declare static method '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Declare_static_property_0_90027" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Declare static property '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Declare static property '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Zadeklaruj właściwość statyczną „{0}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Declare static property '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -2446,10 +2473,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Disable_checking_for_this_file_90018" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Disable checking for this file.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Disable checking for this file]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Wyłącz sprawdzanie dla tego pliku.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Disable checking for this file.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -3715,28 +3745,37 @@
|
|||
</Item>
|
||||
<Item ItemId=";Ignore_this_error_message_90019" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Ignore this error message.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Ignore this error message]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Ignoruj ten komunikat o błędzie.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Ignore this error message.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Implement_inherited_abstract_class_90007" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Implement inherited abstract class.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Implement inherited abstract class]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Implementuj odziedziczoną klasę abstrakcyjną.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Implement inherited abstract class.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Implement_interface_0_90006" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Implement interface '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Implement interface '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Implementuj interfejs „{0}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Implement interface '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -3751,10 +3790,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Import_0_from_module_1_90013" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Import '{0}' from module "{1}"]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Import „{0}” z modułu „{1}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Import '{0}' from module "{1}".]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -3901,37 +3943,49 @@
|
|||
</Item>
|
||||
<Item ItemId=";Infer_parameter_types_from_usage_95012" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Infer parameter types from usage.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Infer parameter types from usage]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Wywnioskuj typy parametrów na podstawie użycia.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Infer parameter types from usage.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Infer_type_of_0_from_usage_95011" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Infer type of '{0}' from usage]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Wywnioskuj typ elementu „{0}” na podstawie użycia.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Infer type of '{0}' from usage.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Initialize_property_0_in_the_constructor_90020" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Initialize property '{0}' in the constructor]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Zainicjuj właściwość „{0}” w konstruktorze.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Initialize property '{0}' in the constructor.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Initialize_static_property_0_90021" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Initialize static property '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Zainicjuj właściwość statyczną „{0}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Initialize static property '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -4462,10 +4516,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Make_super_call_the_first_statement_in_the_constructor_90002" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Make 'super()' call the first statement in the constructor]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Ustaw wywołanie „super()” jako pierwszą instrukcję w konstruktorze.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Make 'super()' call the first statement in the constructor.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -5374,10 +5431,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Prefix_0_with_an_underscore_90025" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Prefix '{0}' with an underscore]]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Prefiks „{0}” z podkreśleniem.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Prefix '{0}' with an underscore.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -5827,10 +5887,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Remove_declaration_for_Colon_0_90004" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Remove declaration for: '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Usuń deklarację dla: „{0}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Remove declaration for: '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -6250,10 +6313,13 @@
|
|||
</Item>
|
||||
<Item ItemId=";Rewrite_as_the_indexed_access_type_0_90026" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Rewrite as the indexed access type '{0}']]></Val>
|
||||
<Tgt Cat="Text" Stat="Update" Orig="New">
|
||||
<Val><![CDATA[Zapisz ponownie jako typ dostępu indeksowanego „{0}”.]]></Val>
|
||||
</Tgt>
|
||||
<Prev Cat="Text">
|
||||
<Val><![CDATA[Rewrite as the indexed access type '{0}'.]]></Val>
|
||||
</Prev>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -6365,12 +6431,9 @@
|
|||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Item ItemId=";Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_or_ESNEXT_6015" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Podaj wersję docelową języka ECMAScript: „ES3” (domyślna), „ES5”, „ES2015”, „ES2016”, „ES2017” lub „ESNEXT”.]]></Val>
|
||||
</Tgt>
|
||||
<Val><![CDATA[Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.]]></Val>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -6554,6 +6617,9 @@
|
|||
<Item ItemId=";Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_t_2717" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Subsequent property declarations must have the same type. Property '{0}' must be of type '{1}', but here has type '{2}'.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Kolejne deklaracje właściwości muszą być tego samego typu. Właściwość „{0}” musi być typu „{1}”, ale w tym miejscu jest typu „{2}”.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
@ -7322,12 +7388,9 @@
|
|||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_90010" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Item ItemId=";Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719" ItemType="0" PsrId="306" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Typu „{0}” nie można przypisać do typu „{1}”. Istnieją dwa różne typy o tej nazwie, lecz są ze sobą niezwiązane.]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
|
|
|
@ -205,35 +205,29 @@ namespace ts.server.typingsInstaller {
|
|||
this.knownCachesSet.set(cacheLocation, true);
|
||||
}
|
||||
|
||||
private filterTypings(typingsToInstall: string[]) {
|
||||
if (typingsToInstall.length === 0) {
|
||||
return typingsToInstall;
|
||||
}
|
||||
const result: string[] = [];
|
||||
for (const typing of typingsToInstall) {
|
||||
if (this.missingTypingsSet.get(typing) || this.packageNameToTypingLocation.get(typing)) {
|
||||
continue;
|
||||
private filterTypings(typingsToInstall: ReadonlyArray<string>): ReadonlyArray<string> {
|
||||
return typingsToInstall.filter(typing => {
|
||||
if (this.missingTypingsSet.get(typing)) {
|
||||
if (this.log.isEnabled()) this.log.writeLine(`'${typing}' is in missingTypingsSet - skipping...`);
|
||||
return false;
|
||||
}
|
||||
if (this.packageNameToTypingLocation.get(typing)) {
|
||||
if (this.log.isEnabled()) this.log.writeLine(`'${typing}' already has a typing - skipping...`);
|
||||
return false;
|
||||
}
|
||||
const validationResult = JsTyping.validatePackageName(typing);
|
||||
if (validationResult === JsTyping.PackageNameValidationResult.Ok) {
|
||||
if (this.typesRegistry.has(typing)) {
|
||||
result.push(typing);
|
||||
}
|
||||
else {
|
||||
if (this.log.isEnabled()) {
|
||||
this.log.writeLine(`Entry for package '${typing}' does not exist in local types registry - skipping...`);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (validationResult !== JsTyping.PackageNameValidationResult.Ok) {
|
||||
// add typing name to missing set so we won't process it again
|
||||
this.missingTypingsSet.set(typing, true);
|
||||
if (this.log.isEnabled()) {
|
||||
this.log.writeLine(JsTyping.renderPackageNameValidationFailure(validationResult, typing));
|
||||
}
|
||||
if (this.log.isEnabled()) this.log.writeLine(JsTyping.renderPackageNameValidationFailure(validationResult, typing));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
if (!this.typesRegistry.has(typing)) {
|
||||
if (this.log.isEnabled()) this.log.writeLine(`Entry for package '${typing}' does not exist in local types registry - skipping...`);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
protected ensurePackageDirectoryExists(directory: string) {
|
||||
|
|
|
@ -21,6 +21,7 @@ const enum Enum1 {
|
|||
N = E << 1,
|
||||
O = E >> B,
|
||||
P = E >> 1,
|
||||
PQ = E ** 2,
|
||||
Q = -D,
|
||||
R = C & 5,
|
||||
S = 5 & C,
|
||||
|
@ -128,6 +129,7 @@ function foo(x: Enum1) {
|
|||
case Enum1.N:
|
||||
case Enum1.O:
|
||||
case Enum1.P:
|
||||
case Enum1.PQ:
|
||||
case Enum1.Q:
|
||||
case Enum1.R:
|
||||
case Enum1.S:
|
||||
|
@ -200,6 +202,7 @@ function foo(x) {
|
|||
case 2 /* N */:
|
||||
case 0 /* O */:
|
||||
case 0 /* P */:
|
||||
case 1 /* PQ */:
|
||||
case -1 /* Q */:
|
||||
case 0 /* R */:
|
||||
case 0 /* S */:
|
||||
|
|
|
@ -71,273 +71,277 @@ const enum Enum1 {
|
|||
|
||||
P = E >> 1,
|
||||
>P : Symbol(Enum1.P, Decl(constEnums.ts, 20, 15))
|
||||
>E : Symbol(Enum1.E, Decl(constEnums.ts, 9, 14))
|
||||
|
||||
PQ = E ** 2,
|
||||
>PQ : Symbol(Enum1.PQ, Decl(constEnums.ts, 21, 15))
|
||||
>E : Symbol(Enum1.E, Decl(constEnums.ts, 9, 14))
|
||||
|
||||
Q = -D,
|
||||
>Q : Symbol(Enum1.Q, Decl(constEnums.ts, 21, 15))
|
||||
>Q : Symbol(Enum1.Q, Decl(constEnums.ts, 22, 16))
|
||||
>D : Symbol(Enum1.D, Decl(constEnums.ts, 8, 11))
|
||||
|
||||
R = C & 5,
|
||||
>R : Symbol(Enum1.R, Decl(constEnums.ts, 22, 11))
|
||||
>R : Symbol(Enum1.R, Decl(constEnums.ts, 23, 11))
|
||||
>C : Symbol(Enum1.C, Decl(constEnums.ts, 7, 6))
|
||||
|
||||
S = 5 & C,
|
||||
>S : Symbol(Enum1.S, Decl(constEnums.ts, 23, 14))
|
||||
>S : Symbol(Enum1.S, Decl(constEnums.ts, 24, 14))
|
||||
>C : Symbol(Enum1.C, Decl(constEnums.ts, 7, 6))
|
||||
|
||||
T = C | D,
|
||||
>T : Symbol(Enum1.T, Decl(constEnums.ts, 24, 14))
|
||||
>T : Symbol(Enum1.T, Decl(constEnums.ts, 25, 14))
|
||||
>C : Symbol(Enum1.C, Decl(constEnums.ts, 7, 6))
|
||||
>D : Symbol(Enum1.D, Decl(constEnums.ts, 8, 11))
|
||||
|
||||
U = C | 1,
|
||||
>U : Symbol(Enum1.U, Decl(constEnums.ts, 25, 14))
|
||||
>U : Symbol(Enum1.U, Decl(constEnums.ts, 26, 14))
|
||||
>C : Symbol(Enum1.C, Decl(constEnums.ts, 7, 6))
|
||||
|
||||
V = 10 | D,
|
||||
>V : Symbol(Enum1.V, Decl(constEnums.ts, 26, 14))
|
||||
>V : Symbol(Enum1.V, Decl(constEnums.ts, 27, 14))
|
||||
>D : Symbol(Enum1.D, Decl(constEnums.ts, 8, 11))
|
||||
|
||||
W = Enum1.V,
|
||||
>W : Symbol(Enum1.W, Decl(constEnums.ts, 27, 15))
|
||||
>Enum1.V : Symbol(Enum1.V, Decl(constEnums.ts, 26, 14))
|
||||
>W : Symbol(Enum1.W, Decl(constEnums.ts, 28, 15))
|
||||
>Enum1.V : Symbol(Enum1.V, Decl(constEnums.ts, 27, 14))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>V : Symbol(Enum1.V, Decl(constEnums.ts, 26, 14))
|
||||
>V : Symbol(Enum1.V, Decl(constEnums.ts, 27, 14))
|
||||
|
||||
// correct cases: reference to the enum member from different enum declaration
|
||||
W1 = A0,
|
||||
>W1 : Symbol(Enum1.W1, Decl(constEnums.ts, 28, 16))
|
||||
>W1 : Symbol(Enum1.W1, Decl(constEnums.ts, 29, 16))
|
||||
>A0 : Symbol(Enum1.A0, Decl(constEnums.ts, 0, 18))
|
||||
|
||||
W2 = Enum1.A0,
|
||||
>W2 : Symbol(Enum1.W2, Decl(constEnums.ts, 31, 12))
|
||||
>W2 : Symbol(Enum1.W2, Decl(constEnums.ts, 32, 12))
|
||||
>Enum1.A0 : Symbol(Enum1.A0, Decl(constEnums.ts, 0, 18))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>A0 : Symbol(Enum1.A0, Decl(constEnums.ts, 0, 18))
|
||||
|
||||
W3 = Enum1["A0"],
|
||||
>W3 : Symbol(Enum1.W3, Decl(constEnums.ts, 32, 18))
|
||||
>W3 : Symbol(Enum1.W3, Decl(constEnums.ts, 33, 18))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>"A0" : Symbol(Enum1.A0, Decl(constEnums.ts, 0, 18))
|
||||
|
||||
W4 = Enum1["W"],
|
||||
>W4 : Symbol(Enum1.W4, Decl(constEnums.ts, 33, 21))
|
||||
>W4 : Symbol(Enum1.W4, Decl(constEnums.ts, 34, 21))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>"W" : Symbol(Enum1.W, Decl(constEnums.ts, 27, 15))
|
||||
>"W" : Symbol(Enum1.W, Decl(constEnums.ts, 28, 15))
|
||||
}
|
||||
|
||||
|
||||
module A {
|
||||
>A : Symbol(A, Decl(constEnums.ts, 35, 1), Decl(constEnums.ts, 47, 1))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 36, 1), Decl(constEnums.ts, 48, 1))
|
||||
|
||||
export module B {
|
||||
>B : Symbol(B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>B : Symbol(B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
|
||||
export module C {
|
||||
>C : Symbol(C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>C : Symbol(C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
|
||||
export const enum E {
|
||||
>E : Symbol(E, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>E : Symbol(E, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
|
||||
V1 = 1,
|
||||
>V1 : Symbol(I.V1, Decl(constEnums.ts, 41, 33))
|
||||
>V1 : Symbol(I.V1, Decl(constEnums.ts, 42, 33))
|
||||
|
||||
V2 = A.B.C.E.V1 | 100
|
||||
>V2 : Symbol(I.V2, Decl(constEnums.ts, 42, 23))
|
||||
>A.B.C.E.V1 : Symbol(I.V1, Decl(constEnums.ts, 41, 33))
|
||||
>A.B.C.E : Symbol(E, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>A.B.C : Symbol(C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>A.B : Symbol(B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 35, 1), Decl(constEnums.ts, 47, 1))
|
||||
>B : Symbol(B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>C : Symbol(C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>E : Symbol(E, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>V1 : Symbol(I.V1, Decl(constEnums.ts, 41, 33))
|
||||
>V2 : Symbol(I.V2, Decl(constEnums.ts, 43, 23))
|
||||
>A.B.C.E.V1 : Symbol(I.V1, Decl(constEnums.ts, 42, 33))
|
||||
>A.B.C.E : Symbol(E, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
>A.B.C : Symbol(C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>A.B : Symbol(B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 36, 1), Decl(constEnums.ts, 48, 1))
|
||||
>B : Symbol(B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>C : Symbol(C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>E : Symbol(E, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
>V1 : Symbol(I.V1, Decl(constEnums.ts, 42, 33))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module A {
|
||||
>A : Symbol(A, Decl(constEnums.ts, 35, 1), Decl(constEnums.ts, 47, 1))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 36, 1), Decl(constEnums.ts, 48, 1))
|
||||
|
||||
export module B {
|
||||
>B : Symbol(B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>B : Symbol(B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
|
||||
export module C {
|
||||
>C : Symbol(C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>C : Symbol(C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
|
||||
export const enum E {
|
||||
>E : Symbol(E, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>E : Symbol(E, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
|
||||
V3 = A.B.C.E["V2"] & 200,
|
||||
>V3 : Symbol(I.V3, Decl(constEnums.ts, 52, 33))
|
||||
>A.B.C.E : Symbol(E, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>A.B.C : Symbol(C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>A.B : Symbol(B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 35, 1), Decl(constEnums.ts, 47, 1))
|
||||
>B : Symbol(B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>C : Symbol(C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>E : Symbol(E, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>"V2" : Symbol(I.V2, Decl(constEnums.ts, 42, 23))
|
||||
>V3 : Symbol(I.V3, Decl(constEnums.ts, 53, 33))
|
||||
>A.B.C.E : Symbol(E, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
>A.B.C : Symbol(C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>A.B : Symbol(B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 36, 1), Decl(constEnums.ts, 48, 1))
|
||||
>B : Symbol(B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>C : Symbol(C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>E : Symbol(E, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
>"V2" : Symbol(I.V2, Decl(constEnums.ts, 43, 23))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module A1 {
|
||||
>A1 : Symbol(A1, Decl(constEnums.ts, 57, 1))
|
||||
>A1 : Symbol(A1, Decl(constEnums.ts, 58, 1))
|
||||
|
||||
export module B {
|
||||
>B : Symbol(B, Decl(constEnums.ts, 59, 11))
|
||||
>B : Symbol(B, Decl(constEnums.ts, 60, 11))
|
||||
|
||||
export module C {
|
||||
>C : Symbol(C, Decl(constEnums.ts, 60, 21))
|
||||
>C : Symbol(C, Decl(constEnums.ts, 61, 21))
|
||||
|
||||
export const enum E {
|
||||
>E : Symbol(E, Decl(constEnums.ts, 61, 25))
|
||||
>E : Symbol(E, Decl(constEnums.ts, 62, 25))
|
||||
|
||||
V1 = 10,
|
||||
>V1 : Symbol(E.V1, Decl(constEnums.ts, 62, 33))
|
||||
>V1 : Symbol(E.V1, Decl(constEnums.ts, 63, 33))
|
||||
|
||||
V2 = 110,
|
||||
>V2 : Symbol(E.V2, Decl(constEnums.ts, 63, 24))
|
||||
>V2 : Symbol(E.V2, Decl(constEnums.ts, 64, 24))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module A2 {
|
||||
>A2 : Symbol(A2, Decl(constEnums.ts, 68, 1))
|
||||
>A2 : Symbol(A2, Decl(constEnums.ts, 69, 1))
|
||||
|
||||
export module B {
|
||||
>B : Symbol(B, Decl(constEnums.ts, 70, 11))
|
||||
>B : Symbol(B, Decl(constEnums.ts, 71, 11))
|
||||
|
||||
export module C {
|
||||
>C : Symbol(C, Decl(constEnums.ts, 71, 21), Decl(constEnums.ts, 77, 9))
|
||||
>C : Symbol(C, Decl(constEnums.ts, 72, 21), Decl(constEnums.ts, 78, 9))
|
||||
|
||||
export const enum E {
|
||||
>E : Symbol(E, Decl(constEnums.ts, 72, 25))
|
||||
>E : Symbol(E, Decl(constEnums.ts, 73, 25))
|
||||
|
||||
V1 = 10,
|
||||
>V1 : Symbol(E.V1, Decl(constEnums.ts, 73, 33))
|
||||
>V1 : Symbol(E.V1, Decl(constEnums.ts, 74, 33))
|
||||
|
||||
V2 = 110,
|
||||
>V2 : Symbol(E.V2, Decl(constEnums.ts, 74, 24))
|
||||
>V2 : Symbol(E.V2, Decl(constEnums.ts, 75, 24))
|
||||
}
|
||||
}
|
||||
// module C will be classified as value
|
||||
export module C {
|
||||
>C : Symbol(C, Decl(constEnums.ts, 71, 21), Decl(constEnums.ts, 77, 9))
|
||||
>C : Symbol(C, Decl(constEnums.ts, 72, 21), Decl(constEnums.ts, 78, 9))
|
||||
|
||||
var x = 1
|
||||
>x : Symbol(x, Decl(constEnums.ts, 80, 15))
|
||||
>x : Symbol(x, Decl(constEnums.ts, 81, 15))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
import I = A.B.C.E;
|
||||
>I : Symbol(I, Decl(constEnums.ts, 83, 1))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 35, 1), Decl(constEnums.ts, 47, 1))
|
||||
>B : Symbol(A.B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>C : Symbol(A.B.C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>E : Symbol(I, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>I : Symbol(I, Decl(constEnums.ts, 84, 1))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 36, 1), Decl(constEnums.ts, 48, 1))
|
||||
>B : Symbol(A.B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>C : Symbol(A.B.C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>E : Symbol(I, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
|
||||
import I1 = A1.B;
|
||||
>I1 : Symbol(I1, Decl(constEnums.ts, 85, 19))
|
||||
>A1 : Symbol(A1, Decl(constEnums.ts, 57, 1))
|
||||
>B : Symbol(I1, Decl(constEnums.ts, 59, 11))
|
||||
>I1 : Symbol(I1, Decl(constEnums.ts, 86, 19))
|
||||
>A1 : Symbol(A1, Decl(constEnums.ts, 58, 1))
|
||||
>B : Symbol(I1, Decl(constEnums.ts, 60, 11))
|
||||
|
||||
import I2 = A2.B;
|
||||
>I2 : Symbol(I2, Decl(constEnums.ts, 86, 17))
|
||||
>A2 : Symbol(A2, Decl(constEnums.ts, 68, 1))
|
||||
>B : Symbol(I2, Decl(constEnums.ts, 70, 11))
|
||||
>I2 : Symbol(I2, Decl(constEnums.ts, 87, 17))
|
||||
>A2 : Symbol(A2, Decl(constEnums.ts, 69, 1))
|
||||
>B : Symbol(I2, Decl(constEnums.ts, 71, 11))
|
||||
|
||||
function foo0(e: I): void {
|
||||
>foo0 : Symbol(foo0, Decl(constEnums.ts, 87, 17))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 89, 14))
|
||||
>I : Symbol(I, Decl(constEnums.ts, 83, 1))
|
||||
>foo0 : Symbol(foo0, Decl(constEnums.ts, 88, 17))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 90, 14))
|
||||
>I : Symbol(I, Decl(constEnums.ts, 84, 1))
|
||||
|
||||
if (e === I.V1) {
|
||||
>e : Symbol(e, Decl(constEnums.ts, 89, 14))
|
||||
>I.V1 : Symbol(I.V1, Decl(constEnums.ts, 41, 33))
|
||||
>I : Symbol(I, Decl(constEnums.ts, 83, 1))
|
||||
>V1 : Symbol(I.V1, Decl(constEnums.ts, 41, 33))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 90, 14))
|
||||
>I.V1 : Symbol(I.V1, Decl(constEnums.ts, 42, 33))
|
||||
>I : Symbol(I, Decl(constEnums.ts, 84, 1))
|
||||
>V1 : Symbol(I.V1, Decl(constEnums.ts, 42, 33))
|
||||
}
|
||||
else if (e === I.V2) {
|
||||
>e : Symbol(e, Decl(constEnums.ts, 89, 14))
|
||||
>I.V2 : Symbol(I.V2, Decl(constEnums.ts, 42, 23))
|
||||
>I : Symbol(I, Decl(constEnums.ts, 83, 1))
|
||||
>V2 : Symbol(I.V2, Decl(constEnums.ts, 42, 23))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 90, 14))
|
||||
>I.V2 : Symbol(I.V2, Decl(constEnums.ts, 43, 23))
|
||||
>I : Symbol(I, Decl(constEnums.ts, 84, 1))
|
||||
>V2 : Symbol(I.V2, Decl(constEnums.ts, 43, 23))
|
||||
}
|
||||
}
|
||||
|
||||
function foo1(e: I1.C.E): void {
|
||||
>foo1 : Symbol(foo1, Decl(constEnums.ts, 94, 1))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 96, 14))
|
||||
>I1 : Symbol(I1, Decl(constEnums.ts, 85, 19))
|
||||
>C : Symbol(I1.C, Decl(constEnums.ts, 60, 21))
|
||||
>E : Symbol(I1.C.E, Decl(constEnums.ts, 61, 25))
|
||||
>foo1 : Symbol(foo1, Decl(constEnums.ts, 95, 1))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 97, 14))
|
||||
>I1 : Symbol(I1, Decl(constEnums.ts, 86, 19))
|
||||
>C : Symbol(I1.C, Decl(constEnums.ts, 61, 21))
|
||||
>E : Symbol(I1.C.E, Decl(constEnums.ts, 62, 25))
|
||||
|
||||
if (e === I1.C.E.V1) {
|
||||
>e : Symbol(e, Decl(constEnums.ts, 96, 14))
|
||||
>I1.C.E.V1 : Symbol(I1.C.E.V1, Decl(constEnums.ts, 62, 33))
|
||||
>I1.C.E : Symbol(I1.C.E, Decl(constEnums.ts, 61, 25))
|
||||
>I1.C : Symbol(I1.C, Decl(constEnums.ts, 60, 21))
|
||||
>I1 : Symbol(I1, Decl(constEnums.ts, 85, 19))
|
||||
>C : Symbol(I1.C, Decl(constEnums.ts, 60, 21))
|
||||
>E : Symbol(I1.C.E, Decl(constEnums.ts, 61, 25))
|
||||
>V1 : Symbol(I1.C.E.V1, Decl(constEnums.ts, 62, 33))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 97, 14))
|
||||
>I1.C.E.V1 : Symbol(I1.C.E.V1, Decl(constEnums.ts, 63, 33))
|
||||
>I1.C.E : Symbol(I1.C.E, Decl(constEnums.ts, 62, 25))
|
||||
>I1.C : Symbol(I1.C, Decl(constEnums.ts, 61, 21))
|
||||
>I1 : Symbol(I1, Decl(constEnums.ts, 86, 19))
|
||||
>C : Symbol(I1.C, Decl(constEnums.ts, 61, 21))
|
||||
>E : Symbol(I1.C.E, Decl(constEnums.ts, 62, 25))
|
||||
>V1 : Symbol(I1.C.E.V1, Decl(constEnums.ts, 63, 33))
|
||||
}
|
||||
else if (e === I1.C.E.V2) {
|
||||
>e : Symbol(e, Decl(constEnums.ts, 96, 14))
|
||||
>I1.C.E.V2 : Symbol(I1.C.E.V2, Decl(constEnums.ts, 63, 24))
|
||||
>I1.C.E : Symbol(I1.C.E, Decl(constEnums.ts, 61, 25))
|
||||
>I1.C : Symbol(I1.C, Decl(constEnums.ts, 60, 21))
|
||||
>I1 : Symbol(I1, Decl(constEnums.ts, 85, 19))
|
||||
>C : Symbol(I1.C, Decl(constEnums.ts, 60, 21))
|
||||
>E : Symbol(I1.C.E, Decl(constEnums.ts, 61, 25))
|
||||
>V2 : Symbol(I1.C.E.V2, Decl(constEnums.ts, 63, 24))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 97, 14))
|
||||
>I1.C.E.V2 : Symbol(I1.C.E.V2, Decl(constEnums.ts, 64, 24))
|
||||
>I1.C.E : Symbol(I1.C.E, Decl(constEnums.ts, 62, 25))
|
||||
>I1.C : Symbol(I1.C, Decl(constEnums.ts, 61, 21))
|
||||
>I1 : Symbol(I1, Decl(constEnums.ts, 86, 19))
|
||||
>C : Symbol(I1.C, Decl(constEnums.ts, 61, 21))
|
||||
>E : Symbol(I1.C.E, Decl(constEnums.ts, 62, 25))
|
||||
>V2 : Symbol(I1.C.E.V2, Decl(constEnums.ts, 64, 24))
|
||||
}
|
||||
}
|
||||
|
||||
function foo2(e: I2.C.E): void {
|
||||
>foo2 : Symbol(foo2, Decl(constEnums.ts, 101, 1))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 103, 14))
|
||||
>I2 : Symbol(I2, Decl(constEnums.ts, 86, 17))
|
||||
>C : Symbol(I2.C, Decl(constEnums.ts, 71, 21), Decl(constEnums.ts, 77, 9))
|
||||
>E : Symbol(I2.C.E, Decl(constEnums.ts, 72, 25))
|
||||
>foo2 : Symbol(foo2, Decl(constEnums.ts, 102, 1))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 104, 14))
|
||||
>I2 : Symbol(I2, Decl(constEnums.ts, 87, 17))
|
||||
>C : Symbol(I2.C, Decl(constEnums.ts, 72, 21), Decl(constEnums.ts, 78, 9))
|
||||
>E : Symbol(I2.C.E, Decl(constEnums.ts, 73, 25))
|
||||
|
||||
if (e === I2.C.E.V1) {
|
||||
>e : Symbol(e, Decl(constEnums.ts, 103, 14))
|
||||
>I2.C.E.V1 : Symbol(I2.C.E.V1, Decl(constEnums.ts, 73, 33))
|
||||
>I2.C.E : Symbol(I2.C.E, Decl(constEnums.ts, 72, 25))
|
||||
>I2.C : Symbol(I2.C, Decl(constEnums.ts, 71, 21), Decl(constEnums.ts, 77, 9))
|
||||
>I2 : Symbol(I2, Decl(constEnums.ts, 86, 17))
|
||||
>C : Symbol(I2.C, Decl(constEnums.ts, 71, 21), Decl(constEnums.ts, 77, 9))
|
||||
>E : Symbol(I2.C.E, Decl(constEnums.ts, 72, 25))
|
||||
>V1 : Symbol(I2.C.E.V1, Decl(constEnums.ts, 73, 33))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 104, 14))
|
||||
>I2.C.E.V1 : Symbol(I2.C.E.V1, Decl(constEnums.ts, 74, 33))
|
||||
>I2.C.E : Symbol(I2.C.E, Decl(constEnums.ts, 73, 25))
|
||||
>I2.C : Symbol(I2.C, Decl(constEnums.ts, 72, 21), Decl(constEnums.ts, 78, 9))
|
||||
>I2 : Symbol(I2, Decl(constEnums.ts, 87, 17))
|
||||
>C : Symbol(I2.C, Decl(constEnums.ts, 72, 21), Decl(constEnums.ts, 78, 9))
|
||||
>E : Symbol(I2.C.E, Decl(constEnums.ts, 73, 25))
|
||||
>V1 : Symbol(I2.C.E.V1, Decl(constEnums.ts, 74, 33))
|
||||
}
|
||||
else if (e === I2.C.E.V2) {
|
||||
>e : Symbol(e, Decl(constEnums.ts, 103, 14))
|
||||
>I2.C.E.V2 : Symbol(I2.C.E.V2, Decl(constEnums.ts, 74, 24))
|
||||
>I2.C.E : Symbol(I2.C.E, Decl(constEnums.ts, 72, 25))
|
||||
>I2.C : Symbol(I2.C, Decl(constEnums.ts, 71, 21), Decl(constEnums.ts, 77, 9))
|
||||
>I2 : Symbol(I2, Decl(constEnums.ts, 86, 17))
|
||||
>C : Symbol(I2.C, Decl(constEnums.ts, 71, 21), Decl(constEnums.ts, 77, 9))
|
||||
>E : Symbol(I2.C.E, Decl(constEnums.ts, 72, 25))
|
||||
>V2 : Symbol(I2.C.E.V2, Decl(constEnums.ts, 74, 24))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 104, 14))
|
||||
>I2.C.E.V2 : Symbol(I2.C.E.V2, Decl(constEnums.ts, 75, 24))
|
||||
>I2.C.E : Symbol(I2.C.E, Decl(constEnums.ts, 73, 25))
|
||||
>I2.C : Symbol(I2.C, Decl(constEnums.ts, 72, 21), Decl(constEnums.ts, 78, 9))
|
||||
>I2 : Symbol(I2, Decl(constEnums.ts, 87, 17))
|
||||
>C : Symbol(I2.C, Decl(constEnums.ts, 72, 21), Decl(constEnums.ts, 78, 9))
|
||||
>E : Symbol(I2.C.E, Decl(constEnums.ts, 73, 25))
|
||||
>V2 : Symbol(I2.C.E.V2, Decl(constEnums.ts, 75, 24))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function foo(x: Enum1) {
|
||||
>foo : Symbol(foo, Decl(constEnums.ts, 108, 1))
|
||||
>x : Symbol(x, Decl(constEnums.ts, 111, 13))
|
||||
>foo : Symbol(foo, Decl(constEnums.ts, 109, 1))
|
||||
>x : Symbol(x, Decl(constEnums.ts, 112, 13))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
|
||||
switch (x) {
|
||||
>x : Symbol(x, Decl(constEnums.ts, 111, 13))
|
||||
>x : Symbol(x, Decl(constEnums.ts, 112, 13))
|
||||
|
||||
case Enum1.A:
|
||||
>Enum1.A : Symbol(Enum1.A, Decl(constEnums.ts, 4, 18))
|
||||
|
@ -419,106 +423,111 @@ function foo(x: Enum1) {
|
|||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>P : Symbol(Enum1.P, Decl(constEnums.ts, 20, 15))
|
||||
|
||||
case Enum1.Q:
|
||||
>Enum1.Q : Symbol(Enum1.Q, Decl(constEnums.ts, 21, 15))
|
||||
case Enum1.PQ:
|
||||
>Enum1.PQ : Symbol(Enum1.PQ, Decl(constEnums.ts, 21, 15))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>Q : Symbol(Enum1.Q, Decl(constEnums.ts, 21, 15))
|
||||
>PQ : Symbol(Enum1.PQ, Decl(constEnums.ts, 21, 15))
|
||||
|
||||
case Enum1.Q:
|
||||
>Enum1.Q : Symbol(Enum1.Q, Decl(constEnums.ts, 22, 16))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>Q : Symbol(Enum1.Q, Decl(constEnums.ts, 22, 16))
|
||||
|
||||
case Enum1.R:
|
||||
>Enum1.R : Symbol(Enum1.R, Decl(constEnums.ts, 22, 11))
|
||||
>Enum1.R : Symbol(Enum1.R, Decl(constEnums.ts, 23, 11))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>R : Symbol(Enum1.R, Decl(constEnums.ts, 22, 11))
|
||||
>R : Symbol(Enum1.R, Decl(constEnums.ts, 23, 11))
|
||||
|
||||
case Enum1.S:
|
||||
>Enum1.S : Symbol(Enum1.S, Decl(constEnums.ts, 23, 14))
|
||||
>Enum1.S : Symbol(Enum1.S, Decl(constEnums.ts, 24, 14))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>S : Symbol(Enum1.S, Decl(constEnums.ts, 23, 14))
|
||||
>S : Symbol(Enum1.S, Decl(constEnums.ts, 24, 14))
|
||||
|
||||
case Enum1["T"]:
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>"T" : Symbol(Enum1.T, Decl(constEnums.ts, 24, 14))
|
||||
>"T" : Symbol(Enum1.T, Decl(constEnums.ts, 25, 14))
|
||||
|
||||
case Enum1.U:
|
||||
>Enum1.U : Symbol(Enum1.U, Decl(constEnums.ts, 25, 14))
|
||||
>Enum1.U : Symbol(Enum1.U, Decl(constEnums.ts, 26, 14))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>U : Symbol(Enum1.U, Decl(constEnums.ts, 25, 14))
|
||||
>U : Symbol(Enum1.U, Decl(constEnums.ts, 26, 14))
|
||||
|
||||
case Enum1.V:
|
||||
>Enum1.V : Symbol(Enum1.V, Decl(constEnums.ts, 26, 14))
|
||||
>Enum1.V : Symbol(Enum1.V, Decl(constEnums.ts, 27, 14))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>V : Symbol(Enum1.V, Decl(constEnums.ts, 26, 14))
|
||||
>V : Symbol(Enum1.V, Decl(constEnums.ts, 27, 14))
|
||||
|
||||
case Enum1.W:
|
||||
>Enum1.W : Symbol(Enum1.W, Decl(constEnums.ts, 27, 15))
|
||||
>Enum1.W : Symbol(Enum1.W, Decl(constEnums.ts, 28, 15))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>W : Symbol(Enum1.W, Decl(constEnums.ts, 27, 15))
|
||||
>W : Symbol(Enum1.W, Decl(constEnums.ts, 28, 15))
|
||||
|
||||
case Enum1.W1:
|
||||
>Enum1.W1 : Symbol(Enum1.W1, Decl(constEnums.ts, 28, 16))
|
||||
>Enum1.W1 : Symbol(Enum1.W1, Decl(constEnums.ts, 29, 16))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>W1 : Symbol(Enum1.W1, Decl(constEnums.ts, 28, 16))
|
||||
>W1 : Symbol(Enum1.W1, Decl(constEnums.ts, 29, 16))
|
||||
|
||||
case Enum1.W2:
|
||||
>Enum1.W2 : Symbol(Enum1.W2, Decl(constEnums.ts, 31, 12))
|
||||
>Enum1.W2 : Symbol(Enum1.W2, Decl(constEnums.ts, 32, 12))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>W2 : Symbol(Enum1.W2, Decl(constEnums.ts, 31, 12))
|
||||
>W2 : Symbol(Enum1.W2, Decl(constEnums.ts, 32, 12))
|
||||
|
||||
case Enum1.W3:
|
||||
>Enum1.W3 : Symbol(Enum1.W3, Decl(constEnums.ts, 32, 18))
|
||||
>Enum1.W3 : Symbol(Enum1.W3, Decl(constEnums.ts, 33, 18))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>W3 : Symbol(Enum1.W3, Decl(constEnums.ts, 32, 18))
|
||||
>W3 : Symbol(Enum1.W3, Decl(constEnums.ts, 33, 18))
|
||||
|
||||
case Enum1.W4:
|
||||
>Enum1.W4 : Symbol(Enum1.W4, Decl(constEnums.ts, 33, 21))
|
||||
>Enum1.W4 : Symbol(Enum1.W4, Decl(constEnums.ts, 34, 21))
|
||||
>Enum1 : Symbol(Enum1, Decl(constEnums.ts, 0, 0), Decl(constEnums.ts, 2, 1))
|
||||
>W4 : Symbol(Enum1.W4, Decl(constEnums.ts, 33, 21))
|
||||
>W4 : Symbol(Enum1.W4, Decl(constEnums.ts, 34, 21))
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function bar(e: A.B.C.E): number {
|
||||
>bar : Symbol(bar, Decl(constEnums.ts, 142, 1))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 144, 13))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 35, 1), Decl(constEnums.ts, 47, 1))
|
||||
>B : Symbol(A.B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>C : Symbol(A.B.C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>E : Symbol(I, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>bar : Symbol(bar, Decl(constEnums.ts, 144, 1))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 146, 13))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 36, 1), Decl(constEnums.ts, 48, 1))
|
||||
>B : Symbol(A.B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>C : Symbol(A.B.C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>E : Symbol(I, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
|
||||
switch (e) {
|
||||
>e : Symbol(e, Decl(constEnums.ts, 144, 13))
|
||||
>e : Symbol(e, Decl(constEnums.ts, 146, 13))
|
||||
|
||||
case A.B.C.E.V1: return 1;
|
||||
>A.B.C.E.V1 : Symbol(I.V1, Decl(constEnums.ts, 41, 33))
|
||||
>A.B.C.E : Symbol(I, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>A.B.C : Symbol(A.B.C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>A.B : Symbol(A.B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 35, 1), Decl(constEnums.ts, 47, 1))
|
||||
>B : Symbol(A.B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>C : Symbol(A.B.C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>E : Symbol(I, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>V1 : Symbol(I.V1, Decl(constEnums.ts, 41, 33))
|
||||
>A.B.C.E.V1 : Symbol(I.V1, Decl(constEnums.ts, 42, 33))
|
||||
>A.B.C.E : Symbol(I, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
>A.B.C : Symbol(A.B.C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>A.B : Symbol(A.B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 36, 1), Decl(constEnums.ts, 48, 1))
|
||||
>B : Symbol(A.B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>C : Symbol(A.B.C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>E : Symbol(I, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
>V1 : Symbol(I.V1, Decl(constEnums.ts, 42, 33))
|
||||
|
||||
case A.B.C.E.V2: return 1;
|
||||
>A.B.C.E.V2 : Symbol(I.V2, Decl(constEnums.ts, 42, 23))
|
||||
>A.B.C.E : Symbol(I, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>A.B.C : Symbol(A.B.C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>A.B : Symbol(A.B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 35, 1), Decl(constEnums.ts, 47, 1))
|
||||
>B : Symbol(A.B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>C : Symbol(A.B.C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>E : Symbol(I, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>V2 : Symbol(I.V2, Decl(constEnums.ts, 42, 23))
|
||||
>A.B.C.E.V2 : Symbol(I.V2, Decl(constEnums.ts, 43, 23))
|
||||
>A.B.C.E : Symbol(I, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
>A.B.C : Symbol(A.B.C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>A.B : Symbol(A.B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 36, 1), Decl(constEnums.ts, 48, 1))
|
||||
>B : Symbol(A.B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>C : Symbol(A.B.C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>E : Symbol(I, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
>V2 : Symbol(I.V2, Decl(constEnums.ts, 43, 23))
|
||||
|
||||
case A.B.C.E.V3: return 1;
|
||||
>A.B.C.E.V3 : Symbol(I.V3, Decl(constEnums.ts, 52, 33))
|
||||
>A.B.C.E : Symbol(I, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>A.B.C : Symbol(A.B.C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>A.B : Symbol(A.B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 35, 1), Decl(constEnums.ts, 47, 1))
|
||||
>B : Symbol(A.B, Decl(constEnums.ts, 38, 10), Decl(constEnums.ts, 49, 10))
|
||||
>C : Symbol(A.B.C, Decl(constEnums.ts, 39, 21), Decl(constEnums.ts, 50, 21))
|
||||
>E : Symbol(I, Decl(constEnums.ts, 40, 25), Decl(constEnums.ts, 51, 25))
|
||||
>V3 : Symbol(I.V3, Decl(constEnums.ts, 52, 33))
|
||||
>A.B.C.E.V3 : Symbol(I.V3, Decl(constEnums.ts, 53, 33))
|
||||
>A.B.C.E : Symbol(I, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
>A.B.C : Symbol(A.B.C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>A.B : Symbol(A.B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>A : Symbol(A, Decl(constEnums.ts, 36, 1), Decl(constEnums.ts, 48, 1))
|
||||
>B : Symbol(A.B, Decl(constEnums.ts, 39, 10), Decl(constEnums.ts, 50, 10))
|
||||
>C : Symbol(A.B.C, Decl(constEnums.ts, 40, 21), Decl(constEnums.ts, 51, 21))
|
||||
>E : Symbol(I, Decl(constEnums.ts, 41, 25), Decl(constEnums.ts, 52, 25))
|
||||
>V3 : Symbol(I.V3, Decl(constEnums.ts, 53, 33))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -103,6 +103,12 @@ const enum Enum1 {
|
|||
>E : Enum1
|
||||
>1 : 1
|
||||
|
||||
PQ = E ** 2,
|
||||
>PQ : Enum1
|
||||
>E ** 2 : number
|
||||
>E : Enum1
|
||||
>2 : 2
|
||||
|
||||
Q = -D,
|
||||
>Q : Enum1
|
||||
>-D : number
|
||||
|
@ -478,6 +484,11 @@ function foo(x: Enum1) {
|
|||
>Enum1 : typeof Enum1
|
||||
>P : Enum1
|
||||
|
||||
case Enum1.PQ:
|
||||
>Enum1.PQ : Enum1
|
||||
>Enum1 : typeof Enum1
|
||||
>PQ : Enum1
|
||||
|
||||
case Enum1.Q:
|
||||
>Enum1.Q : Enum1
|
||||
>Enum1 : typeof Enum1
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -20,6 +20,7 @@ const enum Enum1 {
|
|||
N = E << 1,
|
||||
O = E >> B,
|
||||
P = E >> 1,
|
||||
PQ = E ** 2,
|
||||
Q = -D,
|
||||
R = C & 5,
|
||||
S = 5 & C,
|
||||
|
@ -127,6 +128,7 @@ function foo(x: Enum1) {
|
|||
case Enum1.N:
|
||||
case Enum1.O:
|
||||
case Enum1.P:
|
||||
case Enum1.PQ:
|
||||
case Enum1.Q:
|
||||
case Enum1.R:
|
||||
case Enum1.S:
|
||||
|
|
|
@ -7,5 +7,4 @@
|
|||
////
|
||||
////// #endregion matched|]
|
||||
|
||||
debugger;
|
||||
verify.outliningSpansInCurrentFile(test.ranges());
|
|
@ -12,11 +12,12 @@
|
|||
////[|foo;|]
|
||||
|
||||
// @Filename: /c.ts
|
||||
////bar;
|
||||
////[|bar;|]
|
||||
|
||||
goTo.file("/a/index.ts");
|
||||
|
||||
goTo.file("/b.ts");
|
||||
// Explicitly imports from "./a/index" and not just from "./a"
|
||||
verify.importFixAtPosition([
|
||||
`import { foo } from "./a/index";
|
||||
|
||||
|
@ -24,4 +25,8 @@ foo;`
|
|||
]);
|
||||
|
||||
goTo.file("/c.ts");
|
||||
// TODO: GH#20050 verify.not.codeFixAvailable();
|
||||
// Does not use a global import for node_modules
|
||||
verify.importFixAtPosition([
|
||||
`import { bar } from "./node_modules/x/index";
|
||||
|
||||
bar;`]);
|
||||
|
|
Loading…
Reference in a new issue