Merge branch 'master' into esau-squash

This commit is contained in:
Ryan Cavanaugh
2018-06-13 15:35:18 -07:00
118 changed files with 3823 additions and 2690 deletions
+2
View File
@@ -23,6 +23,8 @@ tests/services/browser/typescriptServices.js
src/harness/*.js
src/compiler/diagnosticInformationMap.generated.ts
src/compiler/diagnosticMessages.generated.json
src/parser/diagnosticInformationMap.generated.ts
src/parser/diagnosticMessages.generated.json
rwc-report.html
*.swp
build.json
+2 -2
View File
@@ -60,7 +60,7 @@ function checkForUniqueCodes(diagnosticTable: InputDiagnosticMessageTable) {
function buildInfoFileOutput(messageTable: InputDiagnosticMessageTable, inputFilePathRel: string, thisFilePathRel: string): string {
let result =
"// <auto-generated />\r\n" +
"// generated from '" + inputFilePathRel + "' by '" + thisFilePathRel + "'\r\n" +
"// generated from '" + inputFilePathRel + "' by '" + thisFilePathRel.replace(/\\/g, '/') + "'\r\n" +
"/* @internal */\r\n" +
"namespace ts {\r\n" +
" function diag(code: number, category: DiagnosticCategory, key: string, message: string, reportsUnnecessary?: {}): DiagnosticMessage {\r\n" +
@@ -119,4 +119,4 @@ function convertPropertyName(origName: string): string {
return result;
}
main();
main();
+2 -1
View File
@@ -2514,11 +2514,12 @@ namespace ts {
return true;
}
const node = symbol.valueDeclaration;
const init = !node ? undefined :
let init = !node ? undefined :
isVariableDeclaration(node) ? node.initializer :
isBinaryExpression(node) ? node.right :
isPropertyAccessExpression(node) && isBinaryExpression(node.parent) ? node.parent.right :
undefined;
init = init && getRightMostAssignedExpression(init);
if (init) {
const isPrototypeAssignment = isPrototypeAccess(isVariableDeclaration(node) ? node.name : isBinaryExpression(node) ? node.left : node);
return !!getJavascriptInitializer(isBinaryExpression(init) && init.operatorToken.kind === SyntaxKind.BarBarToken ? init.right : init, isPrototypeAssignment);
+139 -78
View File
@@ -4091,7 +4091,14 @@ namespace ts {
}
else {
const contextFile = getSourceFileOfNode(getOriginalNode(context!.enclosingDeclaration))!;
return `"${file.moduleName || moduleSpecifiers.getModuleSpecifier(compilerOptions, contextFile, contextFile.path, file.path, context!.tracker.moduleResolverHost!)}"`;
return `"${file.moduleName || moduleSpecifiers.getModuleSpecifiers(
symbol,
compilerOptions,
contextFile,
context!.tracker.moduleResolverHost!,
context!.tracker.moduleResolverHost!.getSourceFiles!(),
{ importModuleSpecifierPreference: "non-relative" }
)[0]}"`;
}
}
const declaration = symbol.declarations[0];
@@ -4868,7 +4875,10 @@ namespace ts {
// binding pattern [x, s = ""]. Because the contextual type is a tuple type, the resulting type of [1, "one"] is the
// tuple type [number, string]. Thus, the type inferred for 'x' is number and the type inferred for 's' is string.
function getWidenedTypeForVariableLikeDeclaration(declaration: ParameterDeclaration | PropertyDeclaration | PropertySignature | VariableDeclaration | BindingElement, reportErrors?: boolean): Type {
let type = getTypeForVariableLikeDeclaration(declaration, /*includeOptionality*/ true);
return widenTypeForVariableLikeDeclaration(getTypeForVariableLikeDeclaration(declaration, /*includeOptionality*/ true), declaration, reportErrors);
}
function widenTypeForVariableLikeDeclaration(type: Type | undefined, declaration: any, reportErrors?: boolean) {
if (type) {
if (reportErrors) {
reportErrorsFromWidening(declaration, type);
@@ -4931,59 +4941,48 @@ namespace ts {
if (declaration.kind === SyntaxKind.ExportAssignment) {
return links.type = checkExpression((<ExportAssignment>declaration).expression);
}
if (isInJavaScriptFile(declaration) && isJSDocPropertyLikeTag(declaration) && declaration.typeExpression) {
return links.type = getTypeFromTypeNode(declaration.typeExpression.type);
}
// Handle variable, parameter or property
if (!pushTypeResolution(symbol, TypeSystemPropertyName.Type)) {
return errorType;
}
let type: Type;
// Handle certain special assignment kinds, which happen to union across multiple declarations:
// * module.exports = expr
// * exports.p = expr
// * this.p = expr
// * className.prototype.method = expr
if (declaration.kind === SyntaxKind.BinaryExpression ||
declaration.kind === SyntaxKind.PropertyAccessExpression && declaration.parent.kind === SyntaxKind.BinaryExpression) {
type = getWidenedTypeFromJSSpecialPropertyDeclarations(symbol);
}
else if (isJSDocPropertyLikeTag(declaration)
|| isPropertyAccessExpression(declaration)
|| isIdentifier(declaration)
|| isClassDeclaration(declaration)
|| isFunctionDeclaration(declaration)
|| (isMethodDeclaration(declaration) && !isObjectLiteralMethod(declaration))
|| isMethodSignature(declaration)) {
// Symbol is property of some kind that is merged with something - should use `getTypeOfFuncClassEnumModule` and not `getTypeOfVariableOrParameterOrProperty`
if (symbol.flags & (SymbolFlags.Function | SymbolFlags.Method | SymbolFlags.Class | SymbolFlags.Enum | SymbolFlags.ValueModule)) {
return getTypeOfFuncClassEnumModule(symbol);
let type = getJSSpecialType(symbol, declaration);
if (!type) {
if (isJSDocPropertyLikeTag(declaration)
|| isPropertyAccessExpression(declaration)
|| isIdentifier(declaration)
|| isClassDeclaration(declaration)
|| isFunctionDeclaration(declaration)
|| (isMethodDeclaration(declaration) && !isObjectLiteralMethod(declaration))
|| isMethodSignature(declaration)) {
// Symbol is property of some kind that is merged with something - should use `getTypeOfFuncClassEnumModule` and not `getTypeOfVariableOrParameterOrProperty`
if (symbol.flags & (SymbolFlags.Function | SymbolFlags.Method | SymbolFlags.Class | SymbolFlags.Enum | SymbolFlags.ValueModule)) {
return getTypeOfFuncClassEnumModule(symbol);
}
type = tryGetTypeFromEffectiveTypeNode(declaration) || anyType;
}
else if (isPropertyAssignment(declaration)) {
type = tryGetTypeFromEffectiveTypeNode(declaration) || checkPropertyAssignment(declaration);
}
else if (isJsxAttribute(declaration)) {
type = tryGetTypeFromEffectiveTypeNode(declaration) || checkJsxAttribute(declaration);
}
else if (isShorthandPropertyAssignment(declaration)) {
type = tryGetTypeFromEffectiveTypeNode(declaration) || checkExpressionForMutableLocation(declaration.name, CheckMode.Normal);
}
else if (isObjectLiteralMethod(declaration)) {
type = tryGetTypeFromEffectiveTypeNode(declaration) || checkObjectLiteralMethod(declaration, CheckMode.Normal);
}
else if (isParameter(declaration)
|| isPropertyDeclaration(declaration)
|| isPropertySignature(declaration)
|| isVariableDeclaration(declaration)
|| isBindingElement(declaration)) {
type = getWidenedTypeForVariableLikeDeclaration(declaration, /*includeOptionality*/ true);
}
else {
return Debug.fail("Unhandled declaration kind! " + Debug.showSyntaxKind(declaration) + " for " + Debug.showSymbol(symbol));
}
type = tryGetTypeFromEffectiveTypeNode(declaration) || anyType;
}
else if (isPropertyAssignment(declaration)) {
type = tryGetTypeFromEffectiveTypeNode(declaration) || checkPropertyAssignment(declaration);
}
else if (isJsxAttribute(declaration)) {
type = tryGetTypeFromEffectiveTypeNode(declaration) || checkJsxAttribute(declaration);
}
else if (isShorthandPropertyAssignment(declaration)) {
type = tryGetTypeFromEffectiveTypeNode(declaration) || checkExpressionForMutableLocation(declaration.name, CheckMode.Normal);
}
else if (isObjectLiteralMethod(declaration)) {
type = tryGetTypeFromEffectiveTypeNode(declaration) || checkObjectLiteralMethod(declaration, CheckMode.Normal);
}
else if (isParameter(declaration)
|| isPropertyDeclaration(declaration)
|| isPropertySignature(declaration)
|| isVariableDeclaration(declaration)
|| isBindingElement(declaration)) {
type = getWidenedTypeForVariableLikeDeclaration(declaration, /*reportErrors*/ true);
}
else {
return Debug.fail("Unhandled declaration kind! " + Debug.showSyntaxKind(declaration) + " for " + Debug.showSymbol(symbol));
}
if (!popTypeResolution()) {
@@ -4994,6 +4993,56 @@ namespace ts {
return links.type;
}
function getJSSpecialType(symbol: Symbol, decl: Declaration): Type | undefined {
if (!isInJavaScriptFile(decl)) {
return undefined;
}
else if (isJSDocPropertyLikeTag(decl) && decl.typeExpression) {
return getTypeFromTypeNode(decl.typeExpression.type);
}
// Handle certain special assignment kinds, which happen to union across multiple declarations:
// * module.exports = expr
// * exports.p = expr
// * this.p = expr
// * className.prototype.method = expr
else if (isBinaryExpression(decl) ||
isPropertyAccessExpression(decl) && isBinaryExpression(decl.parent)) {
return getJSInitializerType(decl, symbol, getAssignedJavascriptInitializer(isBinaryExpression(decl) ? decl.left : decl)) ||
getWidenedTypeFromJSSpecialPropertyDeclarations(symbol);
}
else if (isParameter(decl)
|| isPropertyDeclaration(decl)
|| isPropertySignature(decl)
|| isVariableDeclaration(decl)
|| isBindingElement(decl)) {
// Use type from type annotation if one is present
const isOptional = isParameter(decl) && isJSDocOptionalParameter(decl) ||
!isBindingElement(decl) && !isVariableDeclaration(decl) && !!decl.questionToken;
const declaredType = tryGetTypeFromEffectiveTypeNode(decl);
return declaredType && addOptionality(declaredType, isOptional) ||
getJSInitializerType(decl, symbol, getDeclaredJavascriptInitializer(decl)) ||
getWidenedTypeForVariableLikeDeclaration(decl, /*includeOptionality*/ true);
}
}
function getJSInitializerType(decl: Node, symbol: Symbol, init: Expression | undefined): Type | undefined {
if (init && isInJavaScriptFile(init) && isObjectLiteralExpression(init)) {
const exports = createSymbolTable();
while (isBinaryExpression(decl) || isPropertyAccessExpression(decl)) {
const s = getSymbolOfNode(decl);
if (s && hasEntries(s.exports)) {
mergeSymbolTable(exports, s.exports);
}
decl = isBinaryExpression(decl) ? decl.parent : decl.parent.parent;
}
const s = getSymbolOfNode(decl);
if (s && hasEntries(s.exports)) {
mergeSymbolTable(exports, s.exports);
}
return createAnonymousType(symbol, exports, emptyArray, emptyArray, jsObjectLiteralIndexInfo, undefined);
}
}
function getAnnotatedAccessorType(accessor: AccessorDeclaration | undefined): Type | undefined {
if (accessor) {
if (accessor.kind === SyntaxKind.GetAccessor) {
@@ -12181,14 +12230,6 @@ namespace ts {
// widen accessor based properties here.
return prop;
}
if (prop.flags & SymbolFlags.JSContainer) {
const node = prop.declarations && first(prop.declarations);
const init = getAssignedJavascriptInitializer(node);
if (init && init.kind !== SyntaxKind.ObjectLiteralExpression) {
// for JS special declarations, the only kind of initializer that will widen is object literals
return prop;
}
}
const original = getTypeOfSymbol(prop);
const propContext = context && createWideningContext(context, prop.escapedName, /*siblings*/ undefined);
const widened = getWidenedTypeWithContext(original, propContext);
@@ -14849,6 +14890,10 @@ namespace ts {
return getTypeFromTypeNode(jsDocFunctionType.parameters[0].type!);
}
}
const thisTag = getJSDocThisTag(node);
if (thisTag && thisTag.typeExpression) {
return getTypeFromTypeNode(thisTag.typeExpression);
}
}
function isInConstructorArgumentInitializer(node: Node, constructorDecl: Node): boolean {
@@ -15996,19 +16041,6 @@ namespace ts {
let patternWithComputedProperties = false;
let hasComputedStringProperty = false;
let hasComputedNumberProperty = false;
if (isInJSFile) {
const decl = getDeclarationOfJSInitializer(node);
if (decl) {
// a JS object literal whose declaration's symbol has exports is a JS namespace
const symbol = getSymbolOfNode(decl);
if (symbol && hasEntries(symbol.exports)) {
propertiesTable = symbol.exports;
symbol.exports.forEach(s => propertiesArray.push(getMergedSymbol(s)));
return createObjectLiteralType();
}
}
}
propertiesTable = createSymbolTable();
let offset = 0;
@@ -20440,9 +20472,15 @@ namespace ts {
getUnionType([removeDefinitelyFalsyTypes(leftType), rightType], UnionReduction.Subtype) :
leftType;
case SyntaxKind.EqualsToken:
checkSpecialAssignment(left, right);
checkAssignmentOperator(rightType);
return getRegularTypeOfObjectLiteral(rightType);
const special = getSpecialPropertyAssignmentKind(left.parent as BinaryExpression);
checkSpecialAssignment(special, right);
if (isJSSpecialPropertyAssignment(special)) {
return leftType;
}
else {
checkAssignmentOperator(rightType);
return getRegularTypeOfObjectLiteral(rightType);
}
case SyntaxKind.CommaToken:
if (!compilerOptions.allowUnreachableCode && isSideEffectFree(left) && !isEvalNode(right)) {
error(left, Diagnostics.Left_side_of_comma_operator_is_unused_and_has_no_side_effects);
@@ -20453,8 +20491,7 @@ namespace ts {
return Debug.fail();
}
function checkSpecialAssignment(left: Node, right: Expression) {
const special = getSpecialPropertyAssignmentKind(left.parent as BinaryExpression);
function checkSpecialAssignment(special: SpecialPropertyAssignmentKind, right: Expression) {
if (special === SpecialPropertyAssignmentKind.ModuleExports) {
const rightType = checkExpression(right, checkMode);
for (const prop of getPropertiesOfObjectType(rightType)) {
@@ -20513,6 +20550,7 @@ namespace ts {
// requires VarExpr to be classified as a reference
// A compound assignment furthermore requires VarExpr to be classified as a reference (section 4.1)
// and the type of the non-compound operation to be assignable to the type of VarExpr.
if (checkReferenceExpression(left, Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access)
&& (!isIdentifier(left) || unescapeLeadingUnderscores(left.escapedText) !== "exports")) {
// to avoid cascading errors check assignability only if 'isReference' check succeeded and no errors were reported
@@ -20521,6 +20559,23 @@ namespace ts {
}
}
function isJSSpecialPropertyAssignment(special: SpecialPropertyAssignmentKind) {
switch (special) {
case SpecialPropertyAssignmentKind.ExportsProperty:
case SpecialPropertyAssignmentKind.ModuleExports:
case SpecialPropertyAssignmentKind.Property:
case SpecialPropertyAssignmentKind.Prototype:
case SpecialPropertyAssignmentKind.PrototypeProperty:
case SpecialPropertyAssignmentKind.ThisProperty:
const symbol = getSymbolOfNode(left);
const init = getAssignedJavascriptInitializer(right);
return init && isObjectLiteralExpression(init) &&
symbol && hasEntries(symbol.exports);
default:
return false;
}
}
function reportOperatorError() {
error(errorNode || operatorToken, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2, tokenToString(operatorToken.kind), typeToString(leftType), typeToString(rightType));
}
@@ -23297,9 +23352,15 @@ namespace ts {
// Node is the primary declaration of the symbol, just validate the initializer
// Don't validate for-in initializer as it is already an error
const initializer = getEffectiveInitializer(node);
if (initializer && node.parent.parent.kind !== SyntaxKind.ForInStatement) {
checkTypeAssignableTo(checkExpressionCached(initializer), type, node, /*headMessage*/ undefined);
checkParameterInitializer(node);
if (initializer) {
const isJSObjectLiteralInitializer = isInJavaScriptFile(node) &&
isObjectLiteralExpression(initializer) &&
(initializer.properties.length === 0 || isPrototypeAccess(node.name)) &&
hasEntries(symbol.exports);
if (!isJSObjectLiteralInitializer && node.parent.parent.kind !== SyntaxKind.ForInStatement) {
checkTypeAssignableTo(checkExpressionCached(initializer), type, node, /*headMessage*/ undefined);
checkParameterInitializer(node);
}
}
}
else {
-2
View File
@@ -475,7 +475,6 @@ namespace ts {
{
name: "sourceRoot",
type: "string",
isFilePath: true,
paramType: Diagnostics.LOCATION,
category: Diagnostics.Source_Map_Options,
description: Diagnostics.Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations,
@@ -483,7 +482,6 @@ namespace ts {
{
name: "mapRoot",
type: "string",
isFilePath: true,
paramType: Diagnostics.LOCATION,
category: Diagnostics.Source_Map_Options,
description: Diagnostics.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations,
+52 -7
View File
@@ -15,17 +15,20 @@ namespace ts.moduleSpecifiers {
// For each symlink/original for a module, returns a list of ways to import that file.
export function getModuleSpecifiers(
moduleSymbol: Symbol,
program: Program,
compilerOptions: CompilerOptions,
importingSourceFile: SourceFile,
host: ModuleSpecifierResolutionHost,
files: ReadonlyArray<SourceFile>,
preferences: ModuleSpecifierPreferences,
): ReadonlyArray<ReadonlyArray<string>> {
const ambient = tryGetModuleNameFromAmbientModule(moduleSymbol);
if (ambient) return [[ambient]];
const compilerOptions = program.getCompilerOptions();
const info = getInfo(compilerOptions, importingSourceFile, importingSourceFile.fileName, host);
const modulePaths = getAllModulePaths(program, getSourceFileOfNode(moduleSymbol.valueDeclaration));
const info = getInfo(compilerOptions, importingSourceFile, importingSourceFile.path, host);
if (!files) {
return Debug.fail("Files list must be present to resolve symlinks in specifier resolution");
}
const modulePaths = getAllModulePaths(files, getSourceFileOfNode(moduleSymbol.valueDeclaration), info.getCanonicalFileName, host);
const global = mapDefined(modulePaths, moduleFileName => getGlobalModuleSpecifier(moduleFileName, info, host, compilerOptions));
return global.length ? global.map(g => [g]) : modulePaths.map(moduleFileName =>
@@ -130,15 +133,57 @@ namespace ts.moduleSpecifiers {
return firstDefined(imports, ({ text }) => pathIsRelative(text) ? fileExtensionIs(text, Extension.Js) : undefined) || false;
}
function discoverProbableSymlinks(files: ReadonlyArray<SourceFile>) {
const symlinks = mapDefined(files, sf =>
sf.resolvedModules && firstDefinedIterator(sf.resolvedModules.values(), res =>
res && res.originalPath && res.resolvedFileName !== res.originalPath ? [res.resolvedFileName, res.originalPath] : undefined));
const result = createMap<string>();
if (symlinks) {
for (const [resolvedPath, originalPath] of symlinks) {
const resolvedParts = getPathComponents(resolvedPath);
const originalParts = getPathComponents(originalPath);
while (resolvedParts[resolvedParts.length - 1] === originalParts[originalParts.length - 1]) {
resolvedParts.pop();
originalParts.pop();
}
result.set(getPathFromPathComponents(originalParts), getPathFromPathComponents(resolvedParts));
}
}
return result;
}
function getAllModulePathsUsingIndirectSymlinks(files: ReadonlyArray<SourceFile>, target: string, getCanonicalFileName: (file: string) => string, host: ModuleSpecifierResolutionHost) {
const links = discoverProbableSymlinks(files);
const paths = arrayFrom(links.keys());
let options: string[] | undefined;
for (const path of paths) {
const resolved = links.get(path)!;
if (startsWith(target, resolved + "/")) {
const relative = getRelativePathFromDirectory(resolved, target, getCanonicalFileName);
const option = resolvePath(path, relative);
if (!host.fileExists || host.fileExists(option)) {
if (!options) options = [];
options.push(option);
}
}
}
const resolvedtarget = host.getCurrentDirectory ? resolvePath(host.getCurrentDirectory(), target) : target;
if (options) {
options.push(resolvedtarget); // Since these are speculative, we also include the original resolved name as a possibility
return options;
}
return [resolvedtarget];
}
/**
* Looks for a existing imports that use symlinks to this module.
* Only if no symlink is available, the real path will be used.
*/
function getAllModulePaths(program: Program, { fileName }: SourceFile): ReadonlyArray<string> {
const symlinks = mapDefined(program.getSourceFiles(), sf =>
function getAllModulePaths(files: ReadonlyArray<SourceFile>, { fileName }: SourceFile, getCanonicalFileName: (file: string) => string, host: ModuleSpecifierResolutionHost): ReadonlyArray<string> {
const symlinks = mapDefined(files, sf =>
sf.resolvedModules && firstDefinedIterator(sf.resolvedModules.values(), res =>
res && res.resolvedFileName === fileName ? res.originalPath : undefined));
return symlinks.length === 0 ? [fileName] : symlinks;
return symlinks.length === 0 ? getAllModulePathsUsingIndirectSymlinks(files, fileName, getCanonicalFileName, host) : symlinks;
}
function getRelativePathNParents(relativePath: string): number {
+14
View File
@@ -491,6 +491,8 @@ namespace ts {
case SyntaxKind.JSDocCallbackTag:
return visitNode(cbNode, (node as JSDocCallbackTag).fullName) ||
visitNode(cbNode, (node as JSDocCallbackTag).typeExpression);
case SyntaxKind.JSDocThisTag:
return visitNode(cbNode, (node as JSDocThisTag).typeExpression);
case SyntaxKind.JSDocSignature:
return visitNodes(cbNode, cbNodes, node.decorators) ||
visitNodes(cbNode, cbNodes, node.modifiers) ||
@@ -6497,6 +6499,9 @@ namespace ts {
case "constructor":
tag = parseClassTag(atToken, tagName);
break;
case "this":
tag = parseThisTag(atToken, tagName);
break;
case "arg":
case "argument":
case "param":
@@ -6768,6 +6773,15 @@ namespace ts {
return finishNode(tag);
}
function parseThisTag(atToken: AtToken, tagName: Identifier): JSDocThisTag {
const tag = <JSDocThisTag>createNode(SyntaxKind.JSDocThisTag, atToken.pos);
tag.atToken = atToken;
tag.tagName = tagName;
tag.typeExpression = parseJSDocTypeExpression(/*mayOmitBraces*/ true);
skipWhitespace();
return finishNode(tag);
}
function parseTypedefTag(atToken: AtToken, tagName: Identifier, indent: number): JSDocTypedefTag {
const typeExpression = tryParseTypeExpression();
skipWhitespace();
+2 -1
View File
@@ -616,7 +616,7 @@ namespace ts {
const filesByNameIgnoreCase = host.useCaseSensitiveFileNames() ? createMap<SourceFile>() : undefined;
// A parallel array to projectReferences storing the results of reading in the referenced tsconfig files
const resolvedProjectReferences: (ResolvedProjectReference | undefined)[] | undefined = projectReferences ? [] : undefined;
let resolvedProjectReferences: (ResolvedProjectReference | undefined)[] | undefined = projectReferences ? [] : undefined;
const projectReferenceRedirects: Map<string> = createMap();
const shouldCreateNewSourceFile = shouldProgramCreateNewSourceFiles(oldProgram, options);
@@ -1190,6 +1190,7 @@ namespace ts {
fileProcessingDiagnostics.reattachFileDiagnostics(modifiedFile.newFile);
}
resolvedTypeReferenceDirectives = oldProgram.getResolvedTypeReferenceDirectives();
resolvedProjectReferences = oldProgram.getProjectReferences();
sourceFileToPackageName = oldProgram.sourceFileToPackageName;
redirectTargetsSet = oldProgram.redirectTargetsSet;
+7
View File
@@ -371,6 +371,7 @@ namespace ts {
JSDocCallbackTag,
JSDocParameterTag,
JSDocReturnTag,
JSDocThisTag,
JSDocTypeTag,
JSDocTemplateTag,
JSDocTypedefTag,
@@ -2323,6 +2324,11 @@ namespace ts {
kind: SyntaxKind.JSDocClassTag;
}
export interface JSDocThisTag extends JSDocTag {
kind: SyntaxKind.JSDocThisTag;
typeExpression?: JSDocTypeExpression;
}
export interface JSDocTemplateTag extends JSDocTag {
kind: SyntaxKind.JSDocTemplateTag;
typeParameters: NodeArray<TypeParameterDeclaration>;
@@ -5255,6 +5261,7 @@ namespace ts {
useCaseSensitiveFileNames?(): boolean;
fileExists?(path: string): boolean;
readFile?(path: string): string | undefined;
getSourceFiles?(): ReadonlyArray<SourceFile>; // Used for cached resolutions to find symlinks without traversing the fs (again)
}
/** @deprecated See comment on SymbolWriter */
+17
View File
@@ -1757,6 +1757,12 @@ namespace ts {
return node.initializer;
}
/** Get the declaration initializer when it is container-like (See getJavascriptInitializer). */
export function getDeclaredJavascriptInitializer(node: HasExpressionInitializer) {
const init = getEffectiveInitializer(node);
return init && getJavascriptInitializer(init, isPrototypeAccess(node.name));
}
/**
* Get the assignment 'initializer' -- the righthand side-- when the initializer is container-like (See getJavascriptInitializer).
* We treat the right hand side of assignments with container-like initalizers as declarations.
@@ -4325,6 +4331,8 @@ namespace ts {
switch (options.target) {
case ScriptTarget.ESNext:
return "lib.esnext.full.d.ts";
case ScriptTarget.ES2018:
return "lib.es2018.full.d.ts";
case ScriptTarget.ES2017:
return "lib.es2017.full.d.ts";
case ScriptTarget.ES2016:
@@ -4962,6 +4970,11 @@ namespace ts {
return getFirstJSDocTag(node, isJSDocClassTag);
}
/** Gets the JSDoc this tag for the node if present */
export function getJSDocThisTag(node: Node): JSDocThisTag | undefined {
return getFirstJSDocTag(node, isJSDocThisTag);
}
/** Gets the JSDoc return tag for the node if present */
export function getJSDocReturnTag(node: Node): JSDocReturnTag | undefined {
return getFirstJSDocTag(node, isJSDocReturnTag);
@@ -5693,6 +5706,10 @@ namespace ts {
return node.kind === SyntaxKind.JSDocClassTag;
}
export function isJSDocThisTag(node: Node): node is JSDocThisTag {
return node.kind === SyntaxKind.JSDocThisTag;
}
export function isJSDocParameterTag(node: Node): node is JSDocParameterTag {
return node.kind === SyntaxKind.JSDocParameterTag;
}
+18 -4
View File
@@ -1108,6 +1108,7 @@ namespace Harness {
{ name: "noImplicitReferences", type: "boolean" },
{ name: "currentDirectory", type: "string" },
{ name: "symlink", type: "string" },
{ name: "link", type: "string" },
// Emitted js baseline will print full paths for every output file
{ name: "fullEmitPaths", type: "boolean" }
];
@@ -1179,7 +1180,9 @@ namespace Harness {
harnessSettings: TestCaseParser.CompilerSettings | undefined,
compilerOptions: ts.CompilerOptions | undefined,
// Current directory is needed for rwcRunner to be able to use currentDirectory defined in json file
currentDirectory: string | undefined): compiler.CompilationResult {
currentDirectory: string | undefined,
symlinks?: vfs.FileSet
): compiler.CompilationResult {
const options: ts.CompilerOptions & HarnessOptions = compilerOptions ? ts.cloneCompilerOptions(compilerOptions) : { noResolve: false };
options.target = options.target || ts.ScriptTarget.ES3;
options.newLine = options.newLine || ts.NewLineKind.CarriageReturnLineFeed;
@@ -1216,6 +1219,9 @@ namespace Harness {
const docs = inputFiles.concat(otherFiles).map(documents.TextDocument.fromTestFile);
const fs = vfs.createFromFileSystem(IO, !useCaseSensitiveFileNames, { documents: docs, cwd: currentDirectory });
if (symlinks) {
fs.apply(symlinks);
}
const host = new fakes.CompilerHost(fs, options);
return compiler.compileFiles(host, programFileNames, options);
}
@@ -1836,6 +1842,7 @@ namespace Harness {
// Regex for parsing options in the format "@Alpha: Value of any sort"
const optionRegex = /^[\/]{2}\s*@(\w+)\s*:\s*([^\r\n]*)/gm; // multiple matches on multiple lines
const linkRegex = /^[\/]{2}\s*@link\s*:\s*([^\r\n]*)\s*->\s*([^\r\n]*)/gm; // multiple matches on multiple lines
export function extractCompilerSettings(content: string): CompilerSettings {
const opts: CompilerSettings = {};
@@ -1855,6 +1862,7 @@ namespace Harness {
testUnitData: TestUnitData[];
tsConfig: ts.ParsedCommandLine | undefined;
tsConfigFileUnitData: TestUnitData | undefined;
symlinks?: vfs.FileSet;
}
/** Given a test file containing // @FileName directives, return an array of named units of code to be added to an existing compiler instance */
@@ -1869,10 +1877,16 @@ namespace Harness {
let currentFileOptions: any = {};
let currentFileName: any;
let refs: string[] = [];
let symlinks: vfs.FileSet | undefined;
for (const line of lines) {
const testMetaData = optionRegex.exec(line);
if (testMetaData) {
let testMetaData: RegExpExecArray | null;
const linkMetaData = linkRegex.exec(line);
if (linkMetaData) {
if (!symlinks) symlinks = {};
symlinks[linkMetaData[2].trim()] = new vfs.Symlink(linkMetaData[1].trim());
}
else if (testMetaData = optionRegex.exec(line)) {
// Comment line, check for global/file @options and record them
optionRegex.lastIndex = 0;
const metaDataName = testMetaData[1].toLowerCase();
@@ -1961,7 +1975,7 @@ namespace Harness {
break;
}
}
return { settings, testUnitData, tsConfig, tsConfigFileUnitData };
return { settings, testUnitData, tsConfig, tsConfigFileUnitData, symlinks };
}
}
+258 -24
View File
@@ -126,6 +126,24 @@ namespace vfs {
return this._shadowRoot;
}
/**
* Snapshots the current file system, effectively shadowing itself. This is useful for
* generating file system patches using `.diff()` from one snapshot to the next. Performs
* no action if this file system is read-only.
*/
public snapshot() {
if (this.isReadonly) return;
const fs = new FileSystem(this.ignoreCase, { time: this._time });
fs._lazy = this._lazy;
fs._cwd = this._cwd;
fs._time = this._time;
fs._shadowRoot = this._shadowRoot;
fs._dirStack = this._dirStack;
fs.makeReadonly();
this._lazy = {};
this._shadowRoot = fs;
}
/**
* Gets a shadow copy of this file system. Changes to the shadow copy do not affect the
* original, allowing multiple copies of the same core file system without multiple copies
@@ -671,6 +689,160 @@ namespace vfs {
node.ctimeMs = time;
}
/**
* Generates a `FileSet` patch containing all the entries in this `FileSystem` that are not in `base`.
* @param base The base file system. If not provided, this file system's `shadowRoot` is used (if present).
*/
public diff(base = this.shadowRoot) {
const differences: FileSet = {};
const hasDifferences = base ? FileSystem.rootDiff(differences, this, base) : FileSystem.trackCreatedInodes(differences, this, this._getRootLinks());
return hasDifferences ? differences : undefined;
}
/**
* Generates a `FileSet` patch containing all the entries in `chagned` that are not in `base`.
*/
public static diff(changed: FileSystem, base: FileSystem) {
const differences: FileSet = {};
return FileSystem.rootDiff(differences, changed, base) ? differences : undefined;
}
private static diffWorker(container: FileSet, changed: FileSystem, changedLinks: ReadonlyMap<string, Inode> | undefined, base: FileSystem, baseLinks: ReadonlyMap<string, Inode> | undefined) {
if (changedLinks && !baseLinks) return FileSystem.trackCreatedInodes(container, changed, changedLinks);
if (baseLinks && !changedLinks) return FileSystem.trackDeletedInodes(container, baseLinks);
if (changedLinks && baseLinks) {
let hasChanges = false;
// track base items missing in changed
baseLinks.forEach((node, basename) => {
if (!changedLinks.has(basename)) {
container[basename] = isDirectory(node) ? new Rmdir() : new Unlink();
hasChanges = true;
}
});
// track changed items missing or differing in base
changedLinks.forEach((changedNode, basename) => {
const baseNode = baseLinks.get(basename);
if (baseNode) {
if (isDirectory(changedNode) && isDirectory(baseNode)) {
return hasChanges = FileSystem.directoryDiff(container, basename, changed, changedNode, base, baseNode) || hasChanges;
}
if (isFile(changedNode) && isFile(baseNode)) {
return hasChanges = FileSystem.fileDiff(container, basename, changed, changedNode, base, baseNode) || hasChanges;
}
if (isSymlink(changedNode) && isSymlink(baseNode)) {
return hasChanges = FileSystem.symlinkDiff(container, basename, changedNode, baseNode) || hasChanges;
}
}
return hasChanges = FileSystem.trackCreatedInode(container, basename, changed, changedNode) || hasChanges;
});
return hasChanges;
}
return false;
}
private static rootDiff(container: FileSet, changed: FileSystem, base: FileSystem) {
while (!changed._lazy.links && changed._shadowRoot) changed = changed._shadowRoot;
while (!base._lazy.links && base._shadowRoot) base = base._shadowRoot;
// no difference if the file systems are the same reference
if (changed === base) return false;
// no difference if the root links are empty and unshadowed
if (!changed._lazy.links && !changed._shadowRoot && !base._lazy.links && !base._shadowRoot) return false;
return FileSystem.diffWorker(container, changed, changed._getRootLinks(), base, base._getRootLinks());
}
private static directoryDiff(container: FileSet, basename: string, changed: FileSystem, changedNode: DirectoryInode, base: FileSystem, baseNode: DirectoryInode) {
while (!changedNode.links && changedNode.shadowRoot) changedNode = changedNode.shadowRoot;
while (!baseNode.links && baseNode.shadowRoot) baseNode = baseNode.shadowRoot;
// no difference if the nodes are the same reference
if (changedNode === baseNode) return false;
// no difference if both nodes are non shadowed and have no entries
if (isEmptyNonShadowedDirectory(changedNode) && isEmptyNonShadowedDirectory(baseNode)) return false;
// no difference if both nodes are unpopulated and point to the same mounted file system
if (!changedNode.links && !baseNode.links &&
changedNode.resolver && changedNode.source !== undefined &&
baseNode.resolver === changedNode.resolver && baseNode.source === changedNode.source) return false;
// no difference if both nodes have identical children
const children: FileSet = {};
if (!FileSystem.diffWorker(children, changed, changed._getLinks(changedNode), base, base._getLinks(baseNode))) {
return false;
}
container[basename] = new Directory(children);
return true;
}
private static fileDiff(container: FileSet, basename: string, changed: FileSystem, changedNode: FileInode, base: FileSystem, baseNode: FileInode) {
while (!changedNode.buffer && changedNode.shadowRoot) changedNode = changedNode.shadowRoot;
while (!baseNode.buffer && baseNode.shadowRoot) baseNode = baseNode.shadowRoot;
// no difference if the nodes are the same reference
if (changedNode === baseNode) return false;
// no difference if both nodes are non shadowed and have no entries
if (isEmptyNonShadowedFile(changedNode) && isEmptyNonShadowedFile(baseNode)) return false;
// no difference if both nodes are unpopulated and point to the same mounted file system
if (!changedNode.buffer && !baseNode.buffer &&
changedNode.resolver && changedNode.source !== undefined &&
baseNode.resolver === changedNode.resolver && baseNode.source === changedNode.source) return false;
const changedBuffer = changed._getBuffer(changedNode);
const baseBuffer = base._getBuffer(baseNode);
// no difference if both buffers are the same reference
if (changedBuffer === baseBuffer) return false;
// no difference if both buffers are identical
if (Buffer.compare(changedBuffer, baseBuffer) === 0) return false;
container[basename] = new File(changedBuffer);
return true;
}
private static symlinkDiff(container: FileSet, basename: string, changedNode: SymlinkInode, baseNode: SymlinkInode) {
// no difference if the nodes are the same reference
if (changedNode.symlink === baseNode.symlink) return false;
container[basename] = new Symlink(changedNode.symlink);
return true;
}
private static trackCreatedInode(container: FileSet, basename: string, changed: FileSystem, node: Inode) {
if (isDirectory(node)) {
const children: FileSet = {};
FileSystem.trackCreatedInodes(children, changed, changed._getLinks(node));
container[basename] = new Directory(children);
}
else if (isSymlink(node)) {
container[basename] = new Symlink(node.symlink);
}
else {
container[basename] = new File(node.buffer || "");
}
return true;
}
private static trackCreatedInodes(container: FileSet, changed: FileSystem, changedLinks: ReadonlyMap<string, Inode>) {
// no difference if links are empty
if (!changedLinks.size) return false;
changedLinks.forEach((node, basename) => { FileSystem.trackCreatedInode(container, basename, changed, node); });
return true;
}
private static trackDeletedInodes(container: FileSet, baseLinks: ReadonlyMap<string, Inode>) {
// no difference if links are empty
if (!baseLinks.size) return false;
baseLinks.forEach((node, basename) => { container[basename] = isDirectory(node) ? new Rmdir() : new Unlink(); });
return true;
}
private _mknod(dev: number, type: typeof S_IFREG, mode: number, time?: number): FileInode;
private _mknod(dev: number, type: typeof S_IFDIR, mode: number, time?: number): DirectoryInode;
private _mknod(dev: number, type: typeof S_IFLNK, mode: number, time?: number): SymlinkInode;
@@ -911,7 +1083,7 @@ namespace vfs {
if (this.stringComparer(vpath.dirname(path), path) === 0) {
throw new TypeError("Roots cannot be symbolic links.");
}
this.symlinkSync(entry.symlink, path);
this.symlinkSync(vpath.resolve(dirname, entry.symlink), path);
this._applyFileExtendedOptions(path, entry);
}
else if (entry instanceof Link) {
@@ -940,10 +1112,10 @@ namespace vfs {
private _applyFilesWorker(files: FileSet, dirname: string, deferred: [Symlink | Link | Mount, string][]) {
for (const key of Object.keys(files)) {
const value = this._normalizeFileSetEntry(files[key]);
const value = normalizeFileSetEntry(files[key]);
const path = dirname ? vpath.resolve(dirname, key) : key;
vpath.validate(path, vpath.ValidationFlags.Absolute);
if (value === null || value === undefined) {
if (value === null || value === undefined || value instanceof Rmdir || value instanceof Unlink) {
if (this.stringComparer(vpath.dirname(path), path) === 0) {
throw new TypeError("Roots cannot be deleted.");
}
@@ -967,19 +1139,6 @@ namespace vfs {
}
}
}
private _normalizeFileSetEntry(value: FileSet[string]) {
if (value === undefined ||
value === null ||
value instanceof Directory ||
value instanceof File ||
value instanceof Link ||
value instanceof Symlink ||
value instanceof Mount) {
return value;
}
return typeof value === "string" || Buffer.isBuffer(value) ? new File(value) : new Directory(value);
}
}
export interface FileSystemOptions {
@@ -997,12 +1156,9 @@ namespace vfs {
meta?: Record<string, any>;
}
export interface FileSystemCreateOptions {
export interface FileSystemCreateOptions extends FileSystemOptions {
// Sets the documents to add to the file system.
documents?: ReadonlyArray<documents.TextDocument>;
// Sets the initial working directory for the file system.
cwd?: string;
}
export type Axis = "ancestors" | "ancestors-or-self" | "self" | "descendants-or-self" | "descendants";
@@ -1062,8 +1218,16 @@ namespace vfs {
*
* Unless overridden, `/.src` will be the current working directory for the virtual file system.
*/
export function createFromFileSystem(host: FileSystemResolverHost, ignoreCase: boolean, { documents, cwd }: FileSystemCreateOptions = {}) {
export function createFromFileSystem(host: FileSystemResolverHost, ignoreCase: boolean, { documents, files, cwd, time, meta }: FileSystemCreateOptions = {}) {
const fs = getBuiltLocal(host, ignoreCase).shadow();
if (meta) {
for (const key of Object.keys(meta)) {
fs.meta.set(key, meta[key]);
}
}
if (time) {
fs.time(time);
}
if (cwd) {
fs.mkdirpSync(cwd);
fs.chdir(cwd);
@@ -1078,12 +1242,14 @@ namespace vfs {
if (symlink) {
for (const link of symlink.split(",").map(link => link.trim())) {
fs.mkdirpSync(vpath.dirname(link));
fs.symlinkSync(document.file, link);
fs.filemeta(link).set("document", document);
fs.symlinkSync(vpath.resolve(fs.cwd(), document.file), link);
}
}
}
}
if (files) {
fs.apply(files);
}
return fs;
}
@@ -1166,7 +1332,7 @@ namespace vfs {
* A template used to populate files, directories, links, etc. in a virtual file system.
*/
export interface FileSet {
[name: string]: DirectoryLike | FileLike | Link | Symlink | Mount | null | undefined;
[name: string]: DirectoryLike | FileLike | Link | Symlink | Mount | Rmdir | Unlink | null | undefined;
}
export type DirectoryLike = FileSet | Directory;
@@ -1202,6 +1368,16 @@ namespace vfs {
}
}
/** Removes a directory in a `FileSet` */
export class Rmdir {
public _rmdirBrand?: never; // brand necessary for proper type guards
}
/** Unlinks a file in a `FileSet` */
export class Unlink {
public _unlinkBrand?: never; // brand necessary for proper type guards
}
/** Extended options for a symbolic link in a `FileSet` */
export class Symlink {
public readonly symlink: string;
@@ -1274,6 +1450,14 @@ namespace vfs {
meta?: collections.Metadata;
}
function isEmptyNonShadowedDirectory(node: DirectoryInode) {
return !node.links && !node.shadowRoot && !node.resolver && !node.source;
}
function isEmptyNonShadowedFile(node: FileInode) {
return !node.buffer && !node.shadowRoot && !node.resolver && !node.source;
}
function isFile(node: Inode | undefined): node is FileInode {
return node !== undefined && (node.mode & S_IFMT) === S_IFREG;
}
@@ -1325,5 +1509,55 @@ namespace vfs {
}
return builtLocalCS;
}
function normalizeFileSetEntry(value: FileSet[string]) {
if (value === undefined ||
value === null ||
value instanceof Directory ||
value instanceof File ||
value instanceof Link ||
value instanceof Symlink ||
value instanceof Mount ||
value instanceof Rmdir ||
value instanceof Unlink) {
return value;
}
return typeof value === "string" || Buffer.isBuffer(value) ? new File(value) : new Directory(value);
}
export function formatPatch(patch: FileSet) {
return formatPatchWorker("", patch);
}
function formatPatchWorker(dirname: string, container: FileSet): string {
let text = "";
for (const name of Object.keys(container)) {
const entry = normalizeFileSetEntry(container[name]);
const file = dirname ? vpath.combine(dirname, name) : name;
if (entry === null || entry === undefined || entry instanceof Unlink || entry instanceof Rmdir) {
text += `//// [${file}] unlink\r\n`;
}
else if (entry instanceof Rmdir) {
text += `//// [${vpath.addTrailingSeparator(file)}] rmdir\r\n`;
}
else if (entry instanceof Directory) {
text += formatPatchWorker(file, entry.files);
}
else if (entry instanceof File) {
const content = typeof entry.data === "string" ? entry.data : entry.data.toString("utf8");
text += `//// [${file}]\r\n${content}\r\n\r\n`;
}
else if (entry instanceof Link) {
text += `//// [${file}] link(${entry.path})\r\n`;
}
else if (entry instanceof Symlink) {
text += `//// [${file}] symlink(${entry.symlink})\r\n`;
}
else if (entry instanceof Mount) {
text += `//// [${file}] mount(${entry.source})\r\n`;
}
}
return text;
}
}
// tslint:enable:no-null-keyword
@@ -486,12 +486,18 @@
<Item ItemId=";A_non_dry_build_would_build_project_0_6357" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A non-dry build would build project '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[非 DRY 的組建會建置專案 '{0}']]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";A_non_dry_build_would_delete_the_following_files_Colon_0_6356" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A non-dry build would delete the following files: {0}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[非 DRY 的組建會刪除下列檔案: {0}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -960,6 +966,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_braces_to_arrow_function_95059" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add braces to arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[將大括號新增至箭號函式]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_definite_assignment_assertion_to_property_0_95020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add definite assignment assertion to property '{0}']]></Val>
@@ -1029,6 +1044,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_or_remove_braces_in_an_arrow_function_95058" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add or remove braces in an arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[在箭號函式中新增或移除大括號]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_qualifier_to_all_unresolved_variables_matching_a_member_name_95037" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add qualifier to all unresolved variables matching a member name]]></Val>
@@ -1773,18 +1797,27 @@
<Item ItemId=";Build_all_projects_including_those_that_appear_to_be_up_to_date_6368" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build all projects, including those that appear to be up to date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[建置包括似乎已是最新狀態的所有專案]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Build_one_or_more_projects_and_their_dependencies_if_out_of_date_6364" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build one or more projects and their dependencies, if out of date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[若已過期,則建置一或多個專案及其相依性]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Building_project_0_6358" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Building project '{0}'...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[正在建置專案 '{0}'...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -2865,6 +2898,9 @@
<Item ItemId=";Delete_the_outputs_of_all_projects_6365" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Delete the outputs of all projects]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[刪除所有專案的輸出]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -3327,6 +3363,9 @@
<Item ItemId=";Enable_verbose_logging_6366" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Enable verbose logging]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[啟用詳細資訊記錄]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -5760,6 +5799,9 @@
<Item ItemId=";Option_build_must_be_the_first_command_line_argument_6369" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Option '--build' must be the first command line argument.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[選項 '--build' 必須是第一個命令列引數。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -5802,6 +5844,9 @@
<Item ItemId=";Options_0_and_1_cannot_be_combined_6370" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Options '{0}' and '{1}' cannot be combined.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[無法合併選項 '{0}' 與 '{1}'。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6240,42 +6285,63 @@
<Item ItemId=";Project_0_can_t_be_built_because_its_dependency_1_has_errors_6363" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' can't be built because its dependency '{1}' has errors]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[因為專案 '{0}' 的相依性 '{1}' 發生錯誤,所以無法建置該專案]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date_6353" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because its dependency '{1}' is out of date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[因為專案 '{0}' 的相依性 '{1}' 已過期,所以該專案已過期]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2_6350" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because oldest output '{1}' is older than newest input '{2}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[因為最舊的輸出 '{1}' 早於最新的輸入 '{2}',所以專案 '{0}' 已過期]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_output_file_1_does_not_exist_6352" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because output file '{1}' does not exist]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[因為輸出檔案 '{1}' 不存在,所以專案 '{0}' 已過期]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_6361" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[專案 '{0}' 為最新狀態]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2_6351" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date because newest input '{1}' is older than oldest output '{2}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[因為最新的輸入 '{1}' 早於最舊的輸出 '{2}',所以專案 '{0}' 為最新狀態]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies_6354" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date with .d.ts files from its dependencies]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[專案 '{0}' 為最新狀態,且有來自其相依性的 .d.ts 檔案]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6291,6 +6357,9 @@
<Item ItemId=";Projects_in_this_build_Colon_0_6355" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Projects in this build: {0}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[此組建中的專案: {0}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6756,6 +6825,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Remove_braces_from_arrow_function_95060" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove braces from arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[從箭號函式移除大括號]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</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>
@@ -7332,6 +7410,9 @@
<Item ItemId=";Show_what_would_be_built_or_deleted_if_specified_with_clean_6367" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Show what would be built (or deleted, if specified with '--clean')]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[顯示將會建置 (或刪除 - 若是指定有 '--clean') 的內容]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7356,12 +7437,18 @@
<Item ItemId=";Skipping_build_of_project_0_because_its_dependency_1_has_errors_6362" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping build of project '{0}' because its dependency '{1}' has errors]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[因為專案 '{0}' 的相依性 '{1}' 發生錯誤,所以跳過建置該專案]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Skipping_clean_because_not_all_projects_could_be_located_6371" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping clean because not all projects could be located]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[因為並非所有專案都可找到,所以跳過清理]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -8976,6 +9063,9 @@
<Item ItemId=";Updating_output_timestamps_of_project_0_6359" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Updating output timestamps of project '{0}'...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[正在更新專案 '{0}' 的輸出時間戳記...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -9531,6 +9621,9 @@
<Item ItemId=";delete_this_Project_0_is_up_to_date_because_it_was_previously_built_6360" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[delete this - Project '{0}' is up to date because it was previously built]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[刪除此項目 - 因為先前已建置專案 '{0}',所以其為最新狀態]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -495,12 +495,18 @@
<Item ItemId=";A_non_dry_build_would_build_project_0_6357" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A non-dry build would build project '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Una compilación no DRY compilaría el proyecto "{0}"]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";A_non_dry_build_would_delete_the_following_files_Colon_0_6356" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A non-dry build would delete the following files: {0}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Una compilación no DRY eliminaría los siguientes archivos: {0}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -969,6 +975,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_braces_to_arrow_function_95059" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add braces to arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Agregar llaves a la función de flecha]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_definite_assignment_assertion_to_property_0_95020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add definite assignment assertion to property '{0}']]></Val>
@@ -1041,6 +1056,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_or_remove_braces_in_an_arrow_function_95058" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add or remove braces in an arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Agregar o quitar llaves en una función de flecha]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_qualifier_to_all_unresolved_variables_matching_a_member_name_95037" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add qualifier to all unresolved variables matching a member name]]></Val>
@@ -1785,18 +1809,27 @@
<Item ItemId=";Build_all_projects_including_those_that_appear_to_be_up_to_date_6368" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build all projects, including those that appear to be up to date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Compilar todos los proyectos, incluidos los que aparecen actualizados]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Build_one_or_more_projects_and_their_dependencies_if_out_of_date_6364" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build one or more projects and their dependencies, if out of date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Generar uno o varios proyectos y sus dependencias, si no están actualizados]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Building_project_0_6358" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Building project '{0}'...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Compilando el proyecto "{0}"...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -2877,6 +2910,9 @@
<Item ItemId=";Delete_the_outputs_of_all_projects_6365" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Delete the outputs of all projects]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Eliminar las salidas de todos los proyectos]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -3339,6 +3375,9 @@
<Item ItemId=";Enable_verbose_logging_6366" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Enable verbose logging]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Habilitar el registro detallado]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -5772,6 +5811,9 @@
<Item ItemId=";Option_build_must_be_the_first_command_line_argument_6369" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Option '--build' must be the first command line argument.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La opción "--build" debe ser el primer argumento de la línea de comandos.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -5814,6 +5856,9 @@
<Item ItemId=";Options_0_and_1_cannot_be_combined_6370" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Options '{0}' and '{1}' cannot be combined.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA["{0}" y "{1}" no se pueden combinar.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6252,42 +6297,63 @@
<Item ItemId=";Project_0_can_t_be_built_because_its_dependency_1_has_errors_6363" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' can't be built because its dependency '{1}' has errors]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El proyecto "{0}" no puede generarse porque su dependencia "{1}" tiene errores]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date_6353" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because its dependency '{1}' is out of date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El proyecto "{0}" está obsoleto porque su dependencia "{1}" no está actualizada]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2_6350" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because oldest output '{1}' is older than newest input '{2}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El proyecto "{0}" está obsoleto porque la salida más antigua "{1}" es anterior a la entrada más reciente "{2}"]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_output_file_1_does_not_exist_6352" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because output file '{1}' does not exist]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El proyecto "{0}" está obsoleto porque el archivo de salida "{1}" no existe]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_6361" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El proyecto "{0}" está actualizado]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2_6351" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date because newest input '{1}' is older than oldest output '{2}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El proyecto "{0}" está actualizado porque la entrada más reciente "{1}" es anterior a la salida más antigua "{2}"]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies_6354" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date with .d.ts files from its dependencies]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El proyecto "{0}" está actualizado con archivos .d.ts de sus dependencias]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6303,6 +6369,9 @@
<Item ItemId=";Projects_in_this_build_Colon_0_6355" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Projects in this build: {0}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Proyectos de esta compilación: {0}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6768,6 +6837,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Remove_braces_from_arrow_function_95060" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove braces from arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Quitar las llaves de la función de flecha]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</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>
@@ -7344,6 +7422,9 @@
<Item ItemId=";Show_what_would_be_built_or_deleted_if_specified_with_clean_6367" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Show what would be built (or deleted, if specified with '--clean')]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Mostrar lo que podría compilarse (o eliminarse, si se especifica con "--clean")]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7368,12 +7449,18 @@
<Item ItemId=";Skipping_build_of_project_0_because_its_dependency_1_has_errors_6362" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping build of project '{0}' because its dependency '{1}' has errors]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Omitiendo la compilación del proyecto "{0}" porque su dependencia "{1}" tiene errores]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Skipping_clean_because_not_all_projects_could_be_located_6371" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping clean because not all projects could be located]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Omitiendo la limpieza porque no se encontraron todos los proyectos]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -8988,6 +9075,9 @@
<Item ItemId=";Updating_output_timestamps_of_project_0_6359" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Updating output timestamps of project '{0}'...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Actualizando las marcas de hora de salida del proyecto "{0}"...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -9543,6 +9633,9 @@
<Item ItemId=";delete_this_Project_0_is_up_to_date_because_it_was_previously_built_6360" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[delete this - Project '{0}' is up to date because it was previously built]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[eliminar esto - El proyecto "{0}" está actualizado porque se compiló previamente]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -495,12 +495,18 @@
<Item ItemId=";A_non_dry_build_would_build_project_0_6357" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A non-dry build would build project '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Une build non-DRY générerait le projet '{0}']]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";A_non_dry_build_would_delete_the_following_files_Colon_0_6356" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A non-dry build would delete the following files: {0}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Une build non-DRY supprimerait les fichiers suivants : {0}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -969,6 +975,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_braces_to_arrow_function_95059" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add braces to arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ajouter des accolades à la fonction arrow]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_definite_assignment_assertion_to_property_0_95020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add definite assignment assertion to property '{0}']]></Val>
@@ -1041,6 +1056,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_or_remove_braces_in_an_arrow_function_95058" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add or remove braces in an arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ajouter ou supprimer les accolades dans une fonction arrow]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_qualifier_to_all_unresolved_variables_matching_a_member_name_95037" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add qualifier to all unresolved variables matching a member name]]></Val>
@@ -1785,18 +1809,27 @@
<Item ItemId=";Build_all_projects_including_those_that_appear_to_be_up_to_date_6368" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build all projects, including those that appear to be up to date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Générer tous les projets, même ceux qui semblent être à jour]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Build_one_or_more_projects_and_their_dependencies_if_out_of_date_6364" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build one or more projects and their dependencies, if out of date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Générer un ou plusieurs projets et leurs dépendances (s'ils sont obsolètes)]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Building_project_0_6358" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Building project '{0}'...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Génération du projet '{0}'...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -2877,6 +2910,9 @@
<Item ItemId=";Delete_the_outputs_of_all_projects_6365" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Delete the outputs of all projects]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Supprimer les sorties de tous les projets]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -3339,6 +3375,9 @@
<Item ItemId=";Enable_verbose_logging_6366" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Enable verbose logging]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Activer la journalisation détaillée]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -5772,6 +5811,9 @@
<Item ItemId=";Option_build_must_be_the_first_command_line_argument_6369" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Option '--build' must be the first command line argument.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[L'option '--build' doit être le premier argument de ligne de commande.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -5814,6 +5856,9 @@
<Item ItemId=";Options_0_and_1_cannot_be_combined_6370" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Options '{0}' and '{1}' cannot be combined.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Impossible de combiner les options '{0}' et '{1}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6252,42 +6297,63 @@
<Item ItemId=";Project_0_can_t_be_built_because_its_dependency_1_has_errors_6363" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' can't be built because its dependency '{1}' has errors]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Impossible de générer le projet '{0}' car sa dépendance '{1}' comporte des erreurs]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date_6353" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because its dependency '{1}' is out of date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Le projet '{0}' est obsolète car sa dépendance '{1}' est obsolète]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2_6350" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because oldest output '{1}' is older than newest input '{2}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Le projet '{0}' est obsolète car la sortie la plus ancienne ('{1}') est antérieure à l'entrée la plus récente '{2}']]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_output_file_1_does_not_exist_6352" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because output file '{1}' does not exist]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Le projet '{0}' est obsolète car le fichier de sortie '{1}' n'existe pas]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_6361" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Le projet '{0}' est à jour]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2_6351" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date because newest input '{1}' is older than oldest output '{2}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Le projet '{0}' est à jour car l'entrée la plus récente ('{1}') est antérieure à la sortie la plus ancienne ('{2}')]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies_6354" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date with .d.ts files from its dependencies]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Le projet '{0}' est à jour avec les fichiers .d.ts de ses dépendances]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6303,6 +6369,9 @@
<Item ItemId=";Projects_in_this_build_Colon_0_6355" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Projects in this build: {0}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Projets dans cette build : {0}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6768,6 +6837,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Remove_braces_from_arrow_function_95060" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove braces from arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Supprimer les accolades de la fonction arrow]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</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>
@@ -7344,6 +7422,9 @@
<Item ItemId=";Show_what_would_be_built_or_deleted_if_specified_with_clean_6367" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Show what would be built (or deleted, if specified with '--clean')]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Montrer ce qui serait généré (ou supprimé si '--clean' est spécifié)]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -7368,12 +7449,18 @@
<Item ItemId=";Skipping_build_of_project_0_because_its_dependency_1_has_errors_6362" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping build of project '{0}' because its dependency '{1}' has errors]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ignorer la génération du projet '{0}' car sa dépendance '{1}' comporte des erreurs]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Skipping_clean_because_not_all_projects_could_be_located_6371" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping clean because not all projects could be located]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Ignorer le nettoyage car tous les projets ne peuvent pas être localisés]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -8988,6 +9075,9 @@
<Item ItemId=";Updating_output_timestamps_of_project_0_6359" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Updating output timestamps of project '{0}'...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Mise à jour des horodatages de sortie du projet '{0}'...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -9543,6 +9633,9 @@
<Item ItemId=";delete_this_Project_0_is_up_to_date_because_it_was_previously_built_6360" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[delete this - Project '{0}' is up to date because it was previously built]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[supprimer ceci - Le projet '{0}' est à jour car il a déjà été généré]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -483,6 +483,24 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";A_non_dry_build_would_build_project_0_6357" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A non-dry build would build project '{0}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Se si esegue una compilazione non di prova, verrà compilato il progetto '{0}']]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";A_non_dry_build_would_delete_the_following_files_Colon_0_6356" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A non-dry build would delete the following files: {0}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Se si esegue una compilazione non di prova, i file seguenti verranno eliminati: {0}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation_2371" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A parameter initializer is only allowed in a function or constructor implementation.]]></Val>
@@ -948,6 +966,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_braces_to_arrow_function_95059" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add braces to arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aggiungere le parentesi graffe alla funzione arrow]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_definite_assignment_assertion_to_property_0_95020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add definite assignment assertion to property '{0}']]></Val>
@@ -1017,6 +1044,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_or_remove_braces_in_an_arrow_function_95058" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add or remove braces in an arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aggiungere o rimuovere le parentesi graffe in una funzione arrow]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_qualifier_to_all_unresolved_variables_matching_a_member_name_95037" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add qualifier to all unresolved variables matching a member name]]></Val>
@@ -1758,6 +1794,33 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Build_all_projects_including_those_that_appear_to_be_up_to_date_6368" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build all projects, including those that appear to be up to date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Compilare tutti i progetti, anche quelli che sembrano aggiornati]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Build_one_or_more_projects_and_their_dependencies_if_out_of_date_6364" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build one or more projects and their dependencies, if out of date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Compilare uno o più progetti e le relative dipendenze, se non aggiornate]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Building_project_0_6358" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Building project '{0}'...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Compilazione del progetto '{0}'...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
@@ -2832,6 +2895,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Delete_the_outputs_of_all_projects_6365" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Delete the outputs of all projects]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Eliminare gli output di tutti i progetti]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react__6084" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[[Deprecated]5D; Use '--jsxFactory' instead. Specify the object invoked for createElement when targeting 'react' JSX emit]]></Val>
@@ -3288,6 +3360,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Enable_verbose_logging_6366" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Enable verbose logging]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Abilitare la registrazione dettagliata]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Enables_emit_interoperability_between_CommonJS_and_ES_Modules_via_creation_of_namespace_objects_for__7037" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'.]]></Val>
@@ -5715,6 +5796,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Option_build_must_be_the_first_command_line_argument_6369" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Option '--build' must be the first command line argument.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[L'opzione '--build' deve essere il primo argomento della riga di comando.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES_5047" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Option 'isolatedModules' can only be used when either option '--module' is provided or option 'target' is 'ES2015' or higher.]]></Val>
@@ -5751,6 +5841,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Options_0_and_1_cannot_be_combined_6370" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Options '{0}' and '{1}' cannot be combined.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Non è possibile combinare le opzioni '{0}' e '{1}'.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Options_Colon_6027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Options:]]></Val>
@@ -6183,6 +6282,69 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_can_t_be_built_because_its_dependency_1_has_errors_6363" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' can't be built because its dependency '{1}' has errors]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Non è possibile compilare il progetto '{0}' perché la dipendenza '{1}' contiene errori]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date_6353" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because its dependency '{1}' is out of date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il progetto '{0}' non è aggiornato perché la dipendenza '{1}' non è aggiornata]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2_6350" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because oldest output '{1}' is older than newest input '{2}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il progetto '{0}' non è aggiornato perché l'output meno recente '{1}' è meno recente dell'input più recente '{2}']]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_output_file_1_does_not_exist_6352" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because output file '{1}' does not exist]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il progetto '{0}' non è aggiornato perché il file di output '{1}' non esiste]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_6361" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il progetto '{0}' è aggiornato]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2_6351" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date because newest input '{1}' is older than oldest output '{2}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il progetto '{0}' è aggiornato perché l'input più recente '{1}' è meno recente dell'output meno recente '{2}']]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies_6354" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date with .d.ts files from its dependencies]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il progetto '{0}' è aggiornato con i file con estensione d.ts delle relative dipendenze]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0_6202" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project references may not form a circular graph. Cycle detected: {0}]]></Val>
@@ -6192,6 +6354,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Projects_in_this_build_Colon_0_6355" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Projects in this build: {0}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Progetti in questa compilazione: {0}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Projects_to_reference_6300" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Projects to reference]]></Val>
@@ -6654,6 +6825,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Remove_braces_from_arrow_function_95060" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove braces from arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Rimuovere le parentesi graffe dalla funzione arrow]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</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>
@@ -7227,6 +7407,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Show_what_would_be_built_or_deleted_if_specified_with_clean_6367" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Show what would be built (or deleted, if specified with '--clean')]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Mostra gli elementi che vengono compilati (o eliminati, se specificati con l'opzione '--clean')]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Signature_0_must_be_a_type_predicate_1224" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Signature '{0}' must be a type predicate.]]></Val>
@@ -7245,6 +7434,24 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Skipping_build_of_project_0_because_its_dependency_1_has_errors_6362" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping build of project '{0}' because its dependency '{1}' has errors]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La compilazione del progetto '{0}' verrà ignorata perché la dipendenza '{1}' contiene errori]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Skipping_clean_because_not_all_projects_could_be_located_6371" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping clean because not all projects could be located]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La pulizia verrà ignorata perché non è stato possibile individuare tutti i progetti]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Source_Map_Options_6175" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Source Map Options]]></Val>
@@ -8853,6 +9060,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Updating_output_timestamps_of_project_0_6359" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Updating output timestamps of project '{0}'...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Aggiornamento dei timestamp di output del progetto '{0}'...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Use_synthetic_default_member_95016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Use synthetic 'default' member.]]></Val>
@@ -9402,6 +9618,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";delete_this_Project_0_is_up_to_date_because_it_was_previously_built_6360" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[delete this - Project '{0}' is up to date because it was previously built]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[eliminare - Il progetto '{0}' è aggiornato perché è stato compilato in precedenza]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";enum_declarations_can_only_be_used_in_a_ts_file_8015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA['enum declarations' can only be used in a .ts file.]]></Val>
@@ -950,6 +950,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_braces_to_arrow_function_95059" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add braces to arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dodaj nawiasy klamrowe do funkcji strzałki]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_definite_assignment_assertion_to_property_0_95020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add definite assignment assertion to property '{0}']]></Val>
@@ -1019,6 +1028,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_or_remove_braces_in_an_arrow_function_95058" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add or remove braces in an arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Dodaj lub usuń nawiasy klamrowe w funkcji strzałki]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_qualifier_to_all_unresolved_variables_matching_a_member_name_95037" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add qualifier to all unresolved variables matching a member name]]></Val>
@@ -1763,12 +1781,18 @@
<Item ItemId=";Build_all_projects_including_those_that_appear_to_be_up_to_date_6368" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build all projects, including those that appear to be up to date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Kompiluj wszystkie projekty, łącznie z tymi, które wydają się być aktualne]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Build_one_or_more_projects_and_their_dependencies_if_out_of_date_6364" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build one or more projects and their dependencies, if out of date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Kompiluj co najmniej jeden projekt i jego zależności, jeśli są nieaktualne]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -2855,6 +2879,9 @@
<Item ItemId=";Delete_the_outputs_of_all_projects_6365" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Delete the outputs of all projects]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Usuń dane wyjściowe wszystkich projektów]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -3317,6 +3344,9 @@
<Item ItemId=";Enable_verbose_logging_6366" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Enable verbose logging]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Włącz pełne rejestrowanie]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -5750,6 +5780,9 @@
<Item ItemId=";Option_build_must_be_the_first_command_line_argument_6369" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Option '--build' must be the first command line argument.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Opcja „--build” musi być pierwszym argumentem wiersza polecenia.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -5792,6 +5825,9 @@
<Item ItemId=";Options_0_and_1_cannot_be_combined_6370" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Options '{0}' and '{1}' cannot be combined.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Nie można połączyć opcji „{0}” i „{1}”.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6227,30 +6263,45 @@
<Item ItemId=";Project_0_can_t_be_built_because_its_dependency_1_has_errors_6363" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' can't be built because its dependency '{1}' has errors]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Nie można skompilować projektu „{0}”, ponieważ jego zależność „{1}” zawiera błędy]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date_6353" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because its dependency '{1}' is out of date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Projekt „{0}” jest nieaktualny, ponieważ jego zależność „{1}” jest nieaktualna]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2_6350" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because oldest output '{1}' is older than newest input '{2}']]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Projekt „{0}” jest nieaktualny, ponieważ najstarsze dane wyjściowe „{1}” są starsze niż najnowsze dane wejściowe „{2}”]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_output_file_1_does_not_exist_6352" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because output file '{1}' does not exist]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Projekt „{0}” jest nieaktualny, ponieważ plik wyjściowy „{1}” nie istnieje]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_6361" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Projekt „{0}” jest aktualny]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6263,6 +6314,9 @@
<Item ItemId=";Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies_6354" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date with .d.ts files from its dependencies]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Projekt „{0}” jest aktualny z plikami .d.ts z jego zależności]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6278,6 +6332,9 @@
<Item ItemId=";Projects_in_this_build_Colon_0_6355" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Projects in this build: {0}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Projekty w tej kompilacji: {0}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -6743,6 +6800,15 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Remove_braces_from_arrow_function_95060" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove braces from arrow function]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Usuń nawiasy klamrowe z funkcji strzałki]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</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>
@@ -7343,6 +7409,9 @@
<Item ItemId=";Skipping_build_of_project_0_because_its_dependency_1_has_errors_6362" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping build of project '{0}' because its dependency '{1}' has errors]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Pomijanie kompilacji projektu „{0}”, ponieważ jego zależność „{1}” zawiera błędy]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -8963,6 +9032,9 @@
<Item ItemId=";Updating_output_timestamps_of_project_0_6359" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Updating output timestamps of project '{0}'...]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Trwa aktualizowanie sygnatury czasowej danych wyjściowych projektu „{0}”...]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -9518,6 +9590,9 @@
<Item ItemId=";delete_this_Project_0_is_up_to_date_because_it_was_previously_built_6360" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[delete this - Project '{0}' is up to date because it was previously built]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[usuń to — projekt „{0}” jest aktualny, ponieważ został wcześniej skompilowany]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -1970,6 +1970,9 @@
<Item ItemId=";Cannot_find_lib_definition_for_0_Did_you_mean_1_2727" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Cannot find lib definition for '{0}'. Did you mean '{1}'?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Não é possível encontrar a definição de lib para '{0}'. Você quis dizer '{1}'?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -482,6 +482,18 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";A_non_dry_build_would_build_project_0_6357" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A non-dry build would build project '{0}']]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";A_non_dry_build_would_delete_the_following_files_Colon_0_6356" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A non-dry build would delete the following files: {0}]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation_2371" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[A parameter initializer is only allowed in a function or constructor implementation.]]></Val>
@@ -947,6 +959,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_braces_to_arrow_function_95059" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add braces to arrow function]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_definite_assignment_assertion_to_property_0_95020" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add definite assignment assertion to property '{0}']]></Val>
@@ -1016,6 +1034,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_or_remove_braces_in_an_arrow_function_95058" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add or remove braces in an arrow function]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Add_qualifier_to_all_unresolved_variables_matching_a_member_name_95037" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Add qualifier to all unresolved variables matching a member name]]></Val>
@@ -1757,6 +1781,24 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Build_all_projects_including_those_that_appear_to_be_up_to_date_6368" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build all projects, including those that appear to be up to date]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Build_one_or_more_projects_and_their_dependencies_if_out_of_date_6364" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Build one or more projects and their dependencies, if out of date]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Building_project_0_6358" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Building project '{0}'...]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Call_decorator_expression_90028" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Call decorator expression]]></Val>
@@ -1937,12 +1979,18 @@
<Item ItemId=";Cannot_find_lib_definition_for_0_2726" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Cannot find lib definition for '{0}'.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Не удается найти определение lib для "{0}".]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Cannot_find_lib_definition_for_0_Did_you_mean_1_2727" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Cannot find lib definition for '{0}'. Did you mean '{1}'?]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Не удается найти определение lib для "{0}". Вы имели в виду "{1}"?]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
@@ -2825,6 +2873,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Delete_the_outputs_of_all_projects_6365" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Delete the outputs of all projects]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react__6084" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[[Deprecated]5D; Use '--jsxFactory' instead. Specify the object invoked for createElement when targeting 'react' JSX emit]]></Val>
@@ -3281,6 +3335,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Enable_verbose_logging_6366" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Enable verbose logging]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Enables_emit_interoperability_between_CommonJS_and_ES_Modules_via_creation_of_namespace_objects_for__7037" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'.]]></Val>
@@ -5708,6 +5768,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Option_build_must_be_the_first_command_line_argument_6369" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Option '--build' must be the first command line argument.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES_5047" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Option 'isolatedModules' can only be used when either option '--module' is provided or option 'target' is 'ES2015' or higher.]]></Val>
@@ -5744,6 +5810,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Options_0_and_1_cannot_be_combined_6370" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Options '{0}' and '{1}' cannot be combined.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Options_Colon_6027" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Options:]]></Val>
@@ -6176,6 +6248,48 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_can_t_be_built_because_its_dependency_1_has_errors_6363" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' can't be built because its dependency '{1}' has errors]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date_6353" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because its dependency '{1}' is out of date]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2_6350" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because oldest output '{1}' is older than newest input '{2}']]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_out_of_date_because_output_file_1_does_not_exist_6352" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is out of date because output file '{1}' does not exist]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_6361" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2_6351" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date because newest input '{1}' is older than oldest output '{2}']]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies_6354" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project '{0}' is up to date with .d.ts files from its dependencies]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0_6202" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Project references may not form a circular graph. Cycle detected: {0}]]></Val>
@@ -6185,6 +6299,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Projects_in_this_build_Colon_0_6355" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Projects in this build: {0}]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Projects_to_reference_6300" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Projects to reference]]></Val>
@@ -6647,6 +6767,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Remove_braces_from_arrow_function_95060" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Remove braces from arrow function]]></Val>
</Str>
<Disp Icon="Str" />
</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>
@@ -7220,6 +7346,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Show_what_would_be_built_or_deleted_if_specified_with_clean_6367" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Show what would be built (or deleted, if specified with '--clean')]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Signature_0_must_be_a_type_predicate_1224" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Signature '{0}' must be a type predicate.]]></Val>
@@ -7238,6 +7370,18 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Skipping_build_of_project_0_because_its_dependency_1_has_errors_6362" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping build of project '{0}' because its dependency '{1}' has errors]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Skipping_clean_because_not_all_projects_could_be_located_6371" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Skipping clean because not all projects could be located]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Source_Map_Options_6175" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Source Map Options]]></Val>
@@ -8846,6 +8990,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Updating_output_timestamps_of_project_0_6359" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Updating output timestamps of project '{0}'...]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";Use_synthetic_default_member_95016" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Use synthetic 'default' member.]]></Val>
@@ -9395,6 +9545,12 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";delete_this_Project_0_is_up_to_date_because_it_was_previously_built_6360" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[delete this - Project '{0}' is up to date because it was previously built]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";enum_declarations_can_only_be_used_in_a_ts_file_8015" ItemType="0" PsrId="306" Leaf="true">
<Str Cat="Text">
<Val><![CDATA['enum declarations' can only be used in a .ts file.]]></Val>
+1 -1
View File
@@ -247,7 +247,7 @@ namespace ts.codefix {
preferences: UserPreferences,
): ReadonlyArray<NewImportInfo> {
const choicesForEachExportingModule = flatMap<SymbolExportInfo, NewImportInfo[]>(moduleSymbols, ({ moduleSymbol, importKind }) => {
const modulePathsGroups = moduleSpecifiers.getModuleSpecifiers(moduleSymbol, program, sourceFile, host, preferences);
const modulePathsGroups = moduleSpecifiers.getModuleSpecifiers(moduleSymbol, program.getCompilerOptions(), sourceFile, host, program.getSourceFiles(), preferences);
return modulePathsGroups.map(group => group.map(moduleSpecifier => ({ moduleSpecifier, importKind })));
});
// Sort to keep the shortest paths first, but keep [relativePath, importRelativeToBaseUrl] groups together
+1 -1
View File
@@ -366,7 +366,7 @@ namespace ts.SignatureHelp {
return invocation.kind === InvocationKind.Call ? getInvokedExpression(invocation.node) : invocation.called;
}
const signatureHelpNodeBuilderFlags = NodeBuilderFlags.OmitParameterModifiers | NodeBuilderFlags.IgnoreErrors;
const signatureHelpNodeBuilderFlags = NodeBuilderFlags.OmitParameterModifiers | NodeBuilderFlags.IgnoreErrors | NodeBuilderFlags.UseAliasDefinedOutsideCurrentScope;
function createSignatureHelpItems(candidates: ReadonlyArray<Signature>, resolvedSignature: Signature, argumentListInfo: ArgumentListInfo, sourceFile: SourceFile, typeChecker: TypeChecker): SignatureHelpItems {
const { argumentCount, argumentsSpan: applicableSpan, invocation, argumentIndex } = argumentListInfo;
const isTypeParameterList = argumentListInfo.kind === ArgumentListKind.TypeArguments;
+2 -2
View File
@@ -42,7 +42,7 @@ namespace ts.sourcemaps {
};
function getGeneratedPosition(loc: SourceMappableLocation): SourceMappableLocation {
const maps = getGeneratedOrderedMappings();
const maps = getSourceOrderedMappings();
if (!length(maps)) return loc;
let targetIndex = binarySearch(maps, { sourcePath: loc.fileName, sourcePosition: loc.position }, identity, compareProcessedPositionSourcePositions);
if (targetIndex < 0 && maps.length > 0) {
@@ -56,7 +56,7 @@ namespace ts.sourcemaps {
}
function getOriginalPosition(loc: SourceMappableLocation): SourceMappableLocation {
const maps = getSourceOrderedMappings();
const maps = getGeneratedOrderedMappings();
if (!length(maps)) return loc;
let targetIndex = binarySearch(maps, { emittedPosition: loc.position }, identity, compareProcessedPositionEmittedPositions);
if (targetIndex < 0 && maps.length > 0) {
+3 -1
View File
@@ -179,7 +179,9 @@ class CompilerTest {
this.otherFiles,
this.harnessSettings,
/*options*/ tsConfigOptions,
/*currentDirectory*/ this.harnessSettings.currentDirectory);
/*currentDirectory*/ this.harnessSettings.currentDirectory,
testCaseContent.symlinks
);
this.options = this.result.options;
}
+40 -54
View File
@@ -12,7 +12,7 @@ namespace ts {
export namespace Sample1 {
tick();
const projFs = loadProjectFromDisk("../../tests/projects/sample1");
const projFs = loadProjectFromDisk("tests/projects/sample1");
const allExpectedOutputs = ["/src/tests/index.js",
"/src/core/index.js", "/src/core/index.d.ts",
@@ -236,40 +236,33 @@ namespace ts {
}
export namespace OutFile {
const outFileFs = loadProjectFromDisk("../../tests/projects/outfile-concat");
const outFileFs = loadProjectFromDisk("tests/projects/outfile-concat");
describe("tsbuild - baseline sectioned sourcemaps", () => {
const fs = outFileFs.shadow();
const host = new fakes.CompilerHost(fs);
const builder = createSolutionBuilder(host, buildHost, ["/src/third"], { dry: false, force: false, verbose: false });
clearDiagnostics();
builder.buildAllProjects();
assertDiagnosticMessages(/*none*/);
const files = [
"/src/third/thirdjs/output/third-output.js",
"/src/third/thirdjs/output/third-output.js.map"
];
for (const file of files) {
it(`Generates files matching the baseline - ${file}`, () => {
Harness.Baseline.runBaseline(getBaseFileName(file), () => {
return fs.readFileSync(file, "utf-8");
});
});
}
it(`Generates files matching the baseline - file listing for outFile-concat`, () => {
Harness.Baseline.runBaseline("outfile-concat-fileListing.txt", () => {
return fs.getFileListing();
let fs: vfs.FileSystem | undefined;
before(() => {
fs = outFileFs.shadow();
const host = new fakes.CompilerHost(fs);
const builder = createSolutionBuilder(host, buildHost, ["/src/third"], { dry: false, force: false, verbose: false });
clearDiagnostics();
builder.buildAllProjects();
assertDiagnosticMessages(/*none*/);
});
after(() => {
fs = undefined;
});
it(`Generates files matching the baseline`, () => {
Harness.Baseline.runBaseline("outfile-concat.js", () => {
const patch = fs!.diff();
// tslint:disable-next-line:no-null-keyword
return patch ? vfs.formatPatch(patch) : null;
});
});
});
}
describe("tsbuild - graph-ordering", () => {
const fs = new vfs.FileSystem(false);
const host = new fakes.CompilerHost(fs);
let host: fakes.CompilerHost | undefined;
const deps: [string, string][] = [
["A", "B"],
["B", "C"],
@@ -280,7 +273,15 @@ namespace ts {
["F", "E"]
];
writeProjects(fs, ["A", "B", "C", "D", "E", "F", "G"], deps);
before(() => {
const fs = new vfs.FileSystem(false);
host = new fakes.CompilerHost(fs);
writeProjects(fs, ["A", "B", "C", "D", "E", "F", "G"], deps);
});
after(() => {
host = undefined;
});
it("orders the graph correctly - specify two roots", () => {
checkGraphOrdering(["A", "G"], ["A", "B", "C", "D", "E", "G"]);
@@ -299,7 +300,7 @@ namespace ts {
});
function checkGraphOrdering(rootNames: string[], expectedBuildSet: string[]) {
const builder = createSolutionBuilder(host, buildHost, rootNames, { dry: true, force: false, verbose: false });
const builder = createSolutionBuilder(host!, buildHost, rootNames, { dry: true, force: false, verbose: false });
const projFileNames = rootNames.map(getProjectFileName);
const graph = builder.getBuildGraph(projFileNames);
@@ -394,32 +395,17 @@ namespace ts {
}
function loadProjectFromDisk(root: string): vfs.FileSystem {
const fs = new vfs.FileSystem(/*ignoreCase*/ false, { time });
const rootPath = resolvePath(__dirname, root);
loadFsMirror(fs, rootPath, "/src");
fs.mkdirpSync("/lib");
const libs = ["es5", "dom", "webworker.importscripts", "scripthost"];
for (const lib of libs) {
const content = Harness.IO.readFile(combinePaths(Harness.libFolder, `lib.${lib}.d.ts`));
if (content === undefined) {
throw new Error(`Failed to read lib ${lib}`);
}
fs.writeFileSync(`/lib/lib.${lib}.d.ts`, content);
}
fs.writeFileSync("/lib/lib.d.ts", Harness.IO.readFile(combinePaths(Harness.libFolder, "lib.d.ts"))!);
fs.meta.set("defaultLibLocation", "/lib");
const resolver = vfs.createResolver(Harness.IO);
const fs = new vfs.FileSystem(/*ignoreCase*/ true, {
files: {
["/lib"]: new vfs.Mount(vpath.resolve(Harness.IO.getWorkspaceRoot(), "built/local"), resolver),
["/src"]: new vfs.Mount(vpath.resolve(Harness.IO.getWorkspaceRoot(), root), resolver)
},
cwd: "/",
meta: { defaultLibLocation: "/lib" },
time
});
fs.makeReadonly();
return fs;
}
function loadFsMirror(vfs: vfs.FileSystem, localRoot: string, virtualRoot: string) {
vfs.mkdirpSync(virtualRoot);
for (const path of Harness.IO.readDirectory(localRoot)) {
const file = getBaseFileName(path);
vfs.writeFileSync(virtualRoot + "/" + file, Harness.IO.readFile(localRoot + "/" + file)!);
}
for (const dir of Harness.IO.getDirectories(localRoot)) {
loadFsMirror(vfs, localRoot + "/" + dir, virtualRoot + "/" + dir);
}
}
}
+9 -2
View File
@@ -1,7 +1,14 @@
//// [tests/cases/compiler/APISample_Watch.ts] ////
//// [index.d.ts]
declare module "typescript" {
export = ts;
}
//// [APISample_Watch.ts]
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript-wiki/blob/master/Using-the-Compiler-API.md#writing-an-incremental-program-watcher
* at: https://github.com/Microsoft/TypeScript-wiki/blob/master/Using-the-Compiler-API.md#writing-an-incremental-program-watcher
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
@@ -79,7 +86,7 @@ watchMain();
"use strict";
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript-wiki/blob/master/Using-the-Compiler-API.md#writing-an-incremental-program-watcher
* at: https://github.com/Microsoft/TypeScript-wiki/blob/master/Using-the-Compiler-API.md#writing-an-incremental-program-watcher
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
exports.__esModule = true;
@@ -1,3 +1,10 @@
//// [tests/cases/compiler/APISample_WatchWithDefaults.ts] ////
//// [index.d.ts]
declare module "typescript" {
export = ts;
}
//// [APISample_WatchWithDefaults.ts]
/*
* Note: This test is a public API sample. This uses default sys interface without having to pass anything
@@ -1,6 +1,13 @@
//// [tests/cases/compiler/APISample_WatchWithOwnWatchHost.ts] ////
//// [index.d.ts]
declare module "typescript" {
export = ts;
}
//// [APISample_WatchWithOwnWatchHost.ts]
/*
* Note: This test is a public API sample. This sample verifies creating abstract builder to watch list of root files
* Note: This test is a public API sample. This sample verifies creating abstract builder to watch list of root files
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
@@ -1,7 +1,14 @@
//// [tests/cases/compiler/APISample_compile.ts] ////
//// [index.d.ts]
declare module "typescript" {
export = ts;
}
//// [APISample_compile.ts]
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler
* at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
@@ -42,7 +49,7 @@ compile(process.argv.slice(2), {
"use strict";
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler
* at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
exports.__esModule = true;
@@ -1,3 +1,10 @@
//// [tests/cases/compiler/APISample_jsdoc.ts] ////
//// [index.d.ts]
declare module "typescript" {
export = ts;
}
//// [APISample_jsdoc.ts]
/*
* Note: This test is a public API sample. The original sources can be found
+10 -3
View File
@@ -1,7 +1,14 @@
//// [tests/cases/compiler/APISample_linter.ts] ////
//// [index.d.ts]
declare module "typescript" {
export = ts;
}
//// [APISample_linter.ts]
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#traversing-the-ast-with-a-little-linter
* Note: This test is a public API sample. The sample sources can be found
* at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#traversing-the-ast-with-a-little-linter
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
@@ -67,7 +74,7 @@ fileNames.forEach(fileName => {
"use strict";
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#traversing-the-ast-with-a-little-linter
* at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#traversing-the-ast-with-a-little-linter
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
exports.__esModule = true;
@@ -1,7 +1,14 @@
//// [tests/cases/compiler/APISample_parseConfig.ts] ////
//// [index.d.ts]
declare module "typescript" {
export = ts;
}
//// [APISample_parseConfig.ts]
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler
* Note: This test is a public API sample. The sample sources can be found
* at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
@@ -39,7 +46,7 @@ export function createProgram(rootFiles: string[], compilerOptionsJson: string):
"use strict";
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler
* at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-minimal-compiler
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
exports.__esModule = true;
@@ -1,7 +1,14 @@
//// [tests/cases/compiler/APISample_transform.ts] ////
//// [index.d.ts]
declare module "typescript" {
export = ts;
}
//// [APISample_transform.ts]
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-simple-transform-function
* Note: This test is a public API sample. The sample sources can be found
* at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-simple-transform-function
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
@@ -19,7 +26,7 @@ console.log(JSON.stringify(result));
"use strict";
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-simple-transform-function
* at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-simple-transform-function
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
exports.__esModule = true;
@@ -1,7 +1,14 @@
//// [tests/cases/compiler/APISample_watcher.ts] ////
//// [index.d.ts]
declare module "typescript" {
export = ts;
}
//// [APISample_watcher.ts]
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#incremental-build-support-using-the-language-services
* at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#incremental-build-support-using-the-language-services
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
@@ -113,7 +120,7 @@ watch(currentDirectoryFiles, { module: ts.ModuleKind.CommonJS });
"use strict";
/*
* Note: This test is a public API sample. The sample sources can be found
at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#incremental-build-support-using-the-language-services
* at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#incremental-build-support-using-the-language-services
* Please log a "breaking change" issue for any API breaking change affecting this issue
*/
exports.__esModule = true;
File diff suppressed because one or more lines are too long
@@ -86,9 +86,9 @@ A.prototype = B.prototype = {
>A : typeof A
>prototype : { [x: string]: any; m(n: number): number; }
>B.prototype = { /** @param {number} n */ m(n) { return n + 1 }} : { [x: string]: any; m(n: number): number; }
>B.prototype : { [x: string]: any; m(n: number): number; }
>B.prototype : { [x: string]: any; }
>B : typeof B
>prototype : { [x: string]: any; m(n: number): number; }
>prototype : { [x: string]: any; }
>{ /** @param {number} n */ m(n) { return n + 1 }} : { [x: string]: any; m(n: number): number; }
/** @param {number} n */
@@ -24,7 +24,7 @@ exports.__esModule = true;
var foo_1 = require("foo");
var bar_1 = require("bar");
foo_1.x + bar_1.y;
//# sourceMappingURL=/app/myMapRoot/index.js.map
//# sourceMappingURL=../myMapRoot/index.js.map
//// [/app/bin/index.d.ts]
/// <reference path="../../types/bar.d.ts" />
@@ -1,2 +1,2 @@
//// [/app/bin/index.js.map]
{"version":3,"file":"index.js","sourceRoot":"/app/mySourceRoot/","sources":["index.ts"],"names":[],"mappings":";;AAAA,yCAAyC;AACzC,2BAAwB;AACxB,2BAAwB;AACxB,OAAC,GAAG,OAAC,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"mySourceRoot/","sources":["index.ts"],"names":[],"mappings":";;AAAA,yCAAyC;AACzC,2BAAwB;AACxB,2BAAwB;AACxB,OAAC,GAAG,OAAC,CAAC"}
@@ -1,7 +1,7 @@
===================================================================
JsFile: index.js
mapUrl: /app/myMapRoot/index.js.map
sourceRoot: /app/mySourceRoot/
mapUrl: ../myMapRoot/index.js.map
sourceRoot: mySourceRoot/
sources: index.ts
===================================================================
-------------------------------------------------------------------
@@ -43,7 +43,7 @@ sourceFile:index.ts
3 > ^^^
4 > ^^^^^^^
5 > ^
6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^->
6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^->
1 >
>
2 >x
@@ -56,4 +56,4 @@ sourceFile:index.ts
4 >Emitted(6, 18) Source(4, 6) + SourceIndex(0)
5 >Emitted(6, 19) Source(4, 7) + SourceIndex(0)
---
>>>//# sourceMappingURL=/app/myMapRoot/index.js.map
>>>//# sourceMappingURL=../myMapRoot/index.js.map
@@ -15,7 +15,7 @@ export const x = y;
exports.__esModule = true;
/// <reference path="../lib/bar.d.ts" />
exports.x = y;
//# sourceMappingURL=/app/myMapRoot/index.js.map
//# sourceMappingURL=../src/myMapRoot/index.js.map
//// [/app/bin/index.d.ts]
/// <reference path="../lib/bar.d.ts" />
@@ -1,2 +1,2 @@
//// [/app/bin/index.js.map]
{"version":3,"file":"index.js","sourceRoot":"/app/mySourceRoot/","sources":["index.ts"],"names":[],"mappings":";;AAAA,wCAAwC;AAC3B,QAAA,CAAC,GAAG,CAAC,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"mySourceRoot/","sources":["index.ts"],"names":[],"mappings":";;AAAA,wCAAwC;AAC3B,QAAA,CAAC,GAAG,CAAC,CAAC"}
@@ -1,7 +1,7 @@
===================================================================
JsFile: index.js
mapUrl: /app/myMapRoot/index.js.map
sourceRoot: /app/mySourceRoot/
mapUrl: ../src/myMapRoot/index.js.map
sourceRoot: mySourceRoot/
sources: index.ts
===================================================================
-------------------------------------------------------------------
@@ -25,7 +25,7 @@ sourceFile:index.ts
4 > ^^^
5 > ^
6 > ^
7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^->
7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^->
1 >
>export const
2 >
@@ -40,4 +40,4 @@ sourceFile:index.ts
5 >Emitted(4, 14) Source(2, 19) + SourceIndex(0)
6 >Emitted(4, 15) Source(2, 20) + SourceIndex(0)
---
>>>//# sourceMappingURL=/app/myMapRoot/index.js.map
>>>//# sourceMappingURL=../src/myMapRoot/index.js.map
@@ -0,0 +1,9 @@
//// [es2018ObjectAssign.ts]
const test = Object.assign({}, { test: true });
declare const p: Promise<number>;
p.finally();
//// [es2018ObjectAssign.js]
const test = Object.assign({}, { test: true });
p.finally();
@@ -0,0 +1,17 @@
=== tests/cases/compiler/es2018ObjectAssign.ts ===
const test = Object.assign({}, { test: true });
>test : Symbol(test, Decl(es2018ObjectAssign.ts, 0, 5))
>Object.assign : Symbol(ObjectConstructor.assign, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
>Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
>assign : Symbol(ObjectConstructor.assign, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
>test : Symbol(test, Decl(es2018ObjectAssign.ts, 0, 32))
declare const p: Promise<number>;
>p : Symbol(p, Decl(es2018ObjectAssign.ts, 2, 13))
>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2018.promise.d.ts, --, --))
p.finally();
>p.finally : Symbol(Promise.finally, Decl(lib.es2018.promise.d.ts, --, --))
>p : Symbol(p, Decl(es2018ObjectAssign.ts, 2, 13))
>finally : Symbol(Promise.finally, Decl(lib.es2018.promise.d.ts, --, --))
@@ -0,0 +1,22 @@
=== tests/cases/compiler/es2018ObjectAssign.ts ===
const test = Object.assign({}, { test: true });
>test : { test: boolean; }
>Object.assign({}, { test: true }) : { test: boolean; }
>Object.assign : { <T, U>(target: T, source: U): T & U; <T, U, V>(target: T, source1: U, source2: V): T & U & V; <T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W; (target: object, ...sources: any[]): any; }
>Object : ObjectConstructor
>assign : { <T, U>(target: T, source: U): T & U; <T, U, V>(target: T, source1: U, source2: V): T & U & V; <T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W; (target: object, ...sources: any[]): any; }
>{} : {}
>{ test: true } : { test: true; }
>test : true
>true : true
declare const p: Promise<number>;
>p : Promise<number>
>Promise : Promise<T>
p.finally();
>p.finally() : Promise<number>
>p.finally : (onfinally?: () => void) => Promise<number>
>p : Promise<number>
>finally : (onfinally?: () => void) => Promise<number>
@@ -12,7 +12,7 @@ exports.n.K = function () {
>K : Symbol(n.K, Decl(mod.js, 0, 15))
this.x = 10;
>this : Symbol(__object, Decl(mod.js, 0, 11))
>this : Symbol(n, Decl(mod.js, 0, 0), Decl(mod.js, 1, 8))
>x : Symbol(K.x, Decl(mod.js, 1, 27))
}
exports.Classic = class {
@@ -1,24 +1,24 @@
=== tests/cases/conformance/salsa/mod.js ===
exports.n = {};
>exports.n = {} : { [x: string]: any; K: typeof K; }
>exports.n : { [x: string]: any; K: typeof K; }
>exports.n = {} : typeof n
>exports.n : typeof n
>exports : typeof import("tests/cases/conformance/salsa/mod")
>n : { [x: string]: any; K: typeof K; }
>{} : { [x: string]: any; K: typeof K; }
>n : typeof n
>{} : { [x: string]: any; }
exports.n.K = function () {
>exports.n.K = function () { this.x = 10;} : typeof K
>exports.n.K : typeof K
>exports.n : { [x: string]: any; K: typeof K; }
>exports.n : typeof n
>exports : typeof import("tests/cases/conformance/salsa/mod")
>n : { [x: string]: any; K: typeof K; }
>n : typeof n
>K : typeof K
>function () { this.x = 10;} : typeof K
this.x = 10;
>this.x = 10 : 10
>this.x : any
>this : { [x: string]: any; K: typeof K; }
>this : typeof n
>x : any
>10 : 10
}
@@ -47,9 +47,9 @@ var k = new s.n.K()
>k : K
>new s.n.K() : K
>s.n.K : typeof K
>s.n : { [x: string]: any; K: typeof K; }
>s.n : typeof s.n
>s : typeof s
>n : { [x: string]: any; K: typeof K; }
>n : typeof s.n
>K : typeof K
k.x
@@ -1,13 +1,13 @@
=== tests/cases/conformance/salsa/a.js ===
// #24131
const a = {};
>a : { [x: string]: any; d: { (): void; prototype: { [x: string]: any; }; }; }
>{} : { [x: string]: any; d: { (): void; prototype: { [x: string]: any; }; }; }
>a : typeof a
>{} : { [x: string]: any; }
a.d = function() {};
>a.d = function() {} : { (): void; prototype: { [x: string]: any; }; }
>a.d : { (): void; prototype: { [x: string]: any; }; }
>a : { [x: string]: any; d: { (): void; prototype: { [x: string]: any; }; }; }
>a : typeof a
>d : { (): void; prototype: { [x: string]: any; }; }
>function() {} : { (): void; prototype: { [x: string]: any; }; }
@@ -16,7 +16,7 @@ a.d.prototype = {};
>a.d.prototype = {} : { [x: string]: any; }
>a.d.prototype : { [x: string]: any; }
>a.d : { (): void; prototype: { [x: string]: any; }; }
>a : { [x: string]: any; d: { (): void; prototype: { [x: string]: any; }; }; }
>a : typeof a
>d : { (): void; prototype: { [x: string]: any; }; }
>prototype : { [x: string]: any; }
>{} : { [x: string]: any; }
@@ -5,7 +5,7 @@ declare class A {}
=== tests/cases/conformance/salsa/b.js ===
const A = { };
>A : typeof A
>{ } : { [x: string]: any; prototype: A; d: { [x: string]: any; }; }
>{ } : { [x: string]: any; }
A.d = { };
>A.d = { } : { [x: string]: any; }
@@ -1,7 +1,7 @@
=== tests/cases/conformance/salsa/a.js ===
var variable = {};
>variable : { [x: string]: any; a: number; }
>{} : { [x: string]: any; a: number; }
>{} : { [x: string]: any; }
variable.a = 0;
>variable.a = 0 : 0
@@ -1,12 +1,12 @@
=== tests/cases/conformance/salsa/mod.js ===
module.exports.n = {};
>module.exports.n = {} : { [x: string]: any; K: typeof C; }
>module.exports.n = {} : any
>module.exports.n : any
>module.exports : any
>module : any
>exports : any
>n : any
>{} : { [x: string]: any; K: typeof C; }
>{} : { [x: string]: any; }
module.exports.n.K = function C() {
>module.exports.n.K = function C() { this.x = 10;} : typeof C
@@ -54,9 +54,9 @@ var k = new s.n.K()
>k : C
>new s.n.K() : C
>s.n.K : typeof C
>s.n : { [x: string]: any; K: typeof C; }
>s.n : typeof s.n
>s : typeof s
>n : { [x: string]: any; K: typeof C; }
>n : typeof s.n
>K : typeof C
k.x
@@ -1,19 +1,19 @@
=== tests/cases/conformance/salsa/mod.js ===
// #24111 -- shouldn't assert
C.prototype = {}
>C.prototype = {} : { [x: string]: any; bar: typeof C.prototype.bar; }
>C.prototype : { [x: string]: any; bar: typeof C.prototype.bar; }
>C.prototype = {} : typeof C.prototype
>C.prototype : typeof C.prototype
>C : typeof C
>prototype : { [x: string]: any; bar: typeof C.prototype.bar; }
>{} : { [x: string]: any; bar: typeof C.prototype.bar; }
>prototype : typeof C.prototype
>{} : { [x: string]: any; }
C.prototype.bar.foo = {};
>C.prototype.bar.foo = {} : { [x: string]: any; }
>C.prototype.bar.foo : { [x: string]: any; }
>C.prototype.bar : typeof C.prototype.bar
>C.prototype : { [x: string]: any; bar: typeof C.prototype.bar; }
>C.prototype : typeof C.prototype
>C : typeof C
>prototype : { [x: string]: any; bar: typeof C.prototype.bar; }
>prototype : typeof C.prototype
>bar : typeof C.prototype.bar
>foo : { [x: string]: any; }
>{} : { [x: string]: any; }
@@ -1,43 +0,0 @@
*/
/lib/
/lib/lib.d.ts
/lib/lib.dom.d.ts
/lib/lib.es5.d.ts
/lib/lib.scripthost.d.ts
/lib/lib.webworker.importscripts.d.ts
/src/
/src/2/
/src/2/second-output.d.ts
/src/2/second-output.d.ts.map
/src/2/second-output.js
/src/2/second-output.js.map
/src/first/
/src/first/bin/
/src/first/bin/first-output.d.ts
/src/first/bin/first-output.d.ts.map
/src/first/bin/first-output.js
/src/first/bin/first-output.js.map
/src/first/first_part1.ts
/src/first/first_part2.ts
/src/first/first_part3.ts
/src/first/tsconfig.json
/src/first_part1.ts
/src/first_part2.ts
/src/first_part3.ts
/src/second/
/src/second/second_part1.ts
/src/second/second_part2.ts
/src/second/tsconfig.json
/src/second_part1.ts
/src/second_part2.ts
/src/third/
/src/third/third_part1.ts
/src/third/thirdjs/
/src/third/thirdjs/output/
/src/third/thirdjs/output/third-output.d.ts
/src/third/thirdjs/output/third-output.d.ts.map
/src/third/thirdjs/output/third-output.js
/src/third/thirdjs/output/third-output.js.map
/src/third/tsconfig.json
/src/third_part1.ts
/src/tsconfig.json
+90 -1
View File
@@ -1,3 +1,88 @@
//// [/src/2/second-output.d.ts]
declare namespace N {
}
declare namespace N {
}
declare class C {
doSomething(): void;
}
//# sourceMappingURL=second-output.d.ts.map
//// [/src/2/second-output.d.ts.map]
{"version":3,"file":"second-output.d.ts","sourceRoot":"","sources":["../second/second_part1.ts","../second/second_part2.ts"],"names":[],"mappings":"AAAA,kBAAU,CAAC,CAAC;CAEX;AAED,kBAAU,CAAC,CAAC;CAMX;ACVD;IACI,WAAW;CAGd"}
//// [/src/2/second-output.js]
var N;
(function (N) {
function f() {
console.log('testing');
}
f();
})(N || (N = {}));
var C = (function () {
function C() {
}
C.prototype.doSomething = function () {
console.log("something got done");
};
return C;
}());
//# sourceMappingURL=second-output.js.map
//// [/src/2/second-output.js.map]
{"version":3,"file":"second-output.js","sourceRoot":"","sources":["../second/second_part1.ts","../second/second_part2.ts"],"names":[],"mappings":"AAIA,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;IACP;QACI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,CAAC,EAAE,CAAC;AACR,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;ACVD;IAAA;IAIA,CAAC;IAHG,uBAAW,GAAX;QACI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACtC,CAAC;IACL,QAAC;AAAD,CAAC,AAJD,IAIC"}
//// [/src/first/bin/first-output.d.ts]
interface TheFirst {
none: any;
}
declare const s = "Hello, world";
interface NoJsForHereEither {
none: any;
}
declare function f(): string;
//# sourceMappingURL=first-output.d.ts.map
//// [/src/first/bin/first-output.d.ts.map]
{"version":3,"file":"first-output.d.ts","sourceRoot":"","sources":["../first_part1.ts","../first_part2.ts","../first_part3.ts"],"names":[],"mappings":"AAAA,UAAU,QAAQ;IACd,IAAI,EAAE,GAAG,CAAC;CACb;AAED,QAAA,MAAM,CAAC,iBAAiB,CAAC;AAEzB,UAAU,iBAAiB;IACvB,IAAI,EAAE,GAAG,CAAC;CACb;AERD,6BAEC"}
//// [/src/first/bin/first-output.js]
var s = "Hello, world";
console.log(s);
console.log(f());
function f() {
return "JS does hoists";
}
//# sourceMappingURL=first-output.js.map
//// [/src/first/bin/first-output.js.map]
{"version":3,"file":"first-output.js","sourceRoot":"","sources":["../first_part1.ts","../first_part2.ts","../first_part3.ts"],"names":[],"mappings":"AAIA,IAAM,CAAC,GAAG,cAAc,CAAC;AAMzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;ACVf,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;ACAjB;IACI,OAAO,gBAAgB,CAAC;AAC5B,CAAC"}
//// [/src/third/thirdjs/output/third-output.d.ts]
interface TheFirst {
none: any;
}
declare const s = "Hello, world";
interface NoJsForHereEither {
none: any;
}
declare function f(): string;
//# sourceMappingURL=first-output.d.ts.map
declare namespace N {
}
declare namespace N {
}
declare class C {
doSomething(): void;
}
//# sourceMappingURL=second-output.d.ts.map
declare var c: C;
//# sourceMappingURL=third-output.d.ts.map
//// [/src/third/thirdjs/output/third-output.d.ts.map]
{"version":3,"file":"third-output.d.ts","sections":[{"offset":{"line":0,"column":0},"map":{"version":3,"file":"first-output.d.ts","sourceRoot":"","sources":["../first_part1.ts","../first_part2.ts","../first_part3.ts"],"names":[],"mappings":"AAAA,UAAU,QAAQ;IACd,IAAI,EAAE,GAAG,CAAC;CACb;AAED,QAAA,MAAM,CAAC,iBAAiB,CAAC;AAEzB,UAAU,iBAAiB;IACvB,IAAI,EAAE,GAAG,CAAC;CACb;AERD,6BAEC"}},{"offset":{"line":9,"column":0},"map":{"version":3,"file":"second-output.d.ts","sourceRoot":"","sources":["../second/second_part1.ts","../second/second_part2.ts"],"names":[],"mappings":"AAAA,kBAAU,CAAC,CAAC;CAEX;AAED,kBAAU,CAAC,CAAC;CAMX;ACVD;IACI,WAAW;CAGd"}},{"offset":{"line":16,"column":43},"map":{"version":3,"file":"third-output.d.ts","sourceRoot":"","sources":["../../third_part1.ts"],"names":[],"mappings":";AAAA,QAAA,IAAI,CAAC,GAAU,CAAC"}}]}
//// [/src/third/thirdjs/output/third-output.js]
var s = "Hello, world";
console.log(s);
console.log(f());
@@ -23,4 +108,8 @@ var C = (function () {
//# sourceMappingURL=second-output.js.map
var c = new C();
c.doSomething();
//# sourceMappingURL=third-output.js.map
//# sourceMappingURL=third-output.js.map
//// [/src/third/thirdjs/output/third-output.js.map]
{"version":3,"file":"third-output.js","sections":[{"offset":{"line":0,"column":0},"map":{"version":3,"file":"first-output.js","sourceRoot":"","sources":["../first_part1.ts","../first_part2.ts","../first_part3.ts"],"names":[],"mappings":"AAIA,IAAM,CAAC,GAAG,cAAc,CAAC;AAMzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;ACVf,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;ACAjB;IACI,OAAO,gBAAgB,CAAC;AAC5B,CAAC"}},{"offset":{"line":7,"column":0},"map":{"version":3,"file":"second-output.js","sourceRoot":"","sources":["../second/second_part1.ts","../second/second_part2.ts"],"names":[],"mappings":"AAIA,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;IACP;QACI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,CAAC,EAAE,CAAC;AACR,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;ACVD;IAAA;IAIA,CAAC;IAHG,uBAAW,GAAX;QACI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACtC,CAAC;IACL,QAAC;AAAD,CAAC,AAJD,IAIC"}},{"offset":{"line":22,"column":41},"map":{"version":3,"file":"third-output.js","sourceRoot":"","sources":["../../third_part1.ts"],"names":[],"mappings":";AAAA,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAChB,CAAC,CAAC,WAAW,EAAE,CAAC"}}]}
@@ -1 +0,0 @@
{"version":3,"file":"third-output.js","sections":[{"offset":{"line":0,"column":0},"map":{"version":3,"file":"first-output.js","sourceRoot":"","sources":["first_part1.ts","first_part2.ts","first_part3.ts"],"names":[],"mappings":"AAIA,IAAM,CAAC,GAAG,cAAc,CAAC;AAMzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;ACVf,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;ACAjB;IACI,OAAO,gBAAgB,CAAC;AAC5B,CAAC"}},{"offset":{"line":7,"column":0},"map":{"version":3,"file":"second-output.js","sourceRoot":"","sources":["second_part1.ts","second_part2.ts"],"names":[],"mappings":"AAIA,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;IACP;QACI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,CAAC,EAAE,CAAC;AACR,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;ACVD;IAAA;IAIA,CAAC;IAHG,uBAAW,GAAX;QACI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACtC,CAAC;IACL,QAAC;AAAD,CAAC,AAJD,IAIC"}},{"offset":{"line":22,"column":41},"map":{"version":3,"file":"third-output.js","sourceRoot":"","sources":["third_part1.ts"],"names":[],"mappings":";AAAA,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAChB,CAAC,CAAC,WAAW,EAAE,CAAC"}}]}
@@ -0,0 +1,116 @@
//// [tests/cases/compiler/symbolLinkDeclarationEmitModuleNames.ts] ////
//// [application.ts]
import { Constructor } from "@loopback/context";
export type ControllerClass = Constructor<any>;
//// [usage.ts]
import { ControllerClass } from './application';
import { BindingKey } from '@loopback/context';
export const CONTROLLER_CLASS = BindingKey.create<ControllerClass>(null as any); // line in question
//// [value-promise.ts]
export type Constructor<T> = (...args: any[]) => T;
//// [bindingkey.ts]
import { Constructor } from "@loopback/context"
export class BindingKey<T> {
readonly __type: T;
static create<T extends Constructor<any>>(ctor: T) {
return new BindingKey<T>();
}
}
//// [index.ts]
export * from "./src/value-promise";
export * from "./src/bindingkey";
//// [value-promise.js]
"use strict";
exports.__esModule = true;
//// [bindingkey.js]
"use strict";
exports.__esModule = true;
var BindingKey = /** @class */ (function () {
function BindingKey() {
}
BindingKey.create = function (ctor) {
return new BindingKey();
};
return BindingKey;
}());
exports.BindingKey = BindingKey;
//// [index.js]
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
exports.__esModule = true;
__export(require("./src/bindingkey"));
//// [application.js]
"use strict";
exports.__esModule = true;
//// [usage.js]
"use strict";
exports.__esModule = true;
var context_1 = require("@loopback/context");
exports.CONTROLLER_CLASS = context_1.BindingKey.create(null); // line in question
//// [value-promise.d.ts]
export declare type Constructor<T> = (...args: any[]) => T;
//// [bindingkey.d.ts]
import { Constructor } from "@loopback/context";
export declare class BindingKey<T> {
readonly __type: T;
static create<T extends Constructor<any>>(ctor: T): BindingKey<T>;
}
//// [index.d.ts]
export * from "./src/value-promise";
export * from "./src/bindingkey";
//// [application.d.ts]
import { Constructor } from "@loopback/context";
export declare type ControllerClass = Constructor<any>;
//// [usage.d.ts]
import { BindingKey } from '@loopback/context';
export declare const CONTROLLER_CLASS: BindingKey<import("@loopback/context/src/value-promise").Constructor<any>>;
//// [DtsFileErrors]
tests/cases/compiler/monorepo/context/src/bindingkey.d.ts(1,29): error TS2307: Cannot find module '@loopback/context'.
tests/cases/compiler/monorepo/core/src/application.d.ts(1,29): error TS2307: Cannot find module '@loopback/context'.
tests/cases/compiler/monorepo/core/src/usage.d.ts(1,28): error TS2307: Cannot find module '@loopback/context'.
tests/cases/compiler/monorepo/core/src/usage.d.ts(2,51): error TS2307: Cannot find module '@loopback/context/src/value-promise'.
==== tests/cases/compiler/monorepo/core/src/application.d.ts (1 errors) ====
import { Constructor } from "@loopback/context";
~~~~~~~~~~~~~~~~~~~
!!! error TS2307: Cannot find module '@loopback/context'.
export declare type ControllerClass = Constructor<any>;
==== tests/cases/compiler/monorepo/core/src/usage.d.ts (2 errors) ====
import { BindingKey } from '@loopback/context';
~~~~~~~~~~~~~~~~~~~
!!! error TS2307: Cannot find module '@loopback/context'.
export declare const CONTROLLER_CLASS: BindingKey<import("@loopback/context/src/value-promise").Constructor<any>>;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2307: Cannot find module '@loopback/context/src/value-promise'.
==== /.src/tests/cases/compiler/monorepo/context/src/value-promise.d.ts (0 errors) ====
export declare type Constructor<T> = (...args: any[]) => T;
==== /.src/tests/cases/compiler/monorepo/context/src/bindingkey.d.ts (1 errors) ====
import { Constructor } from "@loopback/context";
~~~~~~~~~~~~~~~~~~~
!!! error TS2307: Cannot find module '@loopback/context'.
export declare class BindingKey<T> {
readonly __type: T;
static create<T extends Constructor<any>>(ctor: T): BindingKey<T>;
}
==== /.src/tests/cases/compiler/monorepo/context/index.d.ts (0 errors) ====
export * from "./src/value-promise";
export * from "./src/bindingkey";
@@ -0,0 +1,59 @@
=== tests/cases/compiler/monorepo/core/src/application.ts ===
import { Constructor } from "@loopback/context";
>Constructor : Symbol(Constructor, Decl(application.ts, 0, 8))
export type ControllerClass = Constructor<any>;
>ControllerClass : Symbol(ControllerClass, Decl(application.ts, 0, 48))
>Constructor : Symbol(Constructor, Decl(application.ts, 0, 8))
=== tests/cases/compiler/monorepo/core/src/usage.ts ===
import { ControllerClass } from './application';
>ControllerClass : Symbol(ControllerClass, Decl(usage.ts, 0, 8))
import { BindingKey } from '@loopback/context';
>BindingKey : Symbol(BindingKey, Decl(usage.ts, 1, 8))
export const CONTROLLER_CLASS = BindingKey.create<ControllerClass>(null as any); // line in question
>CONTROLLER_CLASS : Symbol(CONTROLLER_CLASS, Decl(usage.ts, 3, 12))
>BindingKey.create : Symbol(BindingKey.create, Decl(bindingkey.ts, 2, 21))
>BindingKey : Symbol(BindingKey, Decl(usage.ts, 1, 8))
>create : Symbol(BindingKey.create, Decl(bindingkey.ts, 2, 21))
>ControllerClass : Symbol(ControllerClass, Decl(usage.ts, 0, 8))
=== tests/cases/compiler/monorepo/context/src/value-promise.ts ===
export type Constructor<T> = (...args: any[]) => T;
>Constructor : Symbol(Constructor, Decl(value-promise.ts, 0, 0))
>T : Symbol(T, Decl(value-promise.ts, 0, 24))
>args : Symbol(args, Decl(value-promise.ts, 0, 30))
>T : Symbol(T, Decl(value-promise.ts, 0, 24))
=== tests/cases/compiler/monorepo/context/src/bindingkey.ts ===
import { Constructor } from "@loopback/context"
>Constructor : Symbol(Constructor, Decl(bindingkey.ts, 0, 8))
export class BindingKey<T> {
>BindingKey : Symbol(BindingKey, Decl(bindingkey.ts, 0, 47))
>T : Symbol(T, Decl(bindingkey.ts, 1, 24))
readonly __type: T;
>__type : Symbol(BindingKey.__type, Decl(bindingkey.ts, 1, 28))
>T : Symbol(T, Decl(bindingkey.ts, 1, 24))
static create<T extends Constructor<any>>(ctor: T) {
>create : Symbol(BindingKey.create, Decl(bindingkey.ts, 2, 21))
>T : Symbol(T, Decl(bindingkey.ts, 3, 16))
>Constructor : Symbol(Constructor, Decl(bindingkey.ts, 0, 8))
>ctor : Symbol(ctor, Decl(bindingkey.ts, 3, 44))
>T : Symbol(T, Decl(bindingkey.ts, 3, 16))
return new BindingKey<T>();
>BindingKey : Symbol(BindingKey, Decl(bindingkey.ts, 0, 47))
>T : Symbol(T, Decl(bindingkey.ts, 3, 16))
}
}
=== tests/cases/compiler/monorepo/context/index.ts ===
export * from "./src/value-promise";
No type information for this code.export * from "./src/bindingkey";
No type information for this code.
No type information for this code.
@@ -0,0 +1,63 @@
=== tests/cases/compiler/monorepo/core/src/application.ts ===
import { Constructor } from "@loopback/context";
>Constructor : any
export type ControllerClass = Constructor<any>;
>ControllerClass : Constructor<any>
>Constructor : Constructor<T>
=== tests/cases/compiler/monorepo/core/src/usage.ts ===
import { ControllerClass } from './application';
>ControllerClass : any
import { BindingKey } from '@loopback/context';
>BindingKey : typeof BindingKey
export const CONTROLLER_CLASS = BindingKey.create<ControllerClass>(null as any); // line in question
>CONTROLLER_CLASS : BindingKey<import("tests/cases/compiler/monorepo/context/src/value-promise").Constructor<any>>
>BindingKey.create<ControllerClass>(null as any) : BindingKey<import("tests/cases/compiler/monorepo/context/src/value-promise").Constructor<any>>
>BindingKey.create : <T extends import("tests/cases/compiler/monorepo/context/src/value-promise").Constructor<any>>(ctor: T) => BindingKey<T>
>BindingKey : typeof BindingKey
>create : <T extends import("tests/cases/compiler/monorepo/context/src/value-promise").Constructor<any>>(ctor: T) => BindingKey<T>
>ControllerClass : import("tests/cases/compiler/monorepo/context/src/value-promise").Constructor<any>
>null as any : any
>null : null
=== tests/cases/compiler/monorepo/context/src/value-promise.ts ===
export type Constructor<T> = (...args: any[]) => T;
>Constructor : Constructor<T>
>T : T
>args : any[]
>T : T
=== tests/cases/compiler/monorepo/context/src/bindingkey.ts ===
import { Constructor } from "@loopback/context"
>Constructor : any
export class BindingKey<T> {
>BindingKey : BindingKey<T>
>T : T
readonly __type: T;
>__type : T
>T : T
static create<T extends Constructor<any>>(ctor: T) {
>create : <T extends Constructor<any>>(ctor: T) => BindingKey<T>
>T : T
>Constructor : Constructor<T>
>ctor : T
>T : T
return new BindingKey<T>();
>new BindingKey<T>() : BindingKey<T>
>BindingKey : typeof BindingKey
>T : T
}
}
=== tests/cases/compiler/monorepo/context/index.ts ===
export * from "./src/value-promise";
No type information for this code.export * from "./src/bindingkey";
No type information for this code.
No type information for this code.
-26
View File
@@ -1,26 +0,0 @@
var s = "Hello, world";
console.log(s);
console.log(f());
function f() {
return "JS does hoists";
}
//# sourceMappingURL=first-output.js.map
var N;
(function (N) {
function f() {
console.log('testing');
}
f();
})(N || (N = {}));
var C = (function () {
function C() {
}
C.prototype.doSomething = function () {
console.log("something got done");
};
return C;
}());
//# sourceMappingURL=second-output.js.map
var c = new C();
c.doSomething();
//# sourceMappingURL=third-output.js.map
@@ -1 +0,0 @@
{"version":3,"file":"third-output.js","sections":[{"offset":{"line":0,"column":0},"map":{"version":3,"file":"first-output.js","sourceRoot":"","sources":["../first_part1.ts","../first_part2.ts","../first_part3.ts"],"names":[],"mappings":"AAIA,IAAM,CAAC,GAAG,cAAc,CAAC;AAMzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;ACVf,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;ACAjB;IACI,OAAO,gBAAgB,CAAC;AAC5B,CAAC"}},{"offset":{"line":7,"column":0},"map":{"version":3,"file":"second-output.js","sourceRoot":"","sources":["../second/second_part1.ts","../second/second_part2.ts"],"names":[],"mappings":"AAIA,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;IACP;QACI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,CAAC,EAAE,CAAC;AACR,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;ACVD;IAAA;IAIA,CAAC;IAHG,uBAAW,GAAX;QACI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACtC,CAAC;IACL,QAAC;AAAD,CAAC,AAJD,IAIC"}},{"offset":{"line":22,"column":41},"map":{"version":3,"file":"third-output.js","sourceRoot":"","sources":["../../third_part1.ts"],"names":[],"mappings":";AAAA,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAChB,CAAC,CAAC,WAAW,EAAE,CAAC"}}]}
@@ -0,0 +1,32 @@
=== tests/cases/conformance/jsdoc/a.js ===
/** @this {{ n: number }} Mount Holyoke Preparatory School
* @param {string} s
* @return {number}
*/
function f(s) {
>f : Symbol(f, Decl(a.js, 0, 0))
>s : Symbol(s, Decl(a.js, 4, 11))
return this.n + s.length
>this.n : Symbol(n, Decl(a.js, 0, 12))
>this : Symbol(__type, Decl(a.js, 0, 11))
>n : Symbol(n, Decl(a.js, 0, 12))
>s.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --))
>s : Symbol(s, Decl(a.js, 4, 11))
>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --))
}
const o = {
>o : Symbol(o, Decl(a.js, 8, 5))
f,
>f : Symbol(f, Decl(a.js, 8, 11))
n: 1
>n : Symbol(n, Decl(a.js, 9, 6))
}
o.f('hi')
>o.f : Symbol(f, Decl(a.js, 8, 11))
>o : Symbol(o, Decl(a.js, 8, 5))
>f : Symbol(f, Decl(a.js, 8, 11))
+37
View File
@@ -0,0 +1,37 @@
=== tests/cases/conformance/jsdoc/a.js ===
/** @this {{ n: number }} Mount Holyoke Preparatory School
* @param {string} s
* @return {number}
*/
function f(s) {
>f : (s: string) => number
>s : string
return this.n + s.length
>this.n + s.length : number
>this.n : number
>this : { n: number; }
>n : number
>s.length : number
>s : string
>length : number
}
const o = {
>o : { [x: string]: any; f: (s: string) => number; n: number; }
>{ f, n: 1} : { [x: string]: any; f: (s: string) => number; n: number; }
f,
>f : (s: string) => number
n: 1
>n : number
>1 : 1
}
o.f('hi')
>o.f('hi') : number
>o.f : (s: string) => number
>o : { [x: string]: any; f: (s: string) => number; n: number; }
>f : (s: string) => number
>'hi' : "hi"
@@ -47,8 +47,8 @@
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
@@ -47,8 +47,8 @@
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
@@ -47,8 +47,8 @@
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
@@ -47,8 +47,8 @@
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
@@ -47,8 +47,8 @@
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
@@ -47,8 +47,8 @@
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
@@ -47,8 +47,8 @@
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
@@ -47,8 +47,8 @@
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
@@ -47,8 +47,8 @@
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
@@ -1,28 +1,28 @@
=== tests/cases/conformance/salsa/module.js ===
var Outer = Outer || {};
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>Outer || {} : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>{} : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>Outer : typeof Outer
>Outer || {} : typeof Outer | { [x: string]: any; }
>Outer : typeof Outer
>{} : { [x: string]: any; }
Outer.app = Outer.app || {};
>Outer.app = Outer.app || {} : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app || {} : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>{} : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app = Outer.app || {} : typeof Outer.app
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>Outer.app || {} : { [x: string]: any; }
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>{} : { [x: string]: any; }
=== tests/cases/conformance/salsa/someview.js ===
Outer.app.SomeView = (function () {
>Outer.app.SomeView = (function () { var SomeView = function() { var me = this; } return SomeView;})() : () => void
>Outer.app.SomeView : () => void
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>SomeView : () => void
>(function () { var SomeView = function() { var me = this; } return SomeView;})() : () => void
>(function () { var SomeView = function() { var me = this; } return SomeView;}) : () => () => void
@@ -43,9 +43,9 @@ Outer.app.SomeView = (function () {
Outer.app.Inner = class {
>Outer.app.Inner = class { constructor() { /** @type {number} */ this.y = 12; }} : typeof Inner
>Outer.app.Inner : typeof Inner
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>Inner : typeof Inner
>class { constructor() { /** @type {number} */ this.y = 12; }} : typeof Inner
@@ -63,9 +63,9 @@ var example = new Outer.app.Inner();
>example : Inner
>new Outer.app.Inner() : Inner
>Outer.app.Inner : typeof Inner
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>Inner : typeof Inner
example.y;
@@ -77,9 +77,9 @@ example.y;
Outer.app.statische = function (k) {
>Outer.app.statische = function (k) { return k ** k;} : (k: number) => number
>Outer.app.statische : (k: number) => number
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>statische : (k: number) => number
>function (k) { return k ** k;} : (k: number) => number
>k : number
@@ -93,9 +93,9 @@ Outer.app.statische = function (k) {
Outer.app.Application = (function () {
>Outer.app.Application = (function () { /** * Application main class. * Will be instantiated & initialized by HTML page */ var Application = function () { var me = this; me.view = new Outer.app.SomeView(); }; return Application;})() : () => void
>Outer.app.Application : () => void
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>Application : () => void
>(function () { /** * Application main class. * Will be instantiated & initialized by HTML page */ var Application = function () { var me = this; me.view = new Outer.app.SomeView(); }; return Application;})() : () => void
>(function () { /** * Application main class. * Will be instantiated & initialized by HTML page */ var Application = function () { var me = this; me.view = new Outer.app.SomeView(); }; return Application;}) : () => () => void
@@ -120,9 +120,9 @@ Outer.app.Application = (function () {
>view : any
>new Outer.app.SomeView() : any
>Outer.app.SomeView : () => void
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>SomeView : () => void
};
@@ -135,18 +135,18 @@ var app = new Outer.app.Application();
>app : any
>new Outer.app.Application() : any
>Outer.app.Application : () => void
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>Application : () => void
var inner = new Outer.app.Inner();
>inner : Inner
>new Outer.app.Inner() : Inner
>Outer.app.Inner : typeof Inner
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>Inner : typeof Inner
inner.y;
@@ -166,9 +166,9 @@ x.y;
Outer.app.statische(101); // Infinity, duh
>Outer.app.statische(101) : number
>Outer.app.statische : (k: number) => number
>Outer.app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer : { [x: string]: any; app: { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }; }
>app : { [x: string]: any; SomeView: () => void; Inner: typeof Inner; statische(k: number): number; Application: () => void; }
>Outer.app : typeof Outer.app
>Outer : typeof Outer
>app : typeof Outer.app
>statische : (k: number) => number
>101 : 101
@@ -5,9 +5,9 @@ var Inner = function() {}
Inner.prototype = {
>Inner.prototype = { m() { }, i: 1} : { [x: string]: any; m(): void; i: number; }
>Inner.prototype : { [x: string]: any; m(): void; i: number; }
>Inner.prototype : { [x: string]: any; }
>Inner : typeof Inner
>prototype : { [x: string]: any; m(): void; i: number; }
>prototype : { [x: string]: any; }
>{ m() { }, i: 1} : { [x: string]: any; m(): void; i: number; }
m() { },
@@ -21,18 +21,18 @@ Inner.prototype = {
Inner.prototype.j = 2
>Inner.prototype.j = 2 : 2
>Inner.prototype.j : any
>Inner.prototype : { [x: string]: any; m(): void; i: number; }
>Inner.prototype : { [x: string]: any; }
>Inner : typeof Inner
>prototype : { [x: string]: any; m(): void; i: number; }
>prototype : { [x: string]: any; }
>j : any
>2 : 2
/** @type {string} */
Inner.prototype.k;
>Inner.prototype.k : any
>Inner.prototype : { [x: string]: any; m(): void; i: number; }
>Inner.prototype : { [x: string]: any; }
>Inner : typeof Inner
>prototype : { [x: string]: any; m(): void; i: number; }
>prototype : { [x: string]: any; }
>k : any
var inner = new Inner()
@@ -1,22 +1,22 @@
=== tests/cases/conformance/salsa/module.js ===
var Outer = {}
>Outer : { [x: string]: any; Inner: typeof Inner; }
>{} : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>{} : { [x: string]: any; }
Outer.Inner = function() {}
>Outer.Inner = function() {} : typeof Inner
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
>function() {} : typeof Inner
Outer.Inner.prototype = {
>Outer.Inner.prototype = { m() { }, i: 1} : { [x: string]: any; m(): void; i: number; }
>Outer.Inner.prototype : { [x: string]: any; m(): void; i: number; }
>Outer.Inner.prototype : { [x: string]: any; }
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
>prototype : { [x: string]: any; m(): void; i: number; }
>prototype : { [x: string]: any; }
>{ m() { }, i: 1} : { [x: string]: any; m(): void; i: number; }
m() { },
@@ -30,29 +30,29 @@ Outer.Inner.prototype = {
Outer.Inner.prototype.j = 2
>Outer.Inner.prototype.j = 2 : 2
>Outer.Inner.prototype.j : any
>Outer.Inner.prototype : { [x: string]: any; m(): void; i: number; }
>Outer.Inner.prototype : { [x: string]: any; }
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
>prototype : { [x: string]: any; m(): void; i: number; }
>prototype : { [x: string]: any; }
>j : any
>2 : 2
/** @type {string} */
Outer.Inner.prototype.k;
>Outer.Inner.prototype.k : any
>Outer.Inner.prototype : { [x: string]: any; m(): void; i: number; }
>Outer.Inner.prototype : { [x: string]: any; }
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
>prototype : { [x: string]: any; m(): void; i: number; }
>prototype : { [x: string]: any; }
>k : any
var inner = new Outer.Inner()
>inner : Inner & { [x: string]: any; m(): void; i: number; }
>new Outer.Inner() : Inner & { [x: string]: any; m(): void; i: number; }
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
inner.m()
@@ -1,23 +1,23 @@
=== tests/cases/conformance/salsa/def.js ===
var Outer = {};
>Outer : { [x: string]: any; Inner: { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }; }
>{} : { [x: string]: any; Inner: { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }; }
>Outer : typeof Outer
>{} : { [x: string]: any; }
=== tests/cases/conformance/salsa/work.js ===
Outer.Inner = function () {}
>Outer.Inner = function () {} : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer : { [x: string]: any; Inner: { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }; }
>Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>function () {} : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer.Inner = function () {} : { (): void; prototype: { [x: string]: any; }; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; }; }
>Outer : typeof Outer
>Inner : { (): void; prototype: { [x: string]: any; }; }
>function () {} : { (): void; prototype: { [x: string]: any; }; }
Outer.Inner.prototype = {
>Outer.Inner.prototype = { x: 1, m() { }} : { [x: string]: any; x: number; m(): void; }
>Outer.Inner.prototype : { [x: string]: any; x: number; m(): void; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer : { [x: string]: any; Inner: { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }; }
>Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>prototype : { [x: string]: any; x: number; m(): void; }
>Outer.Inner.prototype : { [x: string]: any; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; }; }
>Outer : typeof Outer
>Inner : { (): void; prototype: { [x: string]: any; }; }
>prototype : { [x: string]: any; }
>{ x: 1, m() { }} : { [x: string]: any; x: number; m(): void; }
x: 1,
@@ -47,9 +47,9 @@ inner.m()
var inno = new Outer.Inner()
>inno : { [x: string]: any; x: number; m(): void; }
>new Outer.Inner() : { [x: string]: any; x: number; m(): void; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer : { [x: string]: any; Inner: { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }; }
>Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; }; }
>Outer : typeof Outer
>Inner : { (): void; prototype: { [x: string]: any; }; }
inno.x
>inno.x : number
@@ -1,12 +1,12 @@
=== tests/cases/conformance/salsa/a.js ===
var Outer = {};
>Outer : { [x: string]: any; Inner: typeof Inner; }
>{} : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>{} : { [x: string]: any; }
Outer.Inner = class {
>Outer.Inner = class { constructor() { this.x = 1 } m() { }} : typeof Inner
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
>class { constructor() { this.x = 1 } m() { }} : typeof Inner
@@ -41,7 +41,7 @@ var inno = new Outer.Inner()
>inno : Inner
>new Outer.Inner() : Inner
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
inno.x
@@ -1,22 +1,22 @@
=== tests/cases/conformance/salsa/a.js ===
var Outer = {};
>Outer : { [x: string]: any; Inner: { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }; }
>{} : { [x: string]: any; Inner: { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }; }
>Outer : typeof Outer
>{} : { [x: string]: any; }
Outer.Inner = function () {}
>Outer.Inner = function () {} : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer : { [x: string]: any; Inner: { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }; }
>Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>function () {} : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer.Inner = function () {} : { (): void; prototype: { [x: string]: any; }; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; }; }
>Outer : typeof Outer
>Inner : { (): void; prototype: { [x: string]: any; }; }
>function () {} : { (): void; prototype: { [x: string]: any; }; }
Outer.Inner.prototype = {
>Outer.Inner.prototype = { x: 1, m() { }} : { [x: string]: any; x: number; m(): void; }
>Outer.Inner.prototype : { [x: string]: any; x: number; m(): void; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer : { [x: string]: any; Inner: { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }; }
>Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>prototype : { [x: string]: any; x: number; m(): void; }
>Outer.Inner.prototype : { [x: string]: any; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; }; }
>Outer : typeof Outer
>Inner : { (): void; prototype: { [x: string]: any; }; }
>prototype : { [x: string]: any; }
>{ x: 1, m() { }} : { [x: string]: any; x: number; m(): void; }
x: 1,
@@ -45,9 +45,9 @@ inner.m()
var inno = new Outer.Inner()
>inno : { [x: string]: any; x: number; m(): void; }
>new Outer.Inner() : { [x: string]: any; x: number; m(): void; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer : { [x: string]: any; Inner: { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }; }
>Inner : { (): void; prototype: { [x: string]: any; x: number; m(): void; }; }
>Outer.Inner : { (): void; prototype: { [x: string]: any; }; }
>Outer : typeof Outer
>Inner : { (): void; prototype: { [x: string]: any; }; }
inno.x
>inno.x : number
@@ -9,7 +9,9 @@ function m() {
>m : Symbol(m, Decl(a.js, 0, 30))
}
GLOBSTAR.p = 1
>GLOBSTAR.p : Symbol(GLOBSTAR.p, Decl(a.js, 2, 1))
>GLOBSTAR : Symbol(GLOBSTAR, Decl(a.js, 0, 3))
>p : Symbol(GLOBSTAR.p, Decl(a.js, 2, 1))
m.GLOBSTAR.q = 2
>m.GLOBSTAR.q : Symbol(m.GLOBSTAR.q, Decl(a.js, 3, 14))
@@ -18,13 +20,27 @@ m.GLOBSTAR.q = 2
>GLOBSTAR : Symbol(m.GLOBSTAR, Decl(a.js, 0, 14))
>q : Symbol(m.GLOBSTAR.q, Decl(a.js, 3, 14))
GLOBSTAR.p
>GLOBSTAR.p : Symbol(GLOBSTAR.p, Decl(a.js, 2, 1))
>GLOBSTAR : Symbol(GLOBSTAR, Decl(a.js, 0, 3))
>p : Symbol(GLOBSTAR.p, Decl(a.js, 2, 1))
GLOBSTAR.q
>GLOBSTAR.q : Symbol(m.GLOBSTAR.q, Decl(a.js, 3, 14))
>GLOBSTAR : Symbol(GLOBSTAR, Decl(a.js, 0, 3))
>q : Symbol(m.GLOBSTAR.q, Decl(a.js, 3, 14))
m.GLOBSTAR.p
>m.GLOBSTAR.p : Symbol(GLOBSTAR.p, Decl(a.js, 2, 1))
>m.GLOBSTAR : Symbol(m.GLOBSTAR, Decl(a.js, 0, 14))
>m : Symbol(m, Decl(a.js, 0, 30))
>GLOBSTAR : Symbol(m.GLOBSTAR, Decl(a.js, 0, 14))
>p : Symbol(GLOBSTAR.p, Decl(a.js, 2, 1))
m.GLOBSTAR.q
>m.GLOBSTAR.q : Symbol(m.GLOBSTAR.q, Decl(a.js, 3, 14))
>m.GLOBSTAR : Symbol(m.GLOBSTAR, Decl(a.js, 0, 14))
>m : Symbol(m, Decl(a.js, 0, 30))
>GLOBSTAR : Symbol(m.GLOBSTAR, Decl(a.js, 0, 14))
>q : Symbol(m.GLOBSTAR.q, Decl(a.js, 3, 14))
@@ -1,40 +1,52 @@
=== tests/cases/conformance/salsa/a.js ===
var GLOBSTAR = m.GLOBSTAR = {}
>GLOBSTAR : { [x: string]: any; q: number; }
>m.GLOBSTAR = {} : { [x: string]: any; q: number; }
>m.GLOBSTAR : { [x: string]: any; q: number; }
>m : { (): void; GLOBSTAR: { [x: string]: any; q: number; }; }
>GLOBSTAR : { [x: string]: any; q: number; }
>{} : { [x: string]: any; q: number; }
>GLOBSTAR : { [x: string]: any; q: number; p: number; }
>m.GLOBSTAR = {} : { [x: string]: any; q: number; p: number; }
>m.GLOBSTAR : { [x: string]: any; q: number; p: number; }
>m : { (): void; GLOBSTAR: { [x: string]: any; q: number; p: number; }; }
>GLOBSTAR : { [x: string]: any; q: number; p: number; }
>{} : { [x: string]: any; }
function m() {
>m : { (): void; GLOBSTAR: { [x: string]: any; q: number; }; }
>m : { (): void; GLOBSTAR: { [x: string]: any; q: number; p: number; }; }
}
GLOBSTAR.p = 1
>GLOBSTAR.p = 1 : 1
>GLOBSTAR.p : any
>GLOBSTAR : { [x: string]: any; q: number; }
>p : any
>GLOBSTAR.p : number
>GLOBSTAR : { [x: string]: any; q: number; p: number; }
>p : number
>1 : 1
m.GLOBSTAR.q = 2
>m.GLOBSTAR.q = 2 : 2
>m.GLOBSTAR.q : number
>m.GLOBSTAR : { [x: string]: any; q: number; }
>m : { (): void; GLOBSTAR: { [x: string]: any; q: number; }; }
>GLOBSTAR : { [x: string]: any; q: number; }
>m.GLOBSTAR : { [x: string]: any; q: number; p: number; }
>m : { (): void; GLOBSTAR: { [x: string]: any; q: number; p: number; }; }
>GLOBSTAR : { [x: string]: any; q: number; p: number; }
>q : number
>2 : 2
GLOBSTAR.p
>GLOBSTAR.p : number
>GLOBSTAR : { [x: string]: any; q: number; p: number; }
>p : number
GLOBSTAR.q
>GLOBSTAR.q : number
>GLOBSTAR : { [x: string]: any; q: number; }
>GLOBSTAR : { [x: string]: any; q: number; p: number; }
>q : number
m.GLOBSTAR.p
>m.GLOBSTAR.p : any
>m.GLOBSTAR : { [x: string]: any; q: number; }
>m : { (): void; GLOBSTAR: { [x: string]: any; q: number; }; }
>GLOBSTAR : { [x: string]: any; q: number; }
>p : any
>m.GLOBSTAR.p : number
>m.GLOBSTAR : { [x: string]: any; q: number; p: number; }
>m : { (): void; GLOBSTAR: { [x: string]: any; q: number; p: number; }; }
>GLOBSTAR : { [x: string]: any; q: number; p: number; }
>p : number
m.GLOBSTAR.q
>m.GLOBSTAR.q : number
>m.GLOBSTAR : { [x: string]: any; q: number; p: number; }
>m : { (): void; GLOBSTAR: { [x: string]: any; q: number; p: number; }; }
>GLOBSTAR : { [x: string]: any; q: number; p: number; }
>q : number
@@ -4,7 +4,7 @@ Outer.Inner.Message = function() {
>Outer.Inner.Message = function() {} : () => void
>Outer.Inner.Message : () => void
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
>Message : () => void
>function() {} : () => void
@@ -15,7 +15,7 @@ var y = new Outer.Inner()
>y : Inner
>new Outer.Inner() : Inner
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
y.name
@@ -34,13 +34,13 @@ x.name
=== tests/cases/conformance/salsa/def.js ===
var Outer = {}
>Outer : { [x: string]: any; Inner: typeof Inner; }
>{} : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>{} : { [x: string]: any; }
Outer.Inner = class {
>Outer.Inner = class { name() { return 'hi' }} : typeof Inner
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
>class { name() { return 'hi' }} : typeof Inner
@@ -1,12 +1,12 @@
=== tests/cases/conformance/salsa/bug24703.js ===
var Common = {};
>Common : { [x: string]: any; I: typeof I; O: typeof O; }
>{} : { [x: string]: any; I: typeof I; O: typeof O; }
>Common : typeof Common
>{} : { [x: string]: any; }
Common.I = class {
>Common.I = class { constructor() { this.i = 1 }} : typeof I
>Common.I : typeof I
>Common : { [x: string]: any; I: typeof I; O: typeof O; }
>Common : typeof Common
>I : typeof I
>class { constructor() { this.i = 1 }} : typeof I
@@ -22,11 +22,11 @@ Common.I = class {
Common.O = class extends Common.I {
>Common.O = class extends Common.I { constructor() { super() this.o = 2 }} : typeof O
>Common.O : typeof O
>Common : { [x: string]: any; I: typeof I; O: typeof O; }
>Common : typeof Common
>O : typeof O
>class extends Common.I { constructor() { super() this.o = 2 }} : typeof O
>Common.I : I
>Common : { [x: string]: any; I: typeof I; O: typeof O; }
>Common : typeof Common
>I : typeof I
constructor() {
@@ -46,14 +46,14 @@ var o = new Common.O()
>o : O
>new Common.O() : O
>Common.O : typeof O
>Common : { [x: string]: any; I: typeof I; O: typeof O; }
>Common : typeof Common
>O : typeof O
var i = new Common.I()
>i : I
>new Common.I() : I
>Common.I : typeof I
>Common : { [x: string]: any; I: typeof I; O: typeof O; }
>Common : typeof Common
>I : typeof I
o.i
@@ -0,0 +1,24 @@
tests/cases/conformance/salsa/bug24730.js(11,14): error TS2339: Property 'doesNotExist' does not exist on type 'C'.
tests/cases/conformance/salsa/bug24730.js(12,26): error TS2339: Property 'doesntExistEither' does not exist on type 'number'.
==== tests/cases/conformance/salsa/bug24730.js (2 errors) ====
var UI = {}
UI.TreeElement = class {
constructor() {
this.treeOutline = 12
}
};
UI.context = new UI.TreeElement()
class C extends UI.TreeElement {
onpopulate() {
this.doesNotExist
~~~~~~~~~~~~
!!! error TS2339: Property 'doesNotExist' does not exist on type 'C'.
this.treeOutline.doesntExistEither()
~~~~~~~~~~~~~~~~~
!!! error TS2339: Property 'doesntExistEither' does not exist on type 'number'.
}
};
@@ -0,0 +1,43 @@
=== tests/cases/conformance/salsa/bug24730.js ===
var UI = {}
>UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11))
UI.TreeElement = class {
>UI.TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11))
>UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11))
>TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11))
constructor() {
this.treeOutline = 12
>this.treeOutline : Symbol(TreeElement.treeOutline, Decl(bug24730.js, 2, 19))
>this : Symbol(TreeElement, Decl(bug24730.js, 1, 16))
>treeOutline : Symbol(TreeElement.treeOutline, Decl(bug24730.js, 2, 19))
}
};
UI.context = new UI.TreeElement()
>UI.context : Symbol(UI.context, Decl(bug24730.js, 5, 2))
>UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11))
>context : Symbol(UI.context, Decl(bug24730.js, 5, 2))
>UI.TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11))
>UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11))
>TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11))
class C extends UI.TreeElement {
>C : Symbol(C, Decl(bug24730.js, 6, 33))
>UI.TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11))
>UI : Symbol(UI, Decl(bug24730.js, 0, 3), Decl(bug24730.js, 0, 11))
>TreeElement : Symbol(UI.TreeElement, Decl(bug24730.js, 0, 11))
onpopulate() {
>onpopulate : Symbol(C.onpopulate, Decl(bug24730.js, 8, 32))
this.doesNotExist
>this : Symbol(C, Decl(bug24730.js, 6, 33))
this.treeOutline.doesntExistEither()
>this.treeOutline : Symbol(TreeElement.treeOutline, Decl(bug24730.js, 2, 19))
>this : Symbol(C, Decl(bug24730.js, 6, 33))
>treeOutline : Symbol(TreeElement.treeOutline, Decl(bug24730.js, 2, 19))
}
};
@@ -0,0 +1,55 @@
=== tests/cases/conformance/salsa/bug24730.js ===
var UI = {}
>UI : typeof UI
>{} : { [x: string]: any; }
UI.TreeElement = class {
>UI.TreeElement = class { constructor() { this.treeOutline = 12 }} : typeof TreeElement
>UI.TreeElement : typeof TreeElement
>UI : typeof UI
>TreeElement : typeof TreeElement
>class { constructor() { this.treeOutline = 12 }} : typeof TreeElement
constructor() {
this.treeOutline = 12
>this.treeOutline = 12 : 12
>this.treeOutline : number
>this : this
>treeOutline : number
>12 : 12
}
};
UI.context = new UI.TreeElement()
>UI.context = new UI.TreeElement() : TreeElement
>UI.context : TreeElement
>UI : typeof UI
>context : TreeElement
>new UI.TreeElement() : TreeElement
>UI.TreeElement : typeof TreeElement
>UI : typeof UI
>TreeElement : typeof TreeElement
class C extends UI.TreeElement {
>C : C
>UI.TreeElement : TreeElement
>UI : typeof UI
>TreeElement : typeof TreeElement
onpopulate() {
>onpopulate : () => void
this.doesNotExist
>this.doesNotExist : any
>this : this
>doesNotExist : any
this.treeOutline.doesntExistEither()
>this.treeOutline.doesntExistEither() : any
>this.treeOutline.doesntExistEither : any
>this.treeOutline : number
>this : this
>treeOutline : number
>doesntExistEither : any
}
};
@@ -1,13 +1,13 @@
=== tests/cases/conformance/salsa/def.js ===
var Outer = {};
>Outer : { [x: string]: any; Inner: typeof Inner; }
>{} : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>{} : { [x: string]: any; }
=== tests/cases/conformance/salsa/a.js ===
Outer.Inner = class {
>Outer.Inner = class { constructor() { /** @type {number} */ this.y = 12 }} : typeof Inner
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
>class { constructor() { /** @type {number} */ this.y = 12 }} : typeof Inner
@@ -35,7 +35,7 @@ var inner = new Outer.Inner()
>inner : Inner
>new Outer.Inner() : Inner
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
inner.y
@@ -57,7 +57,7 @@ var z = new Outer.Inner()
>z : Inner
>new Outer.Inner() : Inner
>Outer.Inner : typeof Inner
>Outer : { [x: string]: any; Inner: typeof Inner; }
>Outer : typeof Outer
>Inner : typeof Inner
z.y
@@ -1,12 +1,12 @@
=== tests/cases/conformance/salsa/a.js ===
var obj = {};
>obj : { [x: string]: any; method(hunch: any): boolean; }
>{} : { [x: string]: any; method(hunch: any): boolean; }
>obj : typeof obj
>{} : { [x: string]: any; }
obj.method = function (hunch) {
>obj.method = function (hunch) { return true;} : (hunch: any) => boolean
>obj.method : (hunch: any) => boolean
>obj : { [x: string]: any; method(hunch: any): boolean; }
>obj : typeof obj
>method : (hunch: any) => boolean
>function (hunch) { return true;} : (hunch: any) => boolean
>hunch : any
@@ -18,6 +18,6 @@ var b = obj.method();
>b : boolean
>obj.method() : boolean
>obj.method : (hunch: any) => boolean
>obj : { [x: string]: any; method(hunch: any): boolean; }
>obj : typeof obj
>method : (hunch: any) => boolean
@@ -1,27 +1,27 @@
=== tests/cases/conformance/salsa/a.js ===
var my = my || {};
>my : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>my || {} : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>my : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>{} : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>my : typeof my
>my || {} : typeof my | { [x: string]: any; }
>my : typeof my
>{} : { [x: string]: any; }
my.app = my.app || {};
>my.app = my.app || {} : { [x: string]: any; Application: () => void; }
>my.app : { [x: string]: any; Application: () => void; }
>my : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>app : { [x: string]: any; Application: () => void; }
>my.app || {} : { [x: string]: any; Application: () => void; }
>my.app : { [x: string]: any; Application: () => void; }
>my : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>app : { [x: string]: any; Application: () => void; }
>{} : { [x: string]: any; Application: () => void; }
>my.app = my.app || {} : typeof my.app
>my.app : typeof my.app
>my : typeof my
>app : typeof my.app
>my.app || {} : { [x: string]: any; }
>my.app : typeof my.app
>my : typeof my
>app : typeof my.app
>{} : { [x: string]: any; }
my.app.Application = (function () {
>my.app.Application = (function () {var Application = function () { //...};return Application;})() : () => void
>my.app.Application : () => void
>my.app : { [x: string]: any; Application: () => void; }
>my : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>app : { [x: string]: any; Application: () => void; }
>my.app : typeof my.app
>my : typeof my
>app : typeof my.app
>Application : () => void
>(function () {var Application = function () { //...};return Application;})() : () => void
>(function () {var Application = function () { //...};return Application;}) : () => () => void
@@ -40,37 +40,37 @@ return Application;
my.app.Application()
>my.app.Application() : void
>my.app.Application : () => void
>my.app : { [x: string]: any; Application: () => void; }
>my : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>app : { [x: string]: any; Application: () => void; }
>my.app : typeof my.app
>my : typeof my
>app : typeof my.app
>Application : () => void
=== tests/cases/conformance/salsa/b.js ===
var min = window.min || {};
>min : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>min : typeof min
>window.min || {} : any
>window.min : any
>window : Window
>min : any
>{} : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>{} : { [x: string]: any; }
min.app = min.app || {};
>min.app = min.app || {} : { [x: string]: any; Application: () => void; }
>min.app : { [x: string]: any; Application: () => void; }
>min : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>app : { [x: string]: any; Application: () => void; }
>min.app || {} : { [x: string]: any; Application: () => void; }
>min.app : { [x: string]: any; Application: () => void; }
>min : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>app : { [x: string]: any; Application: () => void; }
>{} : { [x: string]: any; Application: () => void; }
>min.app = min.app || {} : typeof min.app
>min.app : typeof min.app
>min : typeof min
>app : typeof min.app
>min.app || {} : { [x: string]: any; }
>min.app : typeof min.app
>min : typeof min
>app : typeof min.app
>{} : { [x: string]: any; }
min.app.Application = (function () {
>min.app.Application = (function () {var Application = function () { //...};return Application;})() : () => void
>min.app.Application : () => void
>min.app : { [x: string]: any; Application: () => void; }
>min : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>app : { [x: string]: any; Application: () => void; }
>min.app : typeof min.app
>min : typeof min
>app : typeof min.app
>Application : () => void
>(function () {var Application = function () { //...};return Application;})() : () => void
>(function () {var Application = function () { //...};return Application;}) : () => () => void
@@ -89,8 +89,8 @@ return Application;
min.app.Application()
>min.app.Application() : void
>min.app.Application : () => void
>min.app : { [x: string]: any; Application: () => void; }
>min : { [x: string]: any; app: { [x: string]: any; Application: () => void; }; }
>app : { [x: string]: any; Application: () => void; }
>min.app : typeof min.app
>min : typeof min
>app : typeof min.app
>Application : () => void
@@ -40,7 +40,7 @@ my.predicate.query = function () {
var me = this;
>me : Symbol(me, Decl(a.js, 9, 7))
>this : Symbol(__object, Decl(a.js, 7, 30))
>this : Symbol(my.predicate, Decl(a.js, 6, 15), Decl(a.js, 8, 3), Decl(a.js, 13, 3))
me.property = false;
>me : Symbol(me, Decl(a.js, 9, 7))
@@ -1,15 +1,15 @@
=== tests/cases/conformance/salsa/a.js ===
var my = my || {};
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>my || {} : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>{} : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>my : typeof my
>my || {} : typeof my | { [x: string]: any; }
>my : typeof my
>{} : { [x: string]: any; }
/** @param {number} n */
my.method = function(n) {
>my.method = function(n) { return n + 1;} : (n: number) => number
>my.method : (n: number) => number
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>my : typeof my
>method : (n: number) => number
>function(n) { return n + 1;} : (n: number) => number
>n : number
@@ -22,45 +22,45 @@ my.method = function(n) {
my.number = 1;
>my.number = 1 : 1
>my.number : number
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>my : typeof my
>number : number
>1 : 1
my.object = {};
>my.object = {} : { [x: string]: any; }
>my.object : { [x: string]: any; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>my : typeof my
>object : { [x: string]: any; }
>{} : { [x: string]: any; }
my.predicate = my.predicate || {};
>my.predicate = my.predicate || {} : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate || {} : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>{} : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate = my.predicate || {} : typeof my.predicate
>my.predicate : typeof my.predicate
>my : typeof my
>predicate : typeof my.predicate
>my.predicate || {} : { [x: string]: any; }
>my.predicate : typeof my.predicate
>my : typeof my
>predicate : typeof my.predicate
>{} : { [x: string]: any; }
my.predicate.query = function () {
>my.predicate.query = function () { var me = this; me.property = false;} : { (): void; another(): number; result: string; }
>my.predicate.query : { (): void; another(): number; result: string; }
>my.predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate : typeof my.predicate
>my : typeof my
>predicate : typeof my.predicate
>query : { (): void; another(): number; result: string; }
>function () { var me = this; me.property = false;} : { (): void; another(): number; result: string; }
var me = this;
>me : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>this : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>me : typeof my.predicate
>this : typeof my.predicate
me.property = false;
>me.property = false : false
>me.property : any
>me : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>me : typeof my.predicate
>property : any
>false : false
@@ -69,18 +69,18 @@ var q = new my.predicate.query();
>q : any
>new my.predicate.query() : any
>my.predicate.query : { (): void; another(): number; result: string; }
>my.predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate : typeof my.predicate
>my : typeof my
>predicate : typeof my.predicate
>query : { (): void; another(): number; result: string; }
my.predicate.query.another = function () {
>my.predicate.query.another = function () { return 1;} : () => number
>my.predicate.query.another : () => number
>my.predicate.query : { (): void; another(): number; result: string; }
>my.predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate : typeof my.predicate
>my : typeof my
>predicate : typeof my.predicate
>query : { (): void; another(): number; result: string; }
>another : () => number
>function () { return 1;} : () => number
@@ -92,9 +92,9 @@ my.predicate.query.result = 'none'
>my.predicate.query.result = 'none' : "none"
>my.predicate.query.result : string
>my.predicate.query : { (): void; another(): number; result: string; }
>my.predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate : typeof my.predicate
>my : typeof my
>predicate : typeof my.predicate
>query : { (): void; another(): number; result: string; }
>result : string
>'none' : "none"
@@ -105,15 +105,15 @@ my.predicate.query.result = 'none'
my.predicate.sort = my.predicate.sort || function (first, second) {
>my.predicate.sort = my.predicate.sort || function (first, second) { return first > second ? first : second;} : (first: number, second: number) => number
>my.predicate.sort : (first: number, second: number) => number
>my.predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate : typeof my.predicate
>my : typeof my
>predicate : typeof my.predicate
>sort : (first: number, second: number) => number
>my.predicate.sort || function (first, second) { return first > second ? first : second;} : (first: number, second: number) => number
>my.predicate.sort : (first: number, second: number) => number
>my.predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate : typeof my.predicate
>my : typeof my
>predicate : typeof my.predicate
>sort : (first: number, second: number) => number
>function (first, second) { return first > second ? first : second;} : (first: number, second: number) => number
>first : number
@@ -130,9 +130,9 @@ my.predicate.sort = my.predicate.sort || function (first, second) {
my.predicate.type = class {
>my.predicate.type = class { m() { return 101; }} : typeof type
>my.predicate.type : typeof type
>my.predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my : { [x: string]: any; method(n: number): number; number: number; object: { [x: string]: any; }; predicate: { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }; }
>predicate : { [x: string]: any; query: { (): void; another(): number; result: string; }; sort(first: number, second: number): number; type: typeof type; }
>my.predicate : typeof my.predicate
>my : typeof my
>predicate : typeof my.predicate
>type : typeof type
>class { m() { return 101; }} : typeof type
@@ -144,17 +144,17 @@ my.predicate.type = class {
// global-ish prefixes
var min = window.min || {};
>min : { [x: string]: any; nest: { (): void; other: typeof other; }; property: { [x: string]: any; }; }
>min : typeof min
>window.min || {} : any
>window.min : any
>window : Window
>min : any
>{} : { [x: string]: any; nest: { (): void; other: typeof other; }; property: { [x: string]: any; }; }
>{} : { [x: string]: any; }
min.nest = this.min.nest || function () { };
>min.nest = this.min.nest || function () { } : { (): void; other: typeof other; }
>min.nest : { (): void; other: typeof other; }
>min : { [x: string]: any; nest: { (): void; other: typeof other; }; property: { [x: string]: any; }; }
>min : typeof min
>nest : { (): void; other: typeof other; }
>this.min.nest || function () { } : { (): void; other: typeof other; }
>this.min.nest : any
@@ -168,7 +168,7 @@ min.nest.other = self.min.nest.other || class { };
>min.nest.other = self.min.nest.other || class { } : typeof other
>min.nest.other : typeof other
>min.nest : { (): void; other: typeof other; }
>min : { [x: string]: any; nest: { (): void; other: typeof other; }; property: { [x: string]: any; }; }
>min : typeof min
>nest : { (): void; other: typeof other; }
>other : typeof other
>self.min.nest.other || class { } : typeof other
@@ -184,7 +184,7 @@ min.nest.other = self.min.nest.other || class { };
min.property = global.min.property || {};
>min.property = global.min.property || {} : { [x: string]: any; }
>min.property : { [x: string]: any; }
>min : { [x: string]: any; nest: { (): void; other: typeof other; }; property: { [x: string]: any; }; }
>min : typeof min
>property : { [x: string]: any; }
>global.min.property || {} : { [x: string]: any; }
>global.min.property : any
@@ -2,7 +2,7 @@
First.Item = class I {}
>First.Item = class I {} : typeof I
>First.Item : typeof I
>First : { [x: string]: any; Item: typeof I; }
>First : typeof First
>Item : typeof I
>class I {} : typeof I
>I : typeof I
@@ -10,21 +10,21 @@ First.Item = class I {}
Common.Object = class extends First.Item {}
>Common.Object = class extends First.Item {} : typeof Object
>Common.Object : typeof Object
>Common : { [x: string]: any; Object: typeof Object; }
>Common : typeof Common
>Object : typeof Object
>class extends First.Item {} : typeof Object
>First.Item : I
>First : { [x: string]: any; Item: typeof I; }
>First : typeof First
>Item : typeof I
Workspace.Object = class extends Common.Object {}
>Workspace.Object = class extends Common.Object {} : typeof Object
>Workspace.Object : typeof Object
>Workspace : { [x: string]: any; Object: typeof Object; }
>Workspace : typeof Workspace
>Object : typeof Object
>class extends Common.Object {} : typeof Object
>Common.Object : Object
>Common : { [x: string]: any; Object: typeof Object; }
>Common : typeof Common
>Object : typeof Object
/** @type {Workspace.Object} */
@@ -33,14 +33,14 @@ var am;
=== tests/cases/conformance/salsa/roots.js ===
var First = {};
>First : { [x: string]: any; Item: typeof I; }
>{} : { [x: string]: any; Item: typeof I; }
>First : typeof First
>{} : { [x: string]: any; }
var Common = {};
>Common : { [x: string]: any; Object: typeof Object; }
>{} : { [x: string]: any; Object: typeof Object; }
>Common : typeof Common
>{} : { [x: string]: any; }
var Workspace = {};
>Workspace : { [x: string]: any; Object: typeof Object; }
>{} : { [x: string]: any; Object: typeof Object; }
>Workspace : typeof Workspace
>{} : { [x: string]: any; }
@@ -2,13 +2,13 @@
// this is a javascript file...
export const Adapter = {};
>Adapter : { [x: string]: any; prop: { [x: string]: any; }; asyncMethod(): void; }
>{} : { [x: string]: any; prop: { [x: string]: any; }; asyncMethod(): void; }
>Adapter : typeof Adapter
>{} : { [x: string]: any; }
Adapter.prop = {};
>Adapter.prop = {} : { [x: string]: any; }
>Adapter.prop : { [x: string]: any; }
>Adapter : { [x: string]: any; prop: { [x: string]: any; }; asyncMethod(): void; }
>Adapter : typeof Adapter
>prop : { [x: string]: any; }
>{} : { [x: string]: any; }
@@ -16,7 +16,7 @@ Adapter.prop = {};
Adapter.asyncMethod = function() {}
>Adapter.asyncMethod = function() {} : () => void
>Adapter.asyncMethod : () => void
>Adapter : { [x: string]: any; prop: { [x: string]: any; }; asyncMethod(): void; }
>Adapter : typeof Adapter
>asyncMethod : () => void
>function() {} : () => void
@@ -1,21 +1,21 @@
=== tests/cases/conformance/jsdoc/mod2.js ===
/** @typedef {number} Foo */
const ns = {};
>ns : { [x: string]: any; Foo: typeof Foo; }
>{} : { [x: string]: any; Foo: typeof Foo; }
>ns : typeof ns
>{} : { [x: string]: any; }
ns.Foo = class {}
>ns.Foo = class {} : typeof Foo
>ns.Foo : typeof Foo
>ns : { [x: string]: any; Foo: typeof Foo; }
>ns : typeof ns
>Foo : typeof Foo
>class {} : typeof Foo
module.exports = ns;
>module.exports = ns : { [x: string]: any; Foo: typeof Foo; }
>module.exports = ns : typeof ns
>module.exports : any
>module : any
>exports : any
>ns : { [x: string]: any; Foo: typeof Foo; }
>ns : typeof ns
@@ -1,5 +1,7 @@
Exit Code: 1
Standard output:
node_modules/@types/jquery/index.d.ts(6366,66): error TS2344: Type '"timeout" | "onreadystatechange" | "responseType" | "withCredentials" | "msCaching"' does not satisfy the constraint '"abort" | "open" | "timeout" | "send" | "DONE" | "response" | "getAllResponseHeaders" | "getRespo...'.
Type '"msCaching"' is not assignable to type '"abort" | "open" | "timeout" | "send" | "DONE" | "response" | "getAllResponseHeaders" | "getRespo...'.
node_modules/@types/passport-facebook/index.d.ts(50,31): error TS2689: Cannot extend an interface 'passport.Strategy'. Did you mean 'implements'?
+4 -2
View File
@@ -8,6 +8,7 @@ node_modules/acorn/bin/_acorn.js(63,23): error TS2345: Argument of type 'string
node_modules/acorn/bin/run_test262.js(3,21): error TS2307: Cannot find module 'test262-parser-runner'.
node_modules/acorn/dist/acorn.es.js(36,1): error TS2322: Type 'null' is not assignable to type 'string'.
node_modules/acorn/dist/acorn.es.js(36,32): error TS2322: Type 'null' is not assignable to type 'string'.
node_modules/acorn/dist/acorn.es.js(410,56): error TS2339: Property 'push' does not exist on type '(token: any) => any'.
node_modules/acorn/dist/acorn.es.js(543,43): error TS2339: Property 'startNode' does not exist on type 'Parser'.
node_modules/acorn/dist/acorn.es.js(544,8): error TS2339: Property 'nextToken' does not exist on type 'Parser'.
node_modules/acorn/dist/acorn.es.js(545,15): error TS2339: Property 'parseTopLevel' does not exist on type 'Parser'.
@@ -56,6 +57,7 @@ node_modules/acorn/dist/acorn.js(3,34): error TS2304: Cannot find name 'define'.
node_modules/acorn/dist/acorn.js(3,47): error TS2304: Cannot find name 'define'.
node_modules/acorn/dist/acorn.js(42,1): error TS2322: Type 'null' is not assignable to type 'string'.
node_modules/acorn/dist/acorn.js(42,32): error TS2322: Type 'null' is not assignable to type 'string'.
node_modules/acorn/dist/acorn.js(416,56): error TS2339: Property 'push' does not exist on type '(token: any) => any'.
node_modules/acorn/dist/acorn.js(549,43): error TS2339: Property 'startNode' does not exist on type 'Parser'.
node_modules/acorn/dist/acorn.js(550,8): error TS2339: Property 'nextToken' does not exist on type 'Parser'.
node_modules/acorn/dist/acorn.js(551,15): error TS2339: Property 'parseTopLevel' does not exist on type 'Parser'.
@@ -145,11 +147,11 @@ node_modules/acorn/dist/acorn_loose.js(261,31): error TS2322: Type '{ start: any
node_modules/acorn/dist/acorn_loose.js(264,21): error TS2339: Property 'loc' does not exist on type 'true'.
node_modules/acorn/dist/acorn_loose.js(266,55): error TS2339: Property 'start' does not exist on type 'true'.
node_modules/acorn/dist/acorn_loose.js(267,55): error TS2339: Property 'end' does not exist on type 'true'.
node_modules/acorn/dist/walk.es.js(162,41): error TS2339: Property 'node' does not exist on type 'never'.
node_modules/acorn/dist/walk.es.js(155,41): error TS2339: Property 'node' does not exist on type 'never'.
node_modules/acorn/dist/walk.js(3,9): error TS2304: Cannot find name 'define'.
node_modules/acorn/dist/walk.js(3,34): error TS2304: Cannot find name 'define'.
node_modules/acorn/dist/walk.js(3,47): error TS2304: Cannot find name 'define'.
node_modules/acorn/dist/walk.js(168,41): error TS2339: Property 'node' does not exist on type 'never'.
node_modules/acorn/dist/walk.js(161,41): error TS2339: Property 'node' does not exist on type 'never'.
@@ -36,7 +36,7 @@ node_modules/adonis-framework/src/Env/index.js(56,15): error TS2304: Cannot find
node_modules/adonis-framework/src/Env/index.js(80,15): error TS2304: Cannot find name 'Mixed'.
node_modules/adonis-framework/src/Event/index.js(13,21): error TS2307: Cannot find module 'adonis-fold'.
node_modules/adonis-framework/src/Event/index.js(128,5): error TS2322: Type '() => {}[]' is not assignable to type 'any[]'.
Property 'flatMap' is missing in type '() => {}[]'.
Property 'push' is missing in type '() => {}[]'.
node_modules/adonis-framework/src/Event/index.js(153,25): error TS2339: Property 'wildcard' does not exist on type 'EventEmitter2'.
node_modules/adonis-framework/src/Event/index.js(188,17): error TS2304: Cannot find name 'Spread'.
node_modules/adonis-framework/src/Event/index.js(207,24): error TS2304: Cannot find name 'Sring'.
@@ -151,7 +151,6 @@ node_modules/adonis-framework/src/Session/SessionManager.js(71,76): error TS2339
node_modules/adonis-framework/src/Session/Store.js(28,13): error TS2304: Cannot find name 'Mixed'.
node_modules/adonis-framework/src/Session/Store.js(80,13): error TS2304: Cannot find name 'Mixed'.
node_modules/adonis-framework/src/Session/index.js(10,14): error TS2304: Cannot find name 'SessionDriver'.
node_modules/adonis-framework/src/Session/index.js(11,2): error TS1003: Identifier expected.
node_modules/adonis-framework/src/Session/index.js(11,11): error TS2304: Cannot find name 'Class'.
node_modules/adonis-framework/src/Session/index.js(46,15): error TS2304: Cannot find name 'SessionDriver'.
node_modules/adonis-framework/src/Session/index.js(48,14): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
-9
View File
@@ -1,9 +0,0 @@
Exit Code: 1
Standard output:
node_modules/antd/lib/_util/type.d.ts(8,63): error TS2344: Type 'keyof T' does not satisfy the constraint 'string'.
Type 'string | number | symbol' is not assignable to type 'string'.
Type 'number' is not assignable to type 'string'.
Standard error:
+2 -2
View File
@@ -131,7 +131,7 @@ node_modules/async/dist/async.js(2450,5): error TS2322: Type '{ [x: string]: any
node_modules/async/dist/async.js(2521,9): error TS2722: Cannot invoke an object which is possibly 'undefined'.
node_modules/async/dist/async.js(2564,31): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type 'any[] | undefined'.
Type 'IArguments' is not assignable to type 'any[]'.
Property 'flatMap' is missing in type 'IArguments'.
Property 'push' is missing in type 'IArguments'.
node_modules/async/dist/async.js(2663,16): error TS2722: Cannot invoke an object which is possibly 'undefined'.
node_modules/async/dist/async.js(2682,31): error TS1005: ']' expected.
node_modules/async/dist/async.js(2707,31): error TS1005: ']' expected.
@@ -174,7 +174,7 @@ node_modules/async/dist/async.js(4163,26): error TS2339: Property 'process' does
node_modules/async/dist/async.js(4167,14): error TS2339: Property 'unshift' does not exist on type 'NodeModule'.
node_modules/async/dist/async.js(4381,5): error TS2322: Type 'any[] | {}' is not assignable to type 'any[]'.
Type '{}' is not assignable to type 'any[]'.
Property 'flatMap' is missing in type '{}'.
Property 'length' is missing in type '{}'.
node_modules/async/dist/async.js(4617,17): error TS2532: Object is possibly 'undefined'.
node_modules/async/dist/async.js(4617,17): error TS2684: The 'this' context of type 'Function | undefined' is not assignable to method's 'this' of type 'Function'.
Type 'undefined' is not assignable to type 'Function'.
+3 -3
View File
@@ -3,9 +3,9 @@ Standard output:
node_modules/bcryptjs/scripts/build.js(1,26): error TS2307: Cannot find module 'metascript'.
node_modules/bcryptjs/scripts/build.js(32,1): error TS2322: Type '{ VERSION: any; }' is not assignable to type '{ [x: string]: any; VERSION: any; ISAAC: boolean; }'.
Property 'ISAAC' is missing in type '{ VERSION: any; }'.
node_modules/bcryptjs/src/bcrypt/impl.js(516,22): error TS2345: Argument of type 'Int32Array | number[]' is not assignable to parameter of type 'number[]'.
node_modules/bcryptjs/src/bcrypt/impl.js(516,22): error TS2345: Argument of type 'number[] | Int32Array' is not assignable to parameter of type 'number[]'.
Type 'Int32Array' is not assignable to type 'number[]'.
Property 'flatMap' is missing in type 'Int32Array'.
Property 'push' is missing in type 'Int32Array'.
node_modules/bcryptjs/src/bcrypt/impl.js(546,26): error TS2345: Argument of type 'null' is not assignable to parameter of type 'Error'.
node_modules/bcryptjs/src/bcrypt/impl.js(658,23): error TS2345: Argument of type 'number[] | undefined' is not assignable to parameter of type 'number[]'.
Type 'undefined' is not assignable to type 'number[]'.
@@ -21,7 +21,7 @@ node_modules/bcryptjs/src/bcrypt/prng/accum.js(66,22): error TS2339: Property 'd
node_modules/bcryptjs/src/bcrypt/prng/accum.js(67,22): error TS2339: Property 'detachEvent' does not exist on type 'Document'.
node_modules/bcryptjs/src/bcrypt/util.js(20,5): error TS2304: Cannot find name 'utfx'.
node_modules/bcryptjs/src/bcrypt.js(25,13): error TS2322: Type 'Buffer' is not assignable to type 'number[]'.
Property 'flatMap' is missing in type 'Buffer'.
Property 'push' is missing in type 'Buffer'.
node_modules/bcryptjs/src/bcrypt.js(94,14): error TS2366: Function lacks ending return statement and return type does not include 'undefined'.
node_modules/bcryptjs/src/bcrypt.js(150,5): error TS2322: Type 'string | undefined' is not assignable to type 'string'.
Type 'undefined' is not assignable to type 'string'.
File diff suppressed because it is too large Load Diff
+11 -11
View File
@@ -34,10 +34,10 @@ node_modules/lodash/_baseClone.js(128,43): error TS2345: Argument of type 'numbe
node_modules/lodash/_baseClone.js(157,17): error TS2552: Cannot find name 'keysIn'. Did you mean 'keys'?
node_modules/lodash/_baseDifference.js(37,5): error TS2322: Type '(array?: any[] | undefined, value: any, comparator: Function) => boolean' is not assignable to type '(array?: any[] | undefined, value: any) => boolean'.
node_modules/lodash/_baseDifference.js(43,5): error TS2322: Type 'SetCache' is not assignable to type 'any[]'.
Property 'flatMap' is missing in type 'SetCache'.
Property 'length' is missing in type 'SetCache'.
node_modules/lodash/_baseDifference.js(60,15): error TS2554: Expected 2 arguments, but got 3.
node_modules/lodash/_baseFlatten.js(19,17): error TS2322: Type '(value: any) => boolean' is not assignable to type 'boolean | undefined'.
Type '(value: any) => boolean' is not assignable to type 'false'.
Type '(value: any) => boolean' is not assignable to type 'true'.
node_modules/lodash/_baseFlatten.js(24,22): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Boolean' has no compatible call signatures.
node_modules/lodash/_baseFlatten.js(24,22): error TS2532: Object is possibly 'undefined'.
node_modules/lodash/_baseFlatten.js(24,22): error TS2722: Cannot invoke an object which is possibly 'undefined'.
@@ -150,7 +150,7 @@ node_modules/lodash/_mergeData.js(67,26): error TS2554: Expected 4 arguments, bu
node_modules/lodash/_nodeUtil.js(4,69): error TS2339: Property 'nodeType' does not exist on type 'typeof import("/lodash/node_modules/lodash/_nodeUtil")'.
node_modules/lodash/_nodeUtil.js(7,80): error TS2339: Property 'nodeType' does not exist on type 'NodeModule'.
node_modules/lodash/_nodeUtil.js(13,47): error TS2339: Property 'process' does not exist on type 'boolean | Global'.
Property 'process' does not exist on type 'true'.
Property 'process' does not exist on type 'false'.
node_modules/lodash/_overRest.js(20,42): error TS2532: Object is possibly 'undefined'.
node_modules/lodash/_overRest.js(24,27): error TS2532: Object is possibly 'undefined'.
node_modules/lodash/_overRest.js(27,27): error TS2532: Object is possibly 'undefined'.
@@ -179,7 +179,7 @@ node_modules/lodash/conforms.js(32,41): error TS2345: Argument of type 'number'
node_modules/lodash/core.js(68,58): error TS2339: Property 'Object' does not exist on type 'Window'.
node_modules/lodash/core.js(77,82): error TS2339: Property 'nodeType' does not exist on type 'NodeModule'.
node_modules/lodash/core.js(540,19): error TS2322: Type '(value: any) => boolean' is not assignable to type 'boolean | undefined'.
Type '(value: any) => boolean' is not assignable to type 'false'.
Type '(value: any) => boolean' is not assignable to type 'true'.
node_modules/lodash/core.js(545,24): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Boolean' has no compatible call signatures.
node_modules/lodash/core.js(545,24): error TS2532: Object is possibly 'undefined'.
node_modules/lodash/core.js(545,24): error TS2722: Cannot invoke an object which is possibly 'undefined'.
@@ -229,7 +229,7 @@ node_modules/lodash/core.js(3424,41): error TS2345: Argument of type 'Function'
Type 'Function' provides no match for the signature '(substring: string, ...args: any[]): string'.
node_modules/lodash/core.js(3573,51): error TS2532: Object is possibly 'undefined'.
node_modules/lodash/core.js(3590,63): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type 'any[]'.
Property 'flatMap' is missing in type 'IArguments'.
Property 'push' is missing in type 'IArguments'.
node_modules/lodash/core.js(3830,14): error TS2304: Cannot find name 'define'.
node_modules/lodash/core.js(3830,45): error TS2304: Cannot find name 'define'.
node_modules/lodash/core.js(3830,71): error TS2304: Cannot find name 'define'.
@@ -249,12 +249,12 @@ node_modules/lodash/debounce.js(111,23): error TS2532: Object is possibly 'undef
node_modules/lodash/debounce.js(125,65): error TS2532: Object is possibly 'undefined'.
node_modules/lodash/deburr.js(42,44): error TS2345: Argument of type 'Function' is not assignable to parameter of type '(substring: string, ...args: any[]) => string'.
node_modules/lodash/difference.js(29,52): error TS2345: Argument of type '(value: any) => boolean' is not assignable to parameter of type 'boolean | undefined'.
Type '(value: any) => boolean' is not assignable to type 'false'.
Type '(value: any) => boolean' is not assignable to type 'true'.
node_modules/lodash/differenceBy.js(40,52): error TS2345: Argument of type '(value: any) => boolean' is not assignable to parameter of type 'boolean | undefined'.
Type '(value: any) => boolean' is not assignable to type 'false'.
Type '(value: any) => boolean' is not assignable to type 'true'.
node_modules/lodash/differenceBy.js(40,78): error TS2554: Expected 0-1 arguments, but got 2.
node_modules/lodash/differenceWith.js(36,52): error TS2345: Argument of type '(value: any) => boolean' is not assignable to parameter of type 'boolean | undefined'.
Type '(value: any) => boolean' is not assignable to type 'false'.
Type '(value: any) => boolean' is not assignable to type 'true'.
node_modules/lodash/drop.js(13,10): error TS1003: Identifier expected.
node_modules/lodash/drop.js(13,10): error TS8024: JSDoc '@param' tag has name '', but there is no parameter with that name.
node_modules/lodash/dropRight.js(13,10): error TS1003: Identifier expected.
@@ -426,12 +426,12 @@ node_modules/lodash/truncate.js(85,7): error TS2454: Variable 'strSymbols' is us
node_modules/lodash/unary.js(19,10): error TS2554: Expected 3 arguments, but got 2.
node_modules/lodash/unescape.js(30,37): error TS2345: Argument of type 'Function' is not assignable to parameter of type '(substring: string, ...args: any[]) => string'.
node_modules/lodash/union.js(23,42): error TS2345: Argument of type '(value: any) => boolean' is not assignable to parameter of type 'boolean | undefined'.
Type '(value: any) => boolean' is not assignable to type 'false'.
Type '(value: any) => boolean' is not assignable to type 'true'.
node_modules/lodash/unionBy.js(36,42): error TS2345: Argument of type '(value: any) => boolean' is not assignable to parameter of type 'boolean | undefined'.
Type '(value: any) => boolean' is not assignable to type 'false'.
Type '(value: any) => boolean' is not assignable to type 'true'.
node_modules/lodash/unionBy.js(36,68): error TS2554: Expected 0-1 arguments, but got 2.
node_modules/lodash/unionWith.js(31,42): error TS2345: Argument of type '(value: any) => boolean' is not assignable to parameter of type 'boolean | undefined'.
Type '(value: any) => boolean' is not assignable to type 'false'.
Type '(value: any) => boolean' is not assignable to type 'true'.
node_modules/lodash/uniqBy.js(28,52): error TS2554: Expected 0-1 arguments, but got 2.
node_modules/lodash/words.js(15,10): error TS1003: Identifier expected.
node_modules/lodash/words.js(15,10): error TS8024: JSDoc '@param' tag has name '', but there is no parameter with that name.
+5
View File
@@ -492,6 +492,11 @@ node_modules/npm/lib/ls.js(152,11): error TS2339: Property 'config' does not exi
node_modules/npm/lib/ls.js(180,22): error TS2339: Property 'config' does not exist on type 'EventEmitter'.
node_modules/npm/lib/ls.js(191,52): error TS2339: Property 'globalDir' does not exist on type 'EventEmitter'.
node_modules/npm/lib/ls.js(254,22): error TS2339: Property 'config' does not exist on type 'EventEmitter'.
node_modules/npm/lib/ls.js(260,16): error TS2339: Property 'problems' does not exist on type 'string | { [x: string]: any; name: any; version: any; extraneous: boolean; problems: any; invalid...'.
Property 'problems' does not exist on type 'string'.
node_modules/npm/lib/ls.js(262,54): error TS2339: Property 'problems' does not exist on type 'string | { [x: string]: any; name: any; version: any; extraneous: boolean; problems: any; invalid...'.
Property 'problems' does not exist on type 'string'.
node_modules/npm/lib/ls.js(264,12): error TS2538: Type '{ [x: string]: any; name: any; version: any; extraneous: boolean; problems: any; invalid: boolean...' cannot be used as an index type.
node_modules/npm/lib/ls.js(357,40): error TS2339: Property 'config' does not exist on type 'EventEmitter'.
node_modules/npm/lib/ls.js(362,26): error TS2339: Property 'config' does not exist on type 'EventEmitter'.
node_modules/npm/lib/ls.js(365,15): error TS2339: Property 'color' does not exist on type 'EventEmitter'.

Some files were not shown because too many files have changed in this diff Show More