mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Merge branch 'master' into ignoreStringIndexSignaturesOnly
# Conflicts: # tests/baselines/reference/keyofAndIndexedAccess2.errors.txt # tests/baselines/reference/keyofAndIndexedAccess2.js # tests/baselines/reference/keyofAndIndexedAccess2.symbols # tests/baselines/reference/keyofAndIndexedAccess2.types # tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts
This commit is contained in:
@@ -236,10 +236,7 @@ namespace ts {
|
||||
}
|
||||
});
|
||||
|
||||
if (oldCompilerOptions &&
|
||||
(oldCompilerOptions.outDir !== compilerOptions.outDir ||
|
||||
oldCompilerOptions.declarationDir !== compilerOptions.declarationDir ||
|
||||
(oldCompilerOptions.outFile || oldCompilerOptions.out) !== (compilerOptions.outFile || compilerOptions.out))) {
|
||||
if (oldCompilerOptions && compilerOptionsAffectEmit(compilerOptions, oldCompilerOptions)) {
|
||||
// Add all files to affectedFilesPendingEmit since emit changed
|
||||
state.affectedFilesPendingEmit = concatenate(state.affectedFilesPendingEmit, newProgram.getSourceFiles().map(f => f.path));
|
||||
if (state.affectedFilesPendingEmitIndex === undefined) {
|
||||
|
||||
+14
-9
@@ -114,6 +114,11 @@ namespace ts {
|
||||
getIdentifierCount: () => sum(host.getSourceFiles(), "identifierCount"),
|
||||
getSymbolCount: () => sum(host.getSourceFiles(), "symbolCount") + symbolCount,
|
||||
getTypeCount: () => typeCount,
|
||||
getRelationCacheSizes: () => ({
|
||||
assignable: assignableRelation.size,
|
||||
identity: identityRelation.size,
|
||||
subtype: subtypeRelation.size,
|
||||
}),
|
||||
isUndefinedSymbol: symbol => symbol === undefinedSymbol,
|
||||
isArgumentsSymbol: symbol => symbol === argumentsSymbol,
|
||||
isUnknownSymbol: symbol => symbol === unknownSymbol,
|
||||
@@ -6709,11 +6714,12 @@ namespace ts {
|
||||
const links = getSymbolLinks(symbol);
|
||||
if (!links.lateSymbol && some(symbol.declarations, hasLateBindableName)) {
|
||||
// force late binding of members/exports. This will set the late-bound symbol
|
||||
const parent = getMergedSymbol(symbol.parent)!;
|
||||
if (some(symbol.declarations, hasStaticModifier)) {
|
||||
getExportsOfSymbol(symbol.parent!);
|
||||
getExportsOfSymbol(parent);
|
||||
}
|
||||
else {
|
||||
getMembersOfSymbol(symbol.parent!);
|
||||
getMembersOfSymbol(parent);
|
||||
}
|
||||
}
|
||||
return links.lateSymbol || (links.lateSymbol = symbol);
|
||||
@@ -12043,7 +12049,7 @@ namespace ts {
|
||||
}
|
||||
|
||||
function isStringIndexSignatureOnlyType(type: Type): boolean {
|
||||
return type.flags & TypeFlags.Object && getPropertiesOfType(type).length === 0 && getIndexInfoOfType(type, IndexKind.String) && !getIndexInfoOfType(type, IndexKind.Number) ||
|
||||
return type.flags & TypeFlags.Object && !isGenericMappedType(type) && getPropertiesOfType(type).length === 0 && getIndexInfoOfType(type, IndexKind.String) && !getIndexInfoOfType(type, IndexKind.Number) ||
|
||||
type.flags & TypeFlags.UnionOrIntersection && every((<UnionOrIntersectionType>type).types, isStringIndexSignatureOnlyType) ||
|
||||
false;
|
||||
}
|
||||
@@ -15016,12 +15022,11 @@ namespace ts {
|
||||
}
|
||||
// If no inferences can be made to K's constraint, infer from a union of the property types
|
||||
// in the source to the template type X.
|
||||
const valueTypes = compact([
|
||||
getIndexTypeOfType(source, IndexKind.String),
|
||||
getIndexTypeOfType(source, IndexKind.Number),
|
||||
...map(getPropertiesOfType(source), getTypeOfSymbol)
|
||||
]);
|
||||
inferFromTypes(getUnionType(valueTypes), getTemplateTypeFromMappedType(target));
|
||||
const propTypes = map(getPropertiesOfType(source), getTypeOfSymbol);
|
||||
const stringIndexType = getIndexTypeOfType(source, IndexKind.String);
|
||||
const numberIndexInfo = getNonEnumNumberIndexInfo(source);
|
||||
const numberIndexType = numberIndexInfo && numberIndexInfo.type;
|
||||
inferFromTypes(getUnionType(append(append(propTypes, stringIndexType), numberIndexType)), getTemplateTypeFromMappedType(target));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -281,6 +281,7 @@ namespace ts {
|
||||
name: "declaration",
|
||||
shortName: "d",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
showInSimplifiedHelpView: true,
|
||||
category: Diagnostics.Basic_Options,
|
||||
description: Diagnostics.Generates_corresponding_d_ts_file,
|
||||
@@ -288,6 +289,7 @@ namespace ts {
|
||||
{
|
||||
name: "declarationMap",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
showInSimplifiedHelpView: true,
|
||||
category: Diagnostics.Basic_Options,
|
||||
description: Diagnostics.Generates_a_sourcemap_for_each_corresponding_d_ts_file,
|
||||
@@ -295,12 +297,14 @@ namespace ts {
|
||||
{
|
||||
name: "emitDeclarationOnly",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Advanced_Options,
|
||||
description: Diagnostics.Only_emit_d_ts_declaration_files,
|
||||
},
|
||||
{
|
||||
name: "sourceMap",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
showInSimplifiedHelpView: true,
|
||||
category: Diagnostics.Basic_Options,
|
||||
description: Diagnostics.Generates_corresponding_map_file,
|
||||
@@ -308,6 +312,7 @@ namespace ts {
|
||||
{
|
||||
name: "outFile",
|
||||
type: "string",
|
||||
affectsEmit: true,
|
||||
isFilePath: true,
|
||||
paramType: Diagnostics.FILE,
|
||||
showInSimplifiedHelpView: true,
|
||||
@@ -317,6 +322,7 @@ namespace ts {
|
||||
{
|
||||
name: "outDir",
|
||||
type: "string",
|
||||
affectsEmit: true,
|
||||
isFilePath: true,
|
||||
paramType: Diagnostics.DIRECTORY,
|
||||
showInSimplifiedHelpView: true,
|
||||
@@ -326,6 +332,7 @@ namespace ts {
|
||||
{
|
||||
name: "rootDir",
|
||||
type: "string",
|
||||
affectsEmit: true,
|
||||
isFilePath: true,
|
||||
paramType: Diagnostics.LOCATION,
|
||||
category: Diagnostics.Basic_Options,
|
||||
@@ -334,6 +341,7 @@ namespace ts {
|
||||
{
|
||||
name: "composite",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
isTSConfigOnly: true,
|
||||
category: Diagnostics.Basic_Options,
|
||||
description: Diagnostics.Enable_project_compilation,
|
||||
@@ -341,6 +349,7 @@ namespace ts {
|
||||
{
|
||||
name: "tsBuildInfoFile",
|
||||
type: "string",
|
||||
affectsEmit: true,
|
||||
isFilePath: true,
|
||||
paramType: Diagnostics.FILE,
|
||||
category: Diagnostics.Basic_Options,
|
||||
@@ -349,6 +358,7 @@ namespace ts {
|
||||
{
|
||||
name: "removeComments",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
showInSimplifiedHelpView: true,
|
||||
category: Diagnostics.Basic_Options,
|
||||
description: Diagnostics.Do_not_emit_comments_to_output,
|
||||
@@ -356,6 +366,7 @@ namespace ts {
|
||||
{
|
||||
name: "noEmit",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
showInSimplifiedHelpView: true,
|
||||
category: Diagnostics.Basic_Options,
|
||||
description: Diagnostics.Do_not_emit_outputs,
|
||||
@@ -363,12 +374,14 @@ namespace ts {
|
||||
{
|
||||
name: "importHelpers",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Basic_Options,
|
||||
description: Diagnostics.Import_emit_helpers_from_tslib
|
||||
},
|
||||
{
|
||||
name: "downlevelIteration",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Basic_Options,
|
||||
description: Diagnostics.Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3
|
||||
},
|
||||
@@ -580,6 +593,7 @@ namespace ts {
|
||||
{
|
||||
name: "sourceRoot",
|
||||
type: "string",
|
||||
affectsEmit: true,
|
||||
paramType: Diagnostics.LOCATION,
|
||||
category: Diagnostics.Source_Map_Options,
|
||||
description: Diagnostics.Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations,
|
||||
@@ -587,6 +601,7 @@ namespace ts {
|
||||
{
|
||||
name: "mapRoot",
|
||||
type: "string",
|
||||
affectsEmit: true,
|
||||
paramType: Diagnostics.LOCATION,
|
||||
category: Diagnostics.Source_Map_Options,
|
||||
description: Diagnostics.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations,
|
||||
@@ -594,12 +609,14 @@ namespace ts {
|
||||
{
|
||||
name: "inlineSourceMap",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Source_Map_Options,
|
||||
description: Diagnostics.Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file
|
||||
},
|
||||
{
|
||||
name: "inlineSources",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Source_Map_Options,
|
||||
description: Diagnostics.Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap_to_be_set
|
||||
},
|
||||
@@ -635,6 +652,7 @@ namespace ts {
|
||||
{
|
||||
name: "out",
|
||||
type: "string",
|
||||
affectsEmit: true,
|
||||
isFilePath: false, // This is intentionally broken to support compatability with existing tsconfig files
|
||||
// for correct behaviour, please use outFile
|
||||
category: Diagnostics.Advanced_Options,
|
||||
@@ -644,6 +662,7 @@ namespace ts {
|
||||
{
|
||||
name: "reactNamespace",
|
||||
type: "string",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Advanced_Options,
|
||||
description: Diagnostics.Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react_JSX_emit
|
||||
},
|
||||
@@ -662,6 +681,7 @@ namespace ts {
|
||||
{
|
||||
name: "emitBOM",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Advanced_Options,
|
||||
description: Diagnostics.Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files
|
||||
},
|
||||
@@ -677,6 +697,7 @@ namespace ts {
|
||||
crlf: NewLineKind.CarriageReturnLineFeed,
|
||||
lf: NewLineKind.LineFeed
|
||||
}),
|
||||
affectsEmit: true,
|
||||
paramType: Diagnostics.NEWLINE,
|
||||
category: Diagnostics.Advanced_Options,
|
||||
description: Diagnostics.Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix,
|
||||
@@ -704,6 +725,7 @@ namespace ts {
|
||||
{
|
||||
name: "stripInternal",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Advanced_Options,
|
||||
description: Diagnostics.Do_not_emit_declarations_for_code_that_has_an_internal_annotation,
|
||||
},
|
||||
@@ -724,24 +746,28 @@ namespace ts {
|
||||
{
|
||||
name: "noEmitHelpers",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Advanced_Options,
|
||||
description: Diagnostics.Do_not_generate_custom_helper_functions_like_extends_in_compiled_output
|
||||
},
|
||||
{
|
||||
name: "noEmitOnError",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Advanced_Options,
|
||||
description: Diagnostics.Do_not_emit_outputs_if_any_errors_were_reported,
|
||||
},
|
||||
{
|
||||
name: "preserveConstEnums",
|
||||
type: "boolean",
|
||||
affectsEmit: true,
|
||||
category: Diagnostics.Advanced_Options,
|
||||
description: Diagnostics.Do_not_erase_const_enum_declarations_in_generated_code
|
||||
},
|
||||
{
|
||||
name: "declarationDir",
|
||||
type: "string",
|
||||
affectsEmit: true,
|
||||
isFilePath: true,
|
||||
paramType: Diagnostics.DIRECTORY,
|
||||
category: Diagnostics.Advanced_Options,
|
||||
@@ -826,6 +852,10 @@ namespace ts {
|
||||
export const semanticDiagnosticsOptionDeclarations: ReadonlyArray<CommandLineOption> =
|
||||
optionDeclarations.filter(option => !!option.affectsSemanticDiagnostics);
|
||||
|
||||
/* @internal */
|
||||
export const affectsEmitOptionDeclarations: ReadonlyArray<CommandLineOption> =
|
||||
optionDeclarations.filter(option => !!option.affectsEmit);
|
||||
|
||||
/* @internal */
|
||||
export const moduleResolutionOptionDeclarations: ReadonlyArray<CommandLineOption> =
|
||||
optionDeclarations.filter(option => !!option.affectsModuleResolution);
|
||||
|
||||
@@ -927,6 +927,7 @@ namespace ts {
|
||||
getIdentifierCount: () => getDiagnosticsProducingTypeChecker().getIdentifierCount(),
|
||||
getSymbolCount: () => getDiagnosticsProducingTypeChecker().getSymbolCount(),
|
||||
getTypeCount: () => getDiagnosticsProducingTypeChecker().getTypeCount(),
|
||||
getRelationCacheSizes: () => getDiagnosticsProducingTypeChecker().getRelationCacheSizes(),
|
||||
getFileProcessingDiagnostics: () => fileProcessingDiagnostics,
|
||||
getResolvedTypeReferenceDirectives: () => resolvedTypeReferenceDirectives,
|
||||
isSourceFileFromExternalLibrary,
|
||||
|
||||
@@ -2961,6 +2961,7 @@ namespace ts {
|
||||
/* @internal */ getIdentifierCount(): number;
|
||||
/* @internal */ getSymbolCount(): number;
|
||||
/* @internal */ getTypeCount(): number;
|
||||
/* @internal */ getRelationCacheSizes(): { assignable: number, identity: number, subtype: number };
|
||||
|
||||
/* @internal */ getFileProcessingDiagnostics(): DiagnosticCollection;
|
||||
/* @internal */ getResolvedTypeReferenceDirectives(): Map<ResolvedTypeReferenceDirective | undefined>;
|
||||
@@ -3246,6 +3247,7 @@ namespace ts {
|
||||
/* @internal */ getIdentifierCount(): number;
|
||||
/* @internal */ getSymbolCount(): number;
|
||||
/* @internal */ getTypeCount(): number;
|
||||
/* @internal */ getRelationCacheSizes(): { assignable: number, identity: number, subtype: number };
|
||||
|
||||
/* @internal */ isArrayType(type: Type): boolean;
|
||||
/* @internal */ isTupleType(type: Type): boolean;
|
||||
@@ -4827,6 +4829,7 @@ namespace ts {
|
||||
affectsModuleResolution?: true; // currently same effect as `affectsSourceFile`
|
||||
affectsBindDiagnostics?: true; // true if this affects binding (currently same effect as `affectsSourceFile`)
|
||||
affectsSemanticDiagnostics?: true; // true if option affects semantic diagnostics
|
||||
affectsEmit?: true; // true if the options affects emit
|
||||
}
|
||||
|
||||
/* @internal */
|
||||
|
||||
@@ -7320,6 +7320,11 @@ namespace ts {
|
||||
semanticDiagnosticsOptionDeclarations.some(option => !isJsonEqual(getCompilerOptionValue(oldOptions, option), getCompilerOptionValue(newOptions, option)));
|
||||
}
|
||||
|
||||
export function compilerOptionsAffectEmit(newOptions: CompilerOptions, oldOptions: CompilerOptions): boolean {
|
||||
return oldOptions !== newOptions &&
|
||||
affectsEmitOptionDeclarations.some(option => !isJsonEqual(getCompilerOptionValue(oldOptions, option), getCompilerOptionValue(newOptions, option)));
|
||||
}
|
||||
|
||||
export function getCompilerOptionValue(options: CompilerOptions, option: CommandLineOption): unknown {
|
||||
return option.strictFlag ? getStrictOptionValue(options, option.name as StrictOptionName) : options[option.name];
|
||||
}
|
||||
|
||||
@@ -397,19 +397,6 @@ namespace fakes {
|
||||
const value = super.readFile(path);
|
||||
if (!value || !ts.isBuildInfoFile(path)) return value;
|
||||
const buildInfo = ts.getBuildInfo(value);
|
||||
if (buildInfo.program) {
|
||||
// Fix lib signatures
|
||||
for (const path of ts.getOwnKeys(buildInfo.program.fileInfos)) {
|
||||
if (ts.startsWith(path, "/lib/")) {
|
||||
const currentValue = buildInfo.program.fileInfos[path];
|
||||
ts.Debug.assert(currentValue.signature === path);
|
||||
ts.Debug.assert(currentValue.signature === currentValue.version);
|
||||
const text = super.readFile(path)!;
|
||||
const signature = ts.generateDjb2Hash(text);
|
||||
buildInfo.program.fileInfos[path] = { version: signature, signature };
|
||||
}
|
||||
}
|
||||
}
|
||||
ts.Debug.assert(buildInfo.version === version);
|
||||
buildInfo.version = ts.version;
|
||||
return ts.getBuildInfoText(buildInfo);
|
||||
@@ -419,15 +406,6 @@ namespace fakes {
|
||||
if (!ts.isBuildInfoFile(fileName)) return super.writeFile(fileName, content, writeByteOrderMark);
|
||||
const buildInfo = ts.getBuildInfo(content);
|
||||
if (buildInfo.program) {
|
||||
// Fix lib signatures
|
||||
for (const path of ts.getOwnKeys(buildInfo.program.fileInfos)) {
|
||||
if (ts.startsWith(path, "/lib/")) {
|
||||
const currentValue = buildInfo.program.fileInfos[path];
|
||||
ts.Debug.assert(currentValue.signature === currentValue.version);
|
||||
buildInfo.program.fileInfos[path] = { version: path, signature: path };
|
||||
}
|
||||
}
|
||||
|
||||
// reference Map
|
||||
if (buildInfo.program.referencedMap) {
|
||||
const referencedMap: ts.MapLike<string[]> = {};
|
||||
|
||||
@@ -92,6 +92,7 @@
|
||||
"unittests/tsbuild/amdModulesWithOut.ts",
|
||||
"unittests/tsbuild/emptyFiles.ts",
|
||||
"unittests/tsbuild/graphOrdering.ts",
|
||||
"unittests/tsbuild/lateBoundSymbol.ts",
|
||||
"unittests/tsbuild/missingExtendedFile.ts",
|
||||
"unittests/tsbuild/outFile.ts",
|
||||
"unittests/tsbuild/referencesWithRootDirInParent.ts",
|
||||
|
||||
@@ -62,31 +62,26 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
const libContent = `${TestFSWithWatch.libFile.content}
|
||||
interface ReadonlyArray<T> {}
|
||||
declare const console: { log(msg: any): void; };`;
|
||||
|
||||
export function loadProjectFromDisk(root: string, time?: vfs.FileSystemOptions["time"]): vfs.FileSystem {
|
||||
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.mkdirSync("/lib");
|
||||
fs.writeFileSync("/lib/lib.d.ts", libContent);
|
||||
fs.makeReadonly();
|
||||
return fs;
|
||||
}
|
||||
|
||||
export function getLibs() {
|
||||
return [
|
||||
"/lib/lib.d.ts",
|
||||
"/lib/lib.es5.d.ts",
|
||||
"/lib/lib.dom.d.ts",
|
||||
"/lib/lib.webworker.importscripts.d.ts",
|
||||
"/lib/lib.scripthost.d.ts"
|
||||
];
|
||||
}
|
||||
|
||||
function generateSourceMapBaselineFiles(fs: vfs.FileSystem, mapFileNames: ReadonlyArray<string>) {
|
||||
for (const mapFile of mapFileNames) {
|
||||
if (!fs.existsSync(mapFile)) continue;
|
||||
@@ -285,8 +280,10 @@ Mismatch Actual(path, actual, expected): ${JSON.stringify(arrayFrom(mapDefinedIt
|
||||
let newFs: vfs.FileSystem;
|
||||
let actualReadFileMap: Map<number>;
|
||||
let host: fakes.SolutionBuilderHost;
|
||||
let beforeBuildTime: number;
|
||||
let afterBuildTime: number;
|
||||
before(() => {
|
||||
assert.equal(fs.statSync(lastProjectOutputJs).mtimeMs, firstBuildTime, "First build timestamp is correct");
|
||||
beforeBuildTime = fs.statSync(lastProjectOutputJs).mtimeMs;
|
||||
tick();
|
||||
newFs = fs.shadow();
|
||||
tick();
|
||||
@@ -298,14 +295,18 @@ Mismatch Actual(path, actual, expected): ${JSON.stringify(arrayFrom(mapDefinedIt
|
||||
expectedBuildInfoFilesForSectionBaselines,
|
||||
modifyFs: incrementalModifyFs,
|
||||
}));
|
||||
assert.equal(newFs.statSync(lastProjectOutputJs).mtimeMs, time(), "Second build timestamp is correct");
|
||||
afterBuildTime = newFs.statSync(lastProjectOutputJs).mtimeMs;
|
||||
});
|
||||
after(() => {
|
||||
newFs = undefined!;
|
||||
actualReadFileMap = undefined!;
|
||||
host = undefined!;
|
||||
});
|
||||
if (!baselineOnly) {
|
||||
it("verify build output times", () => {
|
||||
assert.equal(beforeBuildTime, firstBuildTime, "First build timestamp is correct");
|
||||
assert.equal(afterBuildTime, time(), "Second build timestamp is correct");
|
||||
});
|
||||
if (!baselineOnly || verifyDiagnostics) {
|
||||
it(`verify diagnostics`, () => {
|
||||
host.assertDiagnosticMessages(...(incrementalExpectedDiagnostics || emptyArray));
|
||||
});
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
namespace ts {
|
||||
describe("unittests:: tsbuild:: lateBoundSymbol:: interface is merged and contains late bound member", () => {
|
||||
let projFs: vfs.FileSystem;
|
||||
const { time, tick } = getTime();
|
||||
before(() => {
|
||||
projFs = loadProjectFromDisk("tests/projects/lateBoundSymbol", time);
|
||||
});
|
||||
after(() => {
|
||||
projFs = undefined!; // Release the contents
|
||||
});
|
||||
|
||||
verifyTsbuildOutput({
|
||||
scenario: "interface is merged and contains late bound member",
|
||||
projFs: () => projFs,
|
||||
time,
|
||||
tick,
|
||||
proj: "lateBoundSymbol",
|
||||
rootNames: ["/src/tsconfig.json"],
|
||||
expectedMapFileNames: emptyArray,
|
||||
lastProjectOutputJs: "/src/src/main.js",
|
||||
outputFiles: [
|
||||
"/src/src/hkt.js",
|
||||
"/src/src/main.js",
|
||||
"/src/tsconfig.tsbuildinfo",
|
||||
],
|
||||
initialBuild: {
|
||||
modifyFs: noop,
|
||||
expectedDiagnostics: [
|
||||
getExpectedDiagnosticForProjectsInBuild("src/tsconfig.json"),
|
||||
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, "src/tsconfig.json", "src/src/hkt.js"],
|
||||
[Diagnostics.Building_project_0, "/src/tsconfig.json"]
|
||||
]
|
||||
},
|
||||
incrementalDtsUnchangedBuild: {
|
||||
modifyFs: fs => replaceText(fs, "/src/src/main.ts", "const x = 10;", ""),
|
||||
expectedDiagnostics: [
|
||||
getExpectedDiagnosticForProjectsInBuild("src/tsconfig.json"),
|
||||
[Diagnostics.Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2, "src/tsconfig.json", "src/src/hkt.js", "src/src/main.ts"],
|
||||
[Diagnostics.Building_project_0, "/src/tsconfig.json"],
|
||||
[Diagnostics.Updating_unchanged_output_timestamps_of_project_0, "/src/tsconfig.json"]
|
||||
]
|
||||
},
|
||||
baselineOnly: true,
|
||||
verifyDiagnostics: true
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -399,14 +399,14 @@ export class cNew {}`);
|
||||
const builder = createSolutionBuilder(host, ["/src/tests"], { listFiles: true });
|
||||
builder.buildAllProjects();
|
||||
assert.deepEqual(host.traces, [
|
||||
...getLibs(),
|
||||
"/lib/lib.d.ts",
|
||||
"/src/core/anotherModule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/core/some_decl.d.ts",
|
||||
...getLibs(),
|
||||
"/lib/lib.d.ts",
|
||||
...getCoreOutputs(),
|
||||
"/src/logic/index.ts",
|
||||
...getLibs(),
|
||||
"/lib/lib.d.ts",
|
||||
...getCoreOutputs(),
|
||||
"/src/logic/index.d.ts",
|
||||
"/src/tests/index.ts"
|
||||
@@ -720,6 +720,47 @@ class someClass { }`),
|
||||
"/src/tests/tsconfig.tsbuildinfo",
|
||||
]
|
||||
});
|
||||
|
||||
verifyTsbuildOutput({
|
||||
scenario: "when declaration option changes",
|
||||
projFs: () => projFs,
|
||||
time,
|
||||
tick,
|
||||
proj: "sample1",
|
||||
rootNames: ["/src/core"],
|
||||
expectedMapFileNames: emptyArray,
|
||||
lastProjectOutputJs: "/src/core/index.js",
|
||||
initialBuild: {
|
||||
modifyFs: fs => fs.writeFileSync("/src/core/tsconfig.json", `{
|
||||
"compilerOptions": {
|
||||
"incremental": true,
|
||||
"skipDefaultLibCheck": true
|
||||
}
|
||||
}`),
|
||||
expectedDiagnostics: [
|
||||
getExpectedDiagnosticForProjectsInBuild("src/core/tsconfig.json"),
|
||||
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, "src/core/tsconfig.json", "src/core/anotherModule.js"],
|
||||
[Diagnostics.Building_project_0, "/src/core/tsconfig.json"],
|
||||
]
|
||||
},
|
||||
incrementalDtsChangedBuild: {
|
||||
modifyFs: fs => replaceText(fs, "/src/core/tsconfig.json", `"incremental": true,`, `"incremental": true, "declaration": true,`),
|
||||
expectedDiagnostics: [
|
||||
getExpectedDiagnosticForProjectsInBuild("src/core/tsconfig.json"),
|
||||
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, "src/core/tsconfig.json", "src/core/anotherModule.d.ts"],
|
||||
[Diagnostics.Building_project_0, "/src/core/tsconfig.json"]
|
||||
]
|
||||
},
|
||||
outputFiles: [
|
||||
"/src/core/anotherModule.js",
|
||||
"/src/core/anotherModule.d.ts",
|
||||
"/src/core/index.js",
|
||||
"/src/core/index.d.ts",
|
||||
"/src/core/tsconfig.tsbuildinfo",
|
||||
],
|
||||
baselineOnly: true,
|
||||
verifyDiagnostics: true
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -7,12 +7,12 @@ namespace ts {
|
||||
"/src/c.js"
|
||||
];
|
||||
const expectedFileTraces = [
|
||||
...getLibs(),
|
||||
"/lib/lib.d.ts",
|
||||
"/src/a.ts",
|
||||
...getLibs(),
|
||||
"/lib/lib.d.ts",
|
||||
"/src/a.d.ts",
|
||||
"/src/b.ts",
|
||||
...getLibs(),
|
||||
"/lib/lib.d.ts",
|
||||
"/src/a.d.ts",
|
||||
"/src/b.d.ts",
|
||||
"/src/refs/a.d.ts",
|
||||
@@ -63,9 +63,9 @@ export const b = new A();`);
|
||||
// Error in b build only a
|
||||
const allExpectedOutputs = ["/src/a.js", "/src/a.d.ts"];
|
||||
const expectedFileTraces = [
|
||||
...getLibs(),
|
||||
"/lib/lib.d.ts",
|
||||
"/src/a.ts",
|
||||
...getLibs(),
|
||||
"/lib/lib.d.ts",
|
||||
"/src/b.ts"
|
||||
];
|
||||
verifyBuild(fs => modifyFsBTsToNonRelativeImport(fs, "node"),
|
||||
|
||||
@@ -340,6 +340,10 @@ namespace ts {
|
||||
const checkTime = performance.getDuration("Check");
|
||||
const emitTime = performance.getDuration("Emit");
|
||||
if (compilerOptions.extendedDiagnostics) {
|
||||
const caches = program.getRelationCacheSizes();
|
||||
reportCountStatistic("Assignability cache size", caches.assignable);
|
||||
reportCountStatistic("Identity cache size", caches.identity);
|
||||
reportCountStatistic("Subtype cache size", caches.subtype);
|
||||
performance.forEachMeasure((name, duration) => reportTimeStatistic(`${name} time`, duration));
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -188,6 +188,7 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(108,5): error TS23
|
||||
!!! error TS2322: Type '123' is not assignable to type '"some string"'.
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
// Repros from #30938
|
||||
|
||||
function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
|
||||
@@ -197,4 +198,12 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(108,5): error TS23
|
||||
function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void) {
|
||||
cb(param[0]);
|
||||
}
|
||||
=======
|
||||
// Repro from #30920
|
||||
|
||||
type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
|
||||
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
|
||||
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
|
||||
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
|
||||
>>>>>>> master
|
||||
|
||||
@@ -109,6 +109,7 @@ function get123<K extends keyof Type>(): Type[K] {
|
||||
return 123; // Error
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
// Repros from #30938
|
||||
|
||||
function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
|
||||
@@ -118,6 +119,14 @@ function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(par
|
||||
function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void) {
|
||||
cb(param[0]);
|
||||
}
|
||||
=======
|
||||
// Repro from #30920
|
||||
|
||||
type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
|
||||
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
|
||||
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
|
||||
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
|
||||
>>>>>>> master
|
||||
|
||||
|
||||
//// [keyofAndIndexedAccess2.js]
|
||||
|
||||
@@ -388,6 +388,7 @@ function get123<K extends keyof Type>(): Type[K] {
|
||||
return 123; // Error
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
// Repros from #30938
|
||||
|
||||
function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
|
||||
@@ -424,4 +425,51 @@ function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void
|
||||
>cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 116, 47))
|
||||
>param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 116, 38))
|
||||
}
|
||||
=======
|
||||
// Repro from #30920
|
||||
|
||||
type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
|
||||
>StrictExtract : Symbol(StrictExtract, Decl(keyofAndIndexedAccess2.ts, 108, 1))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 19))
|
||||
>U : Symbol(U, Decl(keyofAndIndexedAccess2.ts, 112, 21))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 19))
|
||||
>U : Symbol(U, Decl(keyofAndIndexedAccess2.ts, 112, 21))
|
||||
>U : Symbol(U, Decl(keyofAndIndexedAccess2.ts, 112, 21))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 19))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 19))
|
||||
|
||||
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
|
||||
>StrictExclude : Symbol(StrictExclude, Decl(keyofAndIndexedAccess2.ts, 112, 73))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 113, 19))
|
||||
>U : Symbol(U, Decl(keyofAndIndexedAccess2.ts, 113, 21))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 113, 19))
|
||||
>StrictExtract : Symbol(StrictExtract, Decl(keyofAndIndexedAccess2.ts, 108, 1))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 113, 19))
|
||||
>U : Symbol(U, Decl(keyofAndIndexedAccess2.ts, 113, 21))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 113, 19))
|
||||
|
||||
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
|
||||
>A : Symbol(A, Decl(keyofAndIndexedAccess2.ts, 113, 69))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 114, 7))
|
||||
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 114, 15))
|
||||
>P : Symbol(P, Decl(keyofAndIndexedAccess2.ts, 114, 23))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 114, 7))
|
||||
>P : Symbol(P, Decl(keyofAndIndexedAccess2.ts, 114, 23))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 114, 7))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 114, 7))
|
||||
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 114, 15))
|
||||
|
||||
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
|
||||
>B : Symbol(B, Decl(keyofAndIndexedAccess2.ts, 114, 62))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 115, 7))
|
||||
>V : Symbol(V, Decl(keyofAndIndexedAccess2.ts, 115, 9))
|
||||
>A : Symbol(A, Decl(keyofAndIndexedAccess2.ts, 113, 69))
|
||||
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 115, 20))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 115, 7))
|
||||
>StrictExclude : Symbol(StrictExclude, Decl(keyofAndIndexedAccess2.ts, 112, 73))
|
||||
>B : Symbol(B, Decl(keyofAndIndexedAccess2.ts, 114, 62))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 115, 7))
|
||||
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 115, 20))
|
||||
>V : Symbol(V, Decl(keyofAndIndexedAccess2.ts, 115, 9))
|
||||
>>>>>>> master
|
||||
|
||||
|
||||
@@ -423,6 +423,7 @@ function get123<K extends keyof Type>(): Type[K] {
|
||||
>123 : 123
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
// Repros from #30938
|
||||
|
||||
function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
|
||||
@@ -456,4 +457,19 @@ function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void
|
||||
>param : T
|
||||
>0 : 0
|
||||
}
|
||||
=======
|
||||
// Repro from #30920
|
||||
|
||||
type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
|
||||
>StrictExtract : StrictExtract<T, U>
|
||||
|
||||
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
|
||||
>StrictExclude : StrictExclude<T, U>
|
||||
|
||||
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
|
||||
>A : A<T>
|
||||
|
||||
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
|
||||
>B : A<{ [Q in keyof T]: StrictExclude<A<{ [Q in keyof T[Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<any>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>
|
||||
>>>>>>> master
|
||||
|
||||
|
||||
@@ -2,7 +2,21 @@
|
||||
declare const fn: <K extends string, V>(object: { [Key in K]: V }) => object;
|
||||
declare const a: { [index: string]: number };
|
||||
fn(a);
|
||||
|
||||
// Repro from #30218
|
||||
|
||||
declare function enumValues<K extends string, V extends string>(e: Record<K, V>): V[];
|
||||
|
||||
enum E { A = 'foo', B = 'bar' }
|
||||
|
||||
let x: E[] = enumValues(E);
|
||||
|
||||
|
||||
//// [mappedToToIndexSignatureInference.js]
|
||||
fn(a);
|
||||
var E;
|
||||
(function (E) {
|
||||
E["A"] = "foo";
|
||||
E["B"] = "bar";
|
||||
})(E || (E = {}));
|
||||
var x = enumValues(E);
|
||||
|
||||
@@ -16,3 +16,26 @@ fn(a);
|
||||
>fn : Symbol(fn, Decl(mappedToToIndexSignatureInference.ts, 0, 13))
|
||||
>a : Symbol(a, Decl(mappedToToIndexSignatureInference.ts, 1, 13))
|
||||
|
||||
// Repro from #30218
|
||||
|
||||
declare function enumValues<K extends string, V extends string>(e: Record<K, V>): V[];
|
||||
>enumValues : Symbol(enumValues, Decl(mappedToToIndexSignatureInference.ts, 2, 6))
|
||||
>K : Symbol(K, Decl(mappedToToIndexSignatureInference.ts, 6, 28))
|
||||
>V : Symbol(V, Decl(mappedToToIndexSignatureInference.ts, 6, 45))
|
||||
>e : Symbol(e, Decl(mappedToToIndexSignatureInference.ts, 6, 64))
|
||||
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
|
||||
>K : Symbol(K, Decl(mappedToToIndexSignatureInference.ts, 6, 28))
|
||||
>V : Symbol(V, Decl(mappedToToIndexSignatureInference.ts, 6, 45))
|
||||
>V : Symbol(V, Decl(mappedToToIndexSignatureInference.ts, 6, 45))
|
||||
|
||||
enum E { A = 'foo', B = 'bar' }
|
||||
>E : Symbol(E, Decl(mappedToToIndexSignatureInference.ts, 6, 86))
|
||||
>A : Symbol(E.A, Decl(mappedToToIndexSignatureInference.ts, 8, 8))
|
||||
>B : Symbol(E.B, Decl(mappedToToIndexSignatureInference.ts, 8, 19))
|
||||
|
||||
let x: E[] = enumValues(E);
|
||||
>x : Symbol(x, Decl(mappedToToIndexSignatureInference.ts, 10, 3))
|
||||
>E : Symbol(E, Decl(mappedToToIndexSignatureInference.ts, 6, 86))
|
||||
>enumValues : Symbol(enumValues, Decl(mappedToToIndexSignatureInference.ts, 2, 6))
|
||||
>E : Symbol(E, Decl(mappedToToIndexSignatureInference.ts, 6, 86))
|
||||
|
||||
|
||||
@@ -12,3 +12,22 @@ fn(a);
|
||||
>fn : <K extends string, V>(object: { [Key in K]: V; }) => object
|
||||
>a : { [index: string]: number; }
|
||||
|
||||
// Repro from #30218
|
||||
|
||||
declare function enumValues<K extends string, V extends string>(e: Record<K, V>): V[];
|
||||
>enumValues : <K extends string, V extends string>(e: Record<K, V>) => V[]
|
||||
>e : Record<K, V>
|
||||
|
||||
enum E { A = 'foo', B = 'bar' }
|
||||
>E : E
|
||||
>A : E.A
|
||||
>'foo' : "foo"
|
||||
>B : E.B
|
||||
>'bar' : "bar"
|
||||
|
||||
let x: E[] = enumValues(E);
|
||||
>x : E[]
|
||||
>enumValues(E) : E[]
|
||||
>enumValues : <K extends string, V extends string>(e: Record<K, V>) => V[]
|
||||
>E : typeof E
|
||||
|
||||
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
//// [/src/src/main.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
var sym = Symbol();
|
||||
|
||||
|
||||
//// [/src/src/main.ts]
|
||||
import { HKT } from "./hkt";
|
||||
|
||||
const sym = Symbol();
|
||||
|
||||
declare module "./hkt" {
|
||||
interface HKT<T> {
|
||||
[sym]: { a: T }
|
||||
}
|
||||
}
|
||||
|
||||
type A = HKT<number>[typeof sym];
|
||||
|
||||
//// [/src/tsconfig.tsbuildinfo]
|
||||
{
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/src/globals.d.ts": {
|
||||
"version": "-1994196675",
|
||||
"signature": "-1994196675"
|
||||
},
|
||||
"/src/src/hkt.ts": {
|
||||
"version": "675797797",
|
||||
"signature": "2373810515"
|
||||
},
|
||||
"/src/src/main.ts": {
|
||||
"version": "-27494779858",
|
||||
"signature": "-7779857705"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"rootDir": "/src/src",
|
||||
"incremental": true,
|
||||
"configFilePath": "/src/tsconfig.json"
|
||||
},
|
||||
"referencedMap": {
|
||||
"/src/src/main.ts": [
|
||||
"/src/src/hkt.ts"
|
||||
]
|
||||
},
|
||||
"exportedModulesMap": {
|
||||
"/src/src/main.ts": [
|
||||
"/src/src/hkt.ts"
|
||||
]
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/lib/lib.d.ts",
|
||||
"/src/src/globals.d.ts",
|
||||
"/src/src/hkt.ts",
|
||||
"/src/src/main.ts"
|
||||
]
|
||||
},
|
||||
"version": "FakeTSVersion"
|
||||
}
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
//// [/src/src/hkt.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
|
||||
|
||||
//// [/src/src/main.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
var sym = Symbol();
|
||||
var x = 10;
|
||||
|
||||
|
||||
//// [/src/tsconfig.tsbuildinfo]
|
||||
{
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/src/globals.d.ts": {
|
||||
"version": "-1994196675",
|
||||
"signature": "-1994196675"
|
||||
},
|
||||
"/src/src/hkt.ts": {
|
||||
"version": "675797797",
|
||||
"signature": "2373810515"
|
||||
},
|
||||
"/src/src/main.ts": {
|
||||
"version": "-28387946490",
|
||||
"signature": "-7779857705"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"rootDir": "/src/src",
|
||||
"incremental": true,
|
||||
"configFilePath": "/src/tsconfig.json"
|
||||
},
|
||||
"referencedMap": {
|
||||
"/src/src/main.ts": [
|
||||
"/src/src/hkt.ts"
|
||||
]
|
||||
},
|
||||
"exportedModulesMap": {
|
||||
"/src/src/main.ts": [
|
||||
"/src/src/hkt.ts"
|
||||
]
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/lib/lib.d.ts",
|
||||
"/src/src/globals.d.ts",
|
||||
"/src/src/hkt.ts",
|
||||
"/src/src/main.ts"
|
||||
]
|
||||
},
|
||||
"version": "FakeTSVersion"
|
||||
}
|
||||
|
||||
+6
-66
@@ -172,24 +172,8 @@ export class someClass { }
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/anothermodule.ts": {
|
||||
"version": "-2676574883",
|
||||
@@ -215,10 +199,6 @@ export class someClass { }
|
||||
"exportedModulesMap": {},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/core/some_decl.d.ts"
|
||||
@@ -232,24 +212,8 @@ export class someClass { }
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-2069755619",
|
||||
@@ -285,10 +249,6 @@ export class someClass { }
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/logic/index.ts"
|
||||
@@ -302,24 +262,8 @@ export class someClass { }
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-2069755619",
|
||||
@@ -365,10 +309,6 @@ export class someClass { }
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/logic/index.ts",
|
||||
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
//// [/src/core/anotherModule.d.ts]
|
||||
export declare const World = "hello";
|
||||
|
||||
|
||||
//// [/src/core/index.d.ts]
|
||||
export declare const someString: string;
|
||||
export declare function leftPad(s: string, n: number): string;
|
||||
export declare function multiply(a: number, b: number): number;
|
||||
|
||||
|
||||
//// [/src/core/tsconfig.json]
|
||||
{
|
||||
"compilerOptions": {
|
||||
"incremental": true, "declaration": true,
|
||||
"skipDefaultLibCheck": true
|
||||
}
|
||||
}
|
||||
|
||||
//// [/src/core/tsconfig.tsbuildinfo]
|
||||
{
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/anothermodule.ts": {
|
||||
"version": "-2676574883",
|
||||
"signature": "-8396256275"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-18749805970",
|
||||
"signature": "1874987148"
|
||||
},
|
||||
"/src/core/some_decl.d.ts": {
|
||||
"version": "-9253692965",
|
||||
"signature": "-9253692965"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"incremental": true,
|
||||
"declaration": true,
|
||||
"skipDefaultLibCheck": true,
|
||||
"configFilePath": "/src/core/tsconfig.json"
|
||||
},
|
||||
"referencedMap": {},
|
||||
"exportedModulesMap": {},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/lib/lib.d.ts",
|
||||
"/src/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/core/some_decl.d.ts"
|
||||
]
|
||||
},
|
||||
"version": "FakeTSVersion"
|
||||
}
|
||||
|
||||
+4
-44
@@ -25,24 +25,8 @@ export declare const m: typeof mod;
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-13851440507",
|
||||
@@ -79,10 +63,6 @@ export declare const m: typeof mod;
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/logic/index.ts"
|
||||
@@ -96,24 +76,8 @@ export declare const m: typeof mod;
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-13851440507",
|
||||
@@ -159,10 +123,6 @@ export declare const m: typeof mod;
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/logic/index.ts",
|
||||
|
||||
+2
-22
@@ -25,24 +25,8 @@ class someClass { }
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/anothermodule.ts": {
|
||||
"version": "-2676574883",
|
||||
@@ -68,10 +52,6 @@ class someClass { }
|
||||
"exportedModulesMap": {},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/core/some_decl.d.ts"
|
||||
|
||||
@@ -185,24 +185,8 @@ exports.multiply = multiply;
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/anothermodule.ts": {
|
||||
"version": "-2676574883",
|
||||
@@ -228,10 +212,6 @@ exports.multiply = multiply;
|
||||
"exportedModulesMap": {},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/core/some_decl.d.ts"
|
||||
@@ -390,24 +370,8 @@ sourceFile:index.ts
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-13851440507",
|
||||
@@ -443,10 +407,6 @@ sourceFile:index.ts
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/logic/index.ts"
|
||||
@@ -476,24 +436,8 @@ exports.m = mod;
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-13851440507",
|
||||
@@ -539,10 +483,6 @@ exports.m = mod;
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/logic/index.ts",
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
//// [/src/core/anotherModule.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
exports.World = "hello";
|
||||
|
||||
|
||||
//// [/src/core/index.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
exports.someString = "HELLO WORLD";
|
||||
function leftPad(s, n) { return s + n; }
|
||||
exports.leftPad = leftPad;
|
||||
function multiply(a, b) { return a * b; }
|
||||
exports.multiply = multiply;
|
||||
|
||||
|
||||
//// [/src/core/tsconfig.json]
|
||||
{
|
||||
"compilerOptions": {
|
||||
"incremental": true,
|
||||
"skipDefaultLibCheck": true
|
||||
}
|
||||
}
|
||||
|
||||
//// [/src/core/tsconfig.tsbuildinfo]
|
||||
{
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/anothermodule.ts": {
|
||||
"version": "-2676574883",
|
||||
"signature": "-8396256275"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-18749805970",
|
||||
"signature": "1874987148"
|
||||
},
|
||||
"/src/core/some_decl.d.ts": {
|
||||
"version": "-9253692965",
|
||||
"signature": "-9253692965"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"incremental": true,
|
||||
"skipDefaultLibCheck": true,
|
||||
"configFilePath": "/src/core/tsconfig.json"
|
||||
},
|
||||
"referencedMap": {},
|
||||
"exportedModulesMap": {},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/lib/lib.d.ts",
|
||||
"/src/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/core/some_decl.d.ts"
|
||||
]
|
||||
},
|
||||
"version": "FakeTSVersion"
|
||||
}
|
||||
|
||||
+6
-66
@@ -185,24 +185,8 @@ exports.multiply = multiply;
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/anothermodule.ts": {
|
||||
"version": "-2676574883",
|
||||
@@ -228,10 +212,6 @@ exports.multiply = multiply;
|
||||
"exportedModulesMap": {},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/core/some_decl.d.ts"
|
||||
@@ -390,24 +370,8 @@ sourceFile:index.ts
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-13851440507",
|
||||
@@ -443,10 +407,6 @@ sourceFile:index.ts
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/logic/index.ts"
|
||||
@@ -476,24 +436,8 @@ exports.m = mod;
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-13851440507",
|
||||
@@ -539,10 +483,6 @@ exports.m = mod;
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/logic/index.ts",
|
||||
|
||||
+6
-66
@@ -185,24 +185,8 @@ exports.multiply = multiply;
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/anothermodule.ts": {
|
||||
"version": "-2676574883",
|
||||
@@ -228,10 +212,6 @@ exports.multiply = multiply;
|
||||
"exportedModulesMap": {},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/core/some_decl.d.ts"
|
||||
@@ -390,24 +370,8 @@ sourceFile:index.ts
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-13851440507",
|
||||
@@ -444,10 +408,6 @@ sourceFile:index.ts
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/logic/index.ts"
|
||||
@@ -493,24 +453,8 @@ exports.m = mod;
|
||||
"program": {
|
||||
"fileInfos": {
|
||||
"/lib/lib.d.ts": {
|
||||
"version": "/lib/lib.d.ts",
|
||||
"signature": "/lib/lib.d.ts"
|
||||
},
|
||||
"/lib/lib.es5.d.ts": {
|
||||
"version": "/lib/lib.es5.d.ts",
|
||||
"signature": "/lib/lib.es5.d.ts"
|
||||
},
|
||||
"/lib/lib.dom.d.ts": {
|
||||
"version": "/lib/lib.dom.d.ts",
|
||||
"signature": "/lib/lib.dom.d.ts"
|
||||
},
|
||||
"/lib/lib.webworker.importscripts.d.ts": {
|
||||
"version": "/lib/lib.webworker.importscripts.d.ts",
|
||||
"signature": "/lib/lib.webworker.importscripts.d.ts"
|
||||
},
|
||||
"/lib/lib.scripthost.d.ts": {
|
||||
"version": "/lib/lib.scripthost.d.ts",
|
||||
"signature": "/lib/lib.scripthost.d.ts"
|
||||
"version": "-15964756381",
|
||||
"signature": "-15964756381"
|
||||
},
|
||||
"/src/core/index.ts": {
|
||||
"version": "-13851440507",
|
||||
@@ -556,10 +500,6 @@ exports.m = mod;
|
||||
},
|
||||
"semanticDiagnosticsPerFile": [
|
||||
"/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/core/anothermodule.ts",
|
||||
"/src/core/index.ts",
|
||||
"/src/logic/index.ts",
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
//// [uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts]
|
||||
const FOO_SYMBOL = Symbol('Foo');
|
||||
|
||||
declare global {
|
||||
interface Promise<T> {
|
||||
[FOO_SYMBOL]?: number;
|
||||
}
|
||||
}
|
||||
|
||||
export function foo<T>(p: Promise<T>) {
|
||||
p[FOO_SYMBOL] = 3;
|
||||
}
|
||||
|
||||
//// [uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.js]
|
||||
const FOO_SYMBOL = Symbol('Foo');
|
||||
export function foo(p) {
|
||||
p[FOO_SYMBOL] = 3;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
=== tests/cases/compiler/uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts ===
|
||||
const FOO_SYMBOL = Symbol('Foo');
|
||||
>FOO_SYMBOL : Symbol(FOO_SYMBOL, Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 0, 5))
|
||||
>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
|
||||
|
||||
declare global {
|
||||
>global : Symbol(global, Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 0, 33))
|
||||
|
||||
interface Promise<T> {
|
||||
>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(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 2, 16))
|
||||
>T : Symbol(T, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 3, 22))
|
||||
|
||||
[FOO_SYMBOL]?: number;
|
||||
>[FOO_SYMBOL] : Symbol(Promise[FOO_SYMBOL], Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 3, 26))
|
||||
>FOO_SYMBOL : Symbol(FOO_SYMBOL, Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 0, 5))
|
||||
}
|
||||
}
|
||||
|
||||
export function foo<T>(p: Promise<T>) {
|
||||
>foo : Symbol(foo, Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 6, 1))
|
||||
>T : Symbol(T, Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 8, 20))
|
||||
>p : Symbol(p, Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 8, 23))
|
||||
>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(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 2, 16))
|
||||
>T : Symbol(T, Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 8, 20))
|
||||
|
||||
p[FOO_SYMBOL] = 3;
|
||||
>p : Symbol(p, Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 8, 23))
|
||||
>FOO_SYMBOL : Symbol(FOO_SYMBOL, Decl(uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts, 0, 5))
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
=== tests/cases/compiler/uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.ts ===
|
||||
const FOO_SYMBOL = Symbol('Foo');
|
||||
>FOO_SYMBOL : unique symbol
|
||||
>Symbol('Foo') : unique symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>'Foo' : "Foo"
|
||||
|
||||
declare global {
|
||||
>global : any
|
||||
|
||||
interface Promise<T> {
|
||||
[FOO_SYMBOL]?: number;
|
||||
>[FOO_SYMBOL] : number | undefined
|
||||
>FOO_SYMBOL : unique symbol
|
||||
}
|
||||
}
|
||||
|
||||
export function foo<T>(p: Promise<T>) {
|
||||
>foo : <T>(p: Promise<T>) => void
|
||||
>p : Promise<T>
|
||||
|
||||
p[FOO_SYMBOL] = 3;
|
||||
>p[FOO_SYMBOL] = 3 : 3
|
||||
>p[FOO_SYMBOL] : number | undefined
|
||||
>p : Promise<T>
|
||||
>FOO_SYMBOL : unique symbol
|
||||
>3 : 3
|
||||
}
|
||||
@@ -1,3 +1,11 @@
|
||||
declare const fn: <K extends string, V>(object: { [Key in K]: V }) => object;
|
||||
declare const a: { [index: string]: number };
|
||||
fn(a);
|
||||
|
||||
// Repro from #30218
|
||||
|
||||
declare function enumValues<K extends string, V extends string>(e: Record<K, V>): V[];
|
||||
|
||||
enum E { A = 'foo', B = 'bar' }
|
||||
|
||||
let x: E[] = enumValues(E);
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
// @strict: true
|
||||
// @target: es6
|
||||
const FOO_SYMBOL = Symbol('Foo');
|
||||
|
||||
declare global {
|
||||
interface Promise<T> {
|
||||
[FOO_SYMBOL]?: number;
|
||||
}
|
||||
}
|
||||
|
||||
export function foo<T>(p: Promise<T>) {
|
||||
p[FOO_SYMBOL] = 3;
|
||||
}
|
||||
@@ -111,6 +111,13 @@ function get123<K extends keyof Type>(): Type[K] {
|
||||
return 123; // Error
|
||||
}
|
||||
|
||||
// Repro from #30920
|
||||
|
||||
type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
|
||||
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
|
||||
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
|
||||
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
|
||||
|
||||
// Repros from #30938
|
||||
|
||||
function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
interface SymbolConstructor {
|
||||
(description?: string | number): symbol;
|
||||
}
|
||||
declare var Symbol: SymbolConstructor;
|
||||
@@ -0,0 +1 @@
|
||||
export interface HKT<T> { }
|
||||
@@ -0,0 +1,11 @@
|
||||
import { HKT } from "./hkt";
|
||||
|
||||
const sym = Symbol();
|
||||
|
||||
declare module "./hkt" {
|
||||
interface HKT<T> {
|
||||
[sym]: { a: T }
|
||||
}
|
||||
}
|
||||
const x = 10;
|
||||
type A = HKT<number>[typeof sym];
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"rootDir": "src",
|
||||
"incremental": true
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"target": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"module": "commonjs",
|
||||
"resolveJsonModule": true,
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"target": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"module": "commonjs",
|
||||
"resolveJsonModule": true,
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"target": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"module": "commonjs",
|
||||
"resolveJsonModule": true,
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"target": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"module": "commonjs",
|
||||
"resolveJsonModule": true,
|
||||
|
||||
Reference in New Issue
Block a user