Lazy calculation of expensive file explaining diagnsotics and some caching to be used to share the diagnostic data (#58398)

This commit is contained in:
Sheetal Nandi 2024-05-06 16:30:17 -07:00 коммит произвёл GitHub
Родитель 2070713f4b
Коммит fd81d04080
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
49 изменённых файлов: 8088 добавлений и 170 удалений

Просмотреть файл

@ -87,6 +87,7 @@ import {
fileIncludeReasonToDiagnostics,
FilePreprocessingDiagnostics,
FilePreprocessingDiagnosticsKind,
FilePreprocessingLibReferenceDiagnostic,
FileReference,
filter,
find,
@ -1191,10 +1192,13 @@ export function getLibraryNameFromLibFileName(libFileName: string) {
return "@typescript/lib-" + path;
}
function getLibNameFromLibReference(libReference: FileReference) {
return toFileNameLowerCase(libReference.fileName);
}
function getLibFileNameFromLibReference(libReference: FileReference) {
const libName = toFileNameLowerCase(libReference.fileName);
const libFileName = libMap.get(libName);
return { libName, libFileName };
const libName = getLibNameFromLibReference(libReference);
return libMap.get(libName);
}
interface DiagnosticCache<T extends Diagnostic> {
@ -1500,6 +1504,16 @@ export const plainJSErrors = new Set<number>([
Diagnostics.This_condition_will_always_return_0_since_JavaScript_compares_objects_by_reference_not_value.code,
]);
interface LazyProgramDiagnosticExplainingFile {
file: SourceFile;
diagnostic: DiagnosticMessage;
args: DiagnosticArguments;
}
interface FileReasonToChainCache {
fileIncludeReasonDetails: DiagnosticMessageChain | undefined;
redirectInfo: DiagnosticMessageChain[] | undefined;
details?: DiagnosticMessageChain[];
}
/**
* Determine if source file needs to be re-created even if its text hasn't changed
*/
@ -1570,6 +1584,9 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
let classifiableNames: Set<__String>;
const ambientModuleNameToUnmodifiedFileName = new Map<string, string>();
let fileReasons = createMultiMap<Path, FileIncludeReason>();
let filesWithReferencesProcessed: Set<Path> | undefined;
let fileReasonsToChain: Map<Path, FileReasonToChainCache> | undefined;
let reasonToRelatedInfo: Map<FileIncludeReason, DiagnosticWithLocation | false> | undefined;
const cachedBindAndCheckDiagnosticsForFile: DiagnosticCache<Diagnostic> = {};
const cachedDeclarationDiagnosticsForFile: DiagnosticCache<DiagnosticWithLocation> = {};
@ -1620,6 +1637,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
* Otherwise fileProcessingDiagnostics is correct locations so that the diagnostics can be reported in all structure use scenarios
*/
const programDiagnostics = createDiagnosticCollection();
let lazyProgramDiagnosticExplainingFile: LazyProgramDiagnosticExplainingFile[] | undefined = [];
const currentDirectory = host.getCurrentDirectory();
const supportedExtensions = getSupportedExtensions(options);
const supportedExtensionsWithJsonIfResolveJsonModule = getSupportedExtensionsWithJsonIfResolveJsonModule(options, supportedExtensions);
@ -1866,6 +1884,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
files = stableSort(processingDefaultLibFiles, compareDefaultLibFiles).concat(processingOtherFiles);
processingDefaultLibFiles = undefined;
processingOtherFiles = undefined;
filesWithReferencesProcessed = undefined;
}
// Release any files we have acquired in the old program but are
@ -1996,21 +2015,6 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
onProgramCreateComplete();
// Add file processingDiagnostics
fileProcessingDiagnostics?.forEach(diagnostic => {
switch (diagnostic.kind) {
case FilePreprocessingDiagnosticsKind.FilePreprocessingFileExplainingDiagnostic:
return programDiagnostics.add(createDiagnosticExplainingFile(diagnostic.file && getSourceFileByPath(diagnostic.file), diagnostic.fileProcessingReason, diagnostic.diagnostic, diagnostic.args || emptyArray));
case FilePreprocessingDiagnosticsKind.FilePreprocessingReferencedDiagnostic:
const { file, pos, end } = getReferencedFileLocation(program, diagnostic.reason) as ReferenceFileLocation;
return programDiagnostics.add(createFileDiagnostic(file, Debug.checkDefined(pos), Debug.checkDefined(end) - pos, diagnostic.diagnostic, ...diagnostic.args || emptyArray));
case FilePreprocessingDiagnosticsKind.ResolutionDiagnostics:
return diagnostic.diagnostics.forEach(d => programDiagnostics.add(d));
default:
Debug.assertNever(diagnostic);
}
});
verifyCompilerOptions();
performance.mark("afterProgram");
performance.measure("Program", "beforeProgram", "afterProgram");
@ -2018,6 +2022,56 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
return program;
function updateAndGetProgramDiagnostics() {
if (lazyProgramDiagnosticExplainingFile) {
// Add file processingDiagnostics
fileProcessingDiagnostics?.forEach(diagnostic => {
switch (diagnostic.kind) {
case FilePreprocessingDiagnosticsKind.FilePreprocessingFileExplainingDiagnostic:
return programDiagnostics.add(
createDiagnosticExplainingFile(
diagnostic.file && getSourceFileByPath(diagnostic.file),
diagnostic.fileProcessingReason,
diagnostic.diagnostic,
diagnostic.args || emptyArray,
),
);
case FilePreprocessingDiagnosticsKind.FilePreprocessingLibReferenceDiagnostic:
return programDiagnostics.add(filePreprocessingLibreferenceDiagnostic(diagnostic));
case FilePreprocessingDiagnosticsKind.ResolutionDiagnostics:
return diagnostic.diagnostics.forEach(d => programDiagnostics.add(d));
default:
Debug.assertNever(diagnostic);
}
});
lazyProgramDiagnosticExplainingFile.forEach(({ file, diagnostic, args }) =>
programDiagnostics.add(
createDiagnosticExplainingFile(file, /*fileProcessingReason*/ undefined, diagnostic, args),
)
);
lazyProgramDiagnosticExplainingFile = undefined;
fileReasonsToChain = undefined;
reasonToRelatedInfo = undefined;
}
return programDiagnostics;
}
function filePreprocessingLibreferenceDiagnostic({ reason }: FilePreprocessingLibReferenceDiagnostic) {
const { file, pos, end } = getReferencedFileLocation(program, reason) as ReferenceFileLocation;
const libReference = file.libReferenceDirectives[reason.index];
const libName = getLibNameFromLibReference(libReference);
const unqualifiedLibName = removeSuffix(removePrefix(libName, "lib."), ".d.ts");
const suggestion = getSpellingSuggestion(unqualifiedLibName, libs, identity);
return createFileDiagnostic(
file,
Debug.checkDefined(pos),
Debug.checkDefined(end) - pos,
suggestion ? Diagnostics.Cannot_find_lib_definition_for_0_Did_you_mean_1 : Diagnostics.Cannot_find_lib_definition_for_0,
libName,
suggestion!,
);
}
function getResolvedModule(file: SourceFile, moduleName: string, mode: ResolutionMode) {
return resolvedModules?.get(file.path)?.get(moduleName, mode);
}
@ -2881,7 +2935,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
return emptyArray;
}
const programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName);
const programDiagnosticsInFile = updateAndGetProgramDiagnostics().getDiagnostics(sourceFile.fileName);
if (!sourceFile.commentDirectives?.length) {
return programDiagnosticsInFile;
}
@ -3327,16 +3381,16 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
function getOptionsDiagnostics(): SortedReadonlyArray<Diagnostic> {
return sortAndDeduplicateDiagnostics(concatenate(
programDiagnostics.getGlobalDiagnostics(),
updateAndGetProgramDiagnostics().getGlobalDiagnostics(),
getOptionsDiagnosticsOfConfigFile(),
));
}
function getOptionsDiagnosticsOfConfigFile() {
if (!options.configFile) return emptyArray;
let diagnostics = programDiagnostics.getDiagnostics(options.configFile.fileName);
let diagnostics = updateAndGetProgramDiagnostics().getDiagnostics(options.configFile.fileName);
forEachResolvedProjectReference(resolvedRef => {
diagnostics = concatenate(diagnostics, programDiagnostics.getDiagnostics(resolvedRef.sourceFile.fileName));
diagnostics = concatenate(diagnostics, updateAndGetProgramDiagnostics().getDiagnostics(resolvedRef.sourceFile.fileName));
});
return diagnostics;
}
@ -3514,7 +3568,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
}
function getLibFileFromReference(ref: FileReference) {
const { libFileName } = getLibFileNameFromLibReference(ref);
const libFileName = getLibFileNameFromLibReference(ref);
const actualFileName = libFileName && resolvedLibReferences?.get(libFileName)?.actual;
return actualFileName !== undefined ? getSourceFile(actualFileName) : undefined;
}
@ -3666,10 +3720,10 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
const originalFileName = fileName;
if (filesByName.has(path)) {
const file = filesByName.get(path);
addFileIncludeReason(file || undefined, reason);
const addedReason = addFileIncludeReason(file || undefined, reason, /*checkExisting*/ true);
// try to check if we've already seen this file but with a different casing in path
// NOTE: this only makes sense for case-insensitive file systems, and only on files which are not redirected
if (file && !(options.forceConsistentCasingInFileNames === false)) {
if (file && addedReason && !(options.forceConsistentCasingInFileNames === false)) {
const checkedName = file.fileName;
const isRedirect = toPath(checkedName) !== toPath(fileName);
if (isRedirect) {
@ -3746,7 +3800,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
const dupFile = createRedirectedSourceFile(fileFromPackageId, file!, fileName, path, toPath(fileName), originalFileName, sourceFileOptions);
redirectTargetsMap.add(fileFromPackageId.path, fileName);
addFileToFilesByName(dupFile, path, fileName, redirectedPath);
addFileIncludeReason(dupFile, reason);
addFileIncludeReason(dupFile, reason, /*checkExisting*/ false);
sourceFileToPackageName.set(path, packageIdToPackageName(packageId));
processingOtherFiles!.push(dupFile);
return dupFile;
@ -3767,7 +3821,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
file.originalFileName = originalFileName;
file.packageJsonLocations = sourceFileOptions.packageJsonLocations?.length ? sourceFileOptions.packageJsonLocations : undefined;
file.packageJsonScope = sourceFileOptions.packageJsonScope;
addFileIncludeReason(file, reason);
addFileIncludeReason(file, reason, /*checkExisting*/ false);
if (host.useCaseSensitiveFileNames()) {
const pathLowerCase = toFileNameLowerCase(path);
@ -3800,12 +3854,17 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
else {
processingOtherFiles!.push(file);
}
(filesWithReferencesProcessed ??= new Set()).add(file.path);
}
return file;
}
function addFileIncludeReason(file: SourceFile | undefined, reason: FileIncludeReason) {
if (file) fileReasons.add(file.path, reason);
function addFileIncludeReason(file: SourceFile | undefined, reason: FileIncludeReason, checkExisting: boolean) {
if (file && (!checkExisting || !isReferencedFile(reason) || !filesWithReferencesProcessed?.has(reason.file))) {
fileReasons.add(file.path, reason);
return true;
}
return false;
}
function addFileToFilesByName(file: SourceFile | undefined, path: Path, fileName: string, redirectedPath: Path | undefined) {
@ -4067,21 +4126,15 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
function processLibReferenceDirectives(file: SourceFile) {
forEach(file.libReferenceDirectives, (libReference, index) => {
const { libName, libFileName } = getLibFileNameFromLibReference(libReference);
const libFileName = getLibFileNameFromLibReference(libReference);
if (libFileName) {
// we ignore any 'no-default-lib' reference set on this file.
processRootFile(pathForLibFile(libFileName), /*isDefaultLib*/ true, /*ignoreNoDefaultLib*/ true, { kind: FileIncludeKind.LibReferenceDirective, file: file.path, index });
}
else {
const unqualifiedLibName = removeSuffix(removePrefix(libName, "lib."), ".d.ts");
const suggestion = getSpellingSuggestion(unqualifiedLibName, libs, identity);
const diagnostic = suggestion ? Diagnostics.Cannot_find_lib_definition_for_0_Did_you_mean_1 : Diagnostics.Cannot_find_lib_definition_for_0;
const args = suggestion ? [libName, suggestion] : [libName];
(fileProcessingDiagnostics ||= []).push({
kind: FilePreprocessingDiagnosticsKind.FilePreprocessingReferencedDiagnostic,
kind: FilePreprocessingDiagnosticsKind.FilePreprocessingLibReferenceDiagnostic,
reason: { kind: FileIncludeKind.LibReferenceDirective, file: file.path, index },
diagnostic,
args,
});
}
});
@ -4166,7 +4219,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
if (!sourceFile.isDeclarationFile) {
const absoluteSourceFilePath = host.getCanonicalFileName(getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory));
if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) {
addProgramDiagnosticExplainingFile(
addLazyProgramDiagnosticExplainingFile(
sourceFile,
Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files,
[sourceFile.fileName, rootDirectory],
@ -4289,7 +4342,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
for (const file of files) {
// Ignore file that is not emitted
if (sourceFileMayBeEmitted(file, program) && !rootPaths.has(file.path)) {
addProgramDiagnosticExplainingFile(
addLazyProgramDiagnosticExplainingFile(
file,
Diagnostics.File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_include_pattern,
[file.fileName, options.configFilePath || ""],
@ -4679,38 +4732,122 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
});
}
function createDiagnosticExplainingFile(file: SourceFile | undefined, fileProcessingReason: FileIncludeReason | undefined, diagnostic: DiagnosticMessage, args: DiagnosticArguments | undefined): Diagnostic {
function createDiagnosticExplainingFile(file: SourceFile | undefined, fileProcessingReason: FileIncludeReason | undefined, diagnostic: DiagnosticMessage, args: DiagnosticArguments): Diagnostic {
let seenReasons: Set<FileIncludeReason> | undefined;
const reasons = file && fileReasons.get(file.path);
let fileIncludeReasons: DiagnosticMessageChain[] | undefined;
let relatedInfo: Diagnostic[] | undefined;
let relatedInfo: DiagnosticWithLocation[] | undefined;
let locationReason = isReferencedFile(fileProcessingReason) ? fileProcessingReason : undefined;
if (file) fileReasons.get(file.path)?.forEach(processReason);
let fileIncludeReasonDetails: DiagnosticMessageChain | undefined;
let redirectInfo: DiagnosticMessageChain[] | undefined;
let cachedChain = file && fileReasonsToChain?.get(file.path);
let chain: DiagnosticMessageChain | undefined;
if (cachedChain) {
if (cachedChain.fileIncludeReasonDetails) {
seenReasons = new Set(reasons);
reasons?.forEach(populateRelatedInfo);
}
else {
reasons?.forEach(processReason);
}
redirectInfo = cachedChain.redirectInfo;
}
else {
reasons?.forEach(processReason);
redirectInfo = file && explainIfFileIsRedirectAndImpliedFormat(file, getCompilerOptionsForFile(file));
}
if (fileProcessingReason) processReason(fileProcessingReason);
const processedExtraReason = seenReasons?.size !== reasons?.length;
// If we have location and there is only one reason file is in which is the location, dont add details for file include
if (locationReason && fileIncludeReasons?.length === 1) fileIncludeReasons = undefined;
if (locationReason && seenReasons?.size === 1) seenReasons = undefined;
if (seenReasons && cachedChain) {
if (cachedChain.details && !processedExtraReason) {
chain = chainDiagnosticMessages(cachedChain.details, diagnostic, ...args || emptyArray);
}
else if (cachedChain.fileIncludeReasonDetails) {
if (!processedExtraReason) {
if (!cachedFileIncludeDetailsHasProcessedExtraReason()) {
fileIncludeReasonDetails = cachedChain.fileIncludeReasonDetails;
}
else {
fileIncludeReasons = cachedChain.fileIncludeReasonDetails.next!.slice(0, reasons!.length);
}
}
else {
if (!cachedFileIncludeDetailsHasProcessedExtraReason()) {
fileIncludeReasons = [...cachedChain.fileIncludeReasonDetails.next!, fileIncludeReasons![0]];
}
else {
fileIncludeReasons = append(cachedChain.fileIncludeReasonDetails.next!.slice(0, reasons!.length), fileIncludeReasons![0]);
}
}
}
}
if (!chain) {
if (!fileIncludeReasonDetails) fileIncludeReasonDetails = seenReasons && chainDiagnosticMessages(fileIncludeReasons, Diagnostics.The_file_is_in_the_program_because_Colon);
chain = chainDiagnosticMessages(
redirectInfo ?
fileIncludeReasonDetails ? [fileIncludeReasonDetails, ...redirectInfo] : redirectInfo :
fileIncludeReasonDetails,
diagnostic,
...args || emptyArray,
);
}
// This is chain's next contains:
// - File is in program because:
// - Files reasons listed
// - extra reason if its not already processed - this happens in case sensitive file system where files differ in casing and we are giving reasons for two files so reason is not in file's reason
// fyi above whole secton is ommited if we have single reason and we are reporting at that reason's location
// - redirect and additional information about file
// So cache result if we havent ommited file include reasons
if (file) {
if (cachedChain) {
// Cache new fileIncludeDetails if we have update
// Or if we had cached with more details than the reasons
if (!cachedChain.fileIncludeReasonDetails || (!processedExtraReason && fileIncludeReasonDetails)) {
cachedChain.fileIncludeReasonDetails = fileIncludeReasonDetails;
}
}
else {
(fileReasonsToChain ??= new Map()).set(file.path, cachedChain = { fileIncludeReasonDetails, redirectInfo });
}
// If we didnt compute extra file include reason , cache the details to use directly
if (!cachedChain.details && !processedExtraReason) cachedChain.details = chain.next;
}
const location = locationReason && getReferencedFileLocation(program, locationReason);
const fileIncludeReasonDetails = fileIncludeReasons && chainDiagnosticMessages(fileIncludeReasons, Diagnostics.The_file_is_in_the_program_because_Colon);
const optionsForFile = file && getCompilerOptionsForFile(file) || options;
const redirectInfo = file && explainIfFileIsRedirectAndImpliedFormat(file, optionsForFile);
const chain = chainDiagnosticMessages(redirectInfo ? fileIncludeReasonDetails ? [fileIncludeReasonDetails, ...redirectInfo] : redirectInfo : fileIncludeReasonDetails, diagnostic, ...args || emptyArray);
return location && isReferenceFileLocation(location) ?
createFileDiagnosticFromMessageChain(location.file, location.pos, location.end - location.pos, chain, relatedInfo) :
createCompilerDiagnosticFromMessageChain(chain, relatedInfo);
function processReason(reason: FileIncludeReason) {
(fileIncludeReasons ||= []).push(fileIncludeReasonToDiagnostics(program, reason));
if (seenReasons?.has(reason)) return;
(seenReasons ??= new Set()).add(reason);
(fileIncludeReasons ??= []).push(fileIncludeReasonToDiagnostics(program, reason));
populateRelatedInfo(reason);
}
function populateRelatedInfo(reason: FileIncludeReason) {
if (!locationReason && isReferencedFile(reason)) {
// Report error at first reference file or file currently in processing and dont report in related information
locationReason = reason;
}
else if (locationReason !== reason) {
relatedInfo = append(relatedInfo, fileIncludeReasonToRelatedInformation(reason));
relatedInfo = append(relatedInfo, getFileIncludeReasonToRelatedInformation(reason));
}
// Remove fileProcessingReason if its already included in fileReasons of the program
if (reason === fileProcessingReason) fileProcessingReason = undefined;
}
function cachedFileIncludeDetailsHasProcessedExtraReason() {
return cachedChain!.fileIncludeReasonDetails!.next?.length !== reasons?.length;
}
}
function addFilePreprocessingFileExplainingDiagnostic(file: SourceFile | undefined, fileProcessingReason: FileIncludeReason, diagnostic: DiagnosticMessage, args?: DiagnosticArguments) {
function addFilePreprocessingFileExplainingDiagnostic(file: SourceFile | undefined, fileProcessingReason: FileIncludeReason, diagnostic: DiagnosticMessage, args: DiagnosticArguments) {
(fileProcessingDiagnostics ||= []).push({
kind: FilePreprocessingDiagnosticsKind.FilePreprocessingFileExplainingDiagnostic,
file: file && file.path,
@ -4720,8 +4857,14 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
});
}
function addProgramDiagnosticExplainingFile(file: SourceFile, diagnostic: DiagnosticMessage, args?: DiagnosticArguments) {
programDiagnostics.add(createDiagnosticExplainingFile(file, /*fileProcessingReason*/ undefined, diagnostic, args));
function addLazyProgramDiagnosticExplainingFile(file: SourceFile, diagnostic: DiagnosticMessage, args: DiagnosticArguments) {
lazyProgramDiagnosticExplainingFile!.push({ file, diagnostic, args });
}
function getFileIncludeReasonToRelatedInformation(reason: FileIncludeReason) {
let relatedInfo = reasonToRelatedInfo?.get(reason);
if (relatedInfo === undefined) (reasonToRelatedInfo ??= new Map()).set(reason, relatedInfo = fileIncludeReasonToRelatedInformation(reason) ?? false);
return relatedInfo || undefined;
}
function fileIncludeReasonToRelatedInformation(reason: FileIncludeReason): DiagnosticWithLocation | undefined {

Просмотреть файл

@ -4608,26 +4608,24 @@ export type FileIncludeReason =
/** @internal */
export const enum FilePreprocessingDiagnosticsKind {
FilePreprocessingReferencedDiagnostic,
FilePreprocessingLibReferenceDiagnostic,
FilePreprocessingFileExplainingDiagnostic,
ResolutionDiagnostics,
}
/** @internal */
export interface FilePreprocessingReferencedDiagnostic {
kind: FilePreprocessingDiagnosticsKind.FilePreprocessingReferencedDiagnostic;
reason: ReferencedFile;
diagnostic: DiagnosticMessage;
args?: DiagnosticArguments;
export interface FilePreprocessingLibReferenceDiagnostic {
kind: FilePreprocessingDiagnosticsKind.FilePreprocessingLibReferenceDiagnostic;
reason: ReferencedFile & { kind: FileIncludeKind.LibReferenceDirective; };
}
/** @internal */
export interface FilePreprocessingFileExplainingDiagnostic {
kind: FilePreprocessingDiagnosticsKind.FilePreprocessingFileExplainingDiagnostic;
file?: Path;
file: Path | undefined;
fileProcessingReason: FileIncludeReason;
diagnostic: DiagnosticMessage;
args?: DiagnosticArguments;
args: DiagnosticArguments;
}
/** @internal */
@ -4637,7 +4635,7 @@ export interface ResolutionDiagnostics {
}
/** @internal */
export type FilePreprocessingDiagnostics = FilePreprocessingReferencedDiagnostic | FilePreprocessingFileExplainingDiagnostic | ResolutionDiagnostics;
export type FilePreprocessingDiagnostics = FilePreprocessingLibReferenceDiagnostic | FilePreprocessingFileExplainingDiagnostic | ResolutionDiagnostics;
/** @internal */
export const enum EmitOnly {

Просмотреть файл

@ -594,6 +594,7 @@ export function createWatchProgram<T extends BuilderProgram>(host: WatchCompiler
});
parsedConfigs = undefined;
}
builderProgram = undefined!;
}
function getResolutionCache() {

Просмотреть файл

@ -21,6 +21,7 @@ export interface NamedSourceText {
export interface ProgramWithSourceTexts extends ts.Program {
sourceTexts?: readonly NamedSourceText[];
host: TestCompilerHost;
version: number;
}
export interface TestCompilerHost extends ts.CompilerHost {
@ -102,7 +103,7 @@ function createSourceFileWithText(fileName: string, sourceText: SourceText, targ
return file;
}
export function createTestCompilerHost(texts: readonly NamedSourceText[], target: ts.ScriptTarget, oldProgram?: ProgramWithSourceTexts, useGetSourceFileByPath?: boolean) {
export function createTestCompilerHost(texts: readonly NamedSourceText[], target: ts.ScriptTarget, oldProgram?: ProgramWithSourceTexts, useGetSourceFileByPath?: boolean, useCaseSensitiveFileNames?: boolean) {
const files = ts.arrayToMap(texts, t => t.name, t => {
if (oldProgram) {
let oldFile = oldProgram.getSourceFile(t.name) as SourceFileWithText;
@ -115,14 +116,15 @@ export function createTestCompilerHost(texts: readonly NamedSourceText[], target
}
return createSourceFileWithText(t.name, t.text, target);
});
const useCaseSensitiveFileNames = ts.sys && ts.sys.useCaseSensitiveFileNames;
if (useCaseSensitiveFileNames === undefined) useCaseSensitiveFileNames = ts.sys && ts.sys.useCaseSensitiveFileNames;
const getCanonicalFileName = ts.createGetCanonicalFileName(useCaseSensitiveFileNames);
const filesByPath = ts.mapEntries(files, (fileName, file) => [ts.toPath(fileName, "", getCanonicalFileName), file]);
const trace: string[] = [];
const result: TestCompilerHost = {
trace: s => trace.push(s),
getTrace: () => trace,
clearTrace: () => trace.length = 0,
getSourceFile: fileName => files.get(fileName),
getSourceFile: fileName => filesByPath.get(ts.toPath(fileName, "", getCanonicalFileName)),
getDefaultLibFileName: () => "lib.d.ts",
writeFile: ts.notImplemented,
getCurrentDirectory: () => "",
@ -130,37 +132,48 @@ export function createTestCompilerHost(texts: readonly NamedSourceText[], target
getCanonicalFileName,
useCaseSensitiveFileNames: () => useCaseSensitiveFileNames,
getNewLine: () => ts.sys ? ts.sys.newLine : newLine,
fileExists: fileName => files.has(fileName),
fileExists: fileName => filesByPath.has(ts.toPath(fileName, "", getCanonicalFileName)),
readFile: fileName => {
const file = files.get(fileName);
const file = filesByPath.get(ts.toPath(fileName, "", getCanonicalFileName));
return file && file.text;
},
};
if (useGetSourceFileByPath) {
const filesByPath = ts.mapEntries(files, (fileName, file) => [ts.toPath(fileName, "", getCanonicalFileName), file]);
result.getSourceFileByPath = (_fileName, path) => filesByPath.get(path);
}
return result;
}
export function newProgram(texts: NamedSourceText[], rootNames: string[], options: ts.CompilerOptions, useGetSourceFileByPath?: boolean): ProgramWithSourceTexts {
const host = createTestCompilerHost(texts, options.target!, /*oldProgram*/ undefined, useGetSourceFileByPath);
const program = ts.createProgram(rootNames, options, host) as ProgramWithSourceTexts;
program.sourceTexts = texts;
program.host = host;
return program;
export function newProgram(texts: NamedSourceText[], rootNames: string[], options: ts.CompilerOptions, useGetSourceFileByPath?: boolean, useCaseSensitiveFileNames?: boolean): ProgramWithSourceTexts {
const host = createTestCompilerHost(texts, options.target!, /*oldProgram*/ undefined, useGetSourceFileByPath, useCaseSensitiveFileNames);
return programToProgramWithSourceTexts(
ts.createProgram(rootNames, options, host),
texts,
host,
1,
);
}
export function updateProgram(oldProgram: ProgramWithSourceTexts, rootNames: readonly string[], options: ts.CompilerOptions, updater: (files: NamedSourceText[]) => void, newTexts?: NamedSourceText[], useGetSourceFileByPath?: boolean) {
function programToProgramWithSourceTexts(program: ts.Program, texts: NamedSourceText[], host: TestCompilerHost, version: number): ProgramWithSourceTexts {
const result = program as ProgramWithSourceTexts;
result.sourceTexts = texts;
result.host = host;
result.version = version;
return result;
}
export function updateProgram(oldProgram: ProgramWithSourceTexts, rootNames: readonly string[], options: ts.CompilerOptions, updater: (files: NamedSourceText[]) => void, newTexts?: NamedSourceText[], useGetSourceFileByPath?: boolean, useCaseSensitiveFileNames?: boolean) {
if (!newTexts) {
newTexts = oldProgram.sourceTexts!.slice(0);
}
updater(newTexts);
const host = createTestCompilerHost(newTexts, options.target!, oldProgram, useGetSourceFileByPath);
const program = ts.createProgram(rootNames, options, host, oldProgram) as ProgramWithSourceTexts;
program.sourceTexts = newTexts;
program.host = host;
return program;
const host = createTestCompilerHost(newTexts, options.target!, oldProgram, useGetSourceFileByPath, useCaseSensitiveFileNames);
return programToProgramWithSourceTexts(
ts.createProgram(rootNames, options, host, oldProgram),
newTexts,
host,
oldProgram.version + 1,
);
}
export function updateProgramText(files: readonly NamedSourceText[], fileName: string, newProgramText: string) {

Просмотреть файл

@ -0,0 +1,33 @@
import { dedent } from "../../_namespaces/Utils";
import { jsonToReadableText } from "../helpers";
import {
FsContents,
libContent,
} from "./contents";
import { libFile } from "./virtualFileSystemWithWatch";
export function getFsContentsForMultipleErrorsForceConsistentCasingInFileNames(): FsContents {
return {
"/home/src/projects/project/src/struct.d.ts": dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
`,
"/home/src/projects/project/src/anotherFile.ts": dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
`,
"/home/src/projects/project/src/oneMore.ts": dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
`,
"/home/src/projects/project/tsconfig.json": jsonToReadableText({}),
"/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts": `export function foo(): void`,
[libFile.path]: libContent,
};
}

Просмотреть файл

@ -91,3 +91,46 @@ export function getCommandLineArgsForLibResolution(withoutConfig: true | undefin
["project1/core.d.ts", "project1/utils.d.ts", "project1/file.ts", "project1/index.ts", "project1/file2.ts", "--lib", "es5,dom", "--traceResolution", "--explainFiles"] :
["-p", "project1", "--explainFiles"];
}
function getFsContentsForLibResolutionUnknown(): FsContents {
return {
"/home/src/projects/project1/utils.d.ts": `export const y = 10;`,
"/home/src/projects/project1/file.ts": `export const file = 10;`,
"/home/src/projects/project1/core.d.ts": `export const core = 10;`,
"/home/src/projects/project1/index.ts": `export const x = "type1";`,
"/home/src/projects/project1/file2.ts": dedent`
/// <reference lib="webworker2"/>
/// <reference lib="unknownlib"/>
/// <reference lib="scripthost"/>
`,
"/home/src/projects/project1/tsconfig.json": jsonToReadableText({
compilerOptions: {
composite: true,
traceResolution: true,
},
}),
"/home/src/lib/lib.d.ts": libContent,
"/home/src/lib/lib.webworker.d.ts": "interface WebWorkerInterface { }",
"/home/src/lib/lib.scripthost.d.ts": "interface ScriptHostInterface { }",
};
}
export function getFsForLibResolutionUnknown() {
return loadProjectFromFiles(
getFsContentsForLibResolutionUnknown(),
{
cwd: "/home/src/projects",
executingFilePath: "/home/src/lib/tsc.js",
},
);
}
export function getSysForLibResolutionUnknown() {
return createWatchedSystem(
getFsContentsForLibResolutionUnknown(),
{
currentDirectory: "/home/src/projects",
executingFilePath: "/home/src/lib/tsc.js",
},
);
}

Просмотреть файл

@ -19,7 +19,8 @@ import {
libFile,
} from "./helpers/virtualFileSystemWithWatch";
describe("unittests:: Reuse program structure:: General", () => {
describe("unittests:: reuseProgramStructure:: General", () => {
type ProgramToBaseline = ts.Program & Pick<ProgramWithSourceTexts, "version">;
function baselineCache<File, T>(
baselines: string[],
cacheType: string,
@ -40,8 +41,21 @@ describe("unittests:: Reuse program structure:: General", () => {
baselines.push(`${key}: ${mode ? ts.getNameOfCompilerOptionValue(mode, ts.moduleOptionDeclaration.type) + ": " : ""}${jsonToReadableText(resolved)}`);
}
}
function baselineProgram(baselines: string[], program: ts.Program, host?: TestCompilerHost) {
baselines.push(`Program Reused:: ${(ts as any).StructureIsReused[program.structureIsReused]}`);
function baselineDiagnostics(baselines: string[], program: ProgramToBaseline, skipHeader?: boolean) {
if (!skipHeader) {
baselines.push(`Program ${program.version} Reused:: ${(ts as any).StructureIsReused[program.structureIsReused]}`);
baselines.push(`Diagnostics:`);
}
baselines.push(ts.formatDiagnostics(program.getSemanticDiagnostics(), {
getCurrentDirectory: () => program.getCurrentDirectory(),
getNewLine: () => "\n",
getCanonicalFileName: ts.createGetCanonicalFileName(program.useCaseSensitiveFileNames()),
}));
baselines.push("", "");
}
function baselineProgram(baselines: string[], program: ProgramToBaseline, host?: TestCompilerHost, skipDiagnostics?: boolean) {
baselines.push(`Program ${program.version} Reused:: ${(ts as any).StructureIsReused[program.structureIsReused]}`);
program.getSourceFiles().forEach(f => {
baselines.push(`File: ${f.fileName}`, f.text);
baselineCache(baselines, "resolvedModules", f, program.forEachResolvedModule);
@ -55,12 +69,12 @@ describe("unittests:: Reuse program structure:: General", () => {
baselines.push("");
baselines.push(`MissingPaths:: ${jsonToReadableText(ts.arrayFrom(program.getMissingFilePaths().values()))}`);
baselines.push("");
baselines.push(ts.formatDiagnostics(program.getSemanticDiagnostics(), {
getCurrentDirectory: () => program.getCurrentDirectory(),
getNewLine: () => "\n",
getCanonicalFileName: ts.createGetCanonicalFileName(program.useCaseSensitiveFileNames()),
}));
baselines.push("", "");
if (!skipDiagnostics) {
baselineDiagnostics(baselines, program, /*skipHeader*/ true);
}
else {
baselines.push("Skipped diagnostics", "", "");
}
}
function runBaseline(scenario: string, baselines: readonly string[]) {
@ -281,7 +295,8 @@ describe("unittests:: Reuse program structure:: General", () => {
];
const host = createTestCompilerHost(files, target);
const options: ts.CompilerOptions = { target, typeRoots: ["/types"] };
const program1 = ts.createProgram(["/a.ts"], options, host);
const program1 = ts.createProgram(["/a.ts"], options, host) as ProgramToBaseline;
program1.version = 1;
let sourceFile = program1.getSourceFile("/a.ts")!;
const baselines: string[] = [];
baselineProgram(baselines, program1, host);
@ -293,7 +308,8 @@ describe("unittests:: Reuse program structure:: General", () => {
return fileName === sourceFile.fileName ? sourceFile : program1.getSourceFile(fileName);
},
};
const program2 = ts.createProgram(["/a.ts"], options, updateHost, program1);
const program2 = ts.createProgram(["/a.ts"], options, updateHost, program1) as ProgramToBaseline;
program2.version = 2;
baselineProgram(baselines, program2, updateHost);
baselines.push(`parent pointers are not altered: ${sourceFile.statements[2].getSourceFile() === sourceFile}`);
runBaseline("works with updated SourceFiles", baselines);
@ -554,15 +570,217 @@ describe("unittests:: Reuse program structure:: General", () => {
verifyRedirects(/*useGetSourceFileByPath*/ true);
});
});
it("forceConsistentCasingInFileNames:: handles file preprocessing dignostics", () => {
const files = [
{
name: "/src/project/src/struct.d.ts",
text: SourceText.New(
"",
"",
Utils.dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
`,
),
},
{
name: "/src/project/src/anotherFile.ts",
text: SourceText.New(
"",
"",
Utils.dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
`,
),
},
{
name: "/src/project/src/oneMore.ts",
text: SourceText.New(
"",
"",
Utils.dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
`,
),
},
{
name: "/src/project/node_modules/fp-ts/lib/struct.d.ts",
text: SourceText.New("", "", `export function foo(): void`),
},
];
const options: ts.CompilerOptions = { target, moduleResolution: ts.ModuleResolutionKind.Node10 };
const rootNames = files.map(f => f.name);
const program1 = newProgram(files, rootNames, options, /*useGetSourceFileByPath*/ undefined, /*useCaseSensitiveFileNames*/ false);
const baselines: string[] = [];
baselineProgram(baselines, program1);
const program2 = updateProgram(
program1,
rootNames,
options,
files => {
files[0].text = files[0].text.updateProgram(files[0].text.getFullText() + "export const y = 10;");
},
/*newTexts*/ undefined,
/*useGetSourceFileByPath*/ undefined,
/*useCaseSensitiveFileNames*/ false,
);
baselineProgram(baselines, program2);
const program3 = updateProgram(
program2,
rootNames,
options,
files => {
files[0].text = files[0].text.updateProgram(Utils.dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
`);
},
/*newTexts*/ undefined,
/*useGetSourceFileByPath*/ undefined,
/*useCaseSensitiveFileNames*/ false,
);
baselineProgram(baselines, program3);
runBaseline("handles file preprocessing dignostics", baselines);
});
it("forceConsistentCasingInFileNames:: handles file preprocessing dignostics when diagnostics are not queried", () => {
const files = [
{
name: "/src/project/src/struct.d.ts",
text: SourceText.New(
"",
"",
Utils.dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
`,
),
},
{
name: "/src/project/src/anotherFile.ts",
text: SourceText.New(
"",
"",
Utils.dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
`,
),
},
{
name: "/src/project/src/oneMore.ts",
text: SourceText.New(
"",
"",
Utils.dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
`,
),
},
{
name: "/src/project/node_modules/fp-ts/lib/struct.d.ts",
text: SourceText.New("", "", `export function foo(): void`),
},
];
const options: ts.CompilerOptions = { target, moduleResolution: ts.ModuleResolutionKind.Node10 };
const rootNames = files.map(f => f.name);
const program1 = newProgram(files, rootNames, options, /*useGetSourceFileByPath*/ undefined, /*useCaseSensitiveFileNames*/ false);
const baselines: string[] = [];
baselineProgram(baselines, program1, /*host*/ undefined, /*skipDiagnostics*/ true);
const program2 = updateProgram(
program1,
rootNames,
options,
files => {
files[0].text = files[0].text.updateProgram(files[0].text.getFullText() + "export const y = 10;");
},
/*newTexts*/ undefined,
/*useGetSourceFileByPath*/ undefined,
/*useCaseSensitiveFileNames*/ false,
);
baselineProgram(baselines, program2, /*host*/ undefined, /*skipDiagnostics*/ true);
baselineDiagnostics(baselines, program1);
const program3 = updateProgram(
program2,
rootNames,
options,
files => {
files[0].text = files[0].text.updateProgram(files[0].text.getFullText() + "export const z = 10;");
},
/*newTexts*/ undefined,
/*useGetSourceFileByPath*/ undefined,
/*useCaseSensitiveFileNames*/ false,
);
baselineProgram(baselines, program3);
baselineDiagnostics(baselines, program2);
const program4 = updateProgram(
program3,
rootNames,
options,
files => {
files[0].text = files[0].text.updateProgram(Utils.dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
`);
},
/*newTexts*/ undefined,
/*useGetSourceFileByPath*/ undefined,
/*useCaseSensitiveFileNames*/ false,
);
baselineProgram(baselines, program4, /*host*/ undefined, /*skipDiagnostics*/ true);
const program5 = updateProgram(
program4,
rootNames,
options,
files => {
files[0].text = files[0].text.updateProgram(Utils.dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs3 from "./Struct";
`);
},
/*newTexts*/ undefined,
/*useGetSourceFileByPath*/ undefined,
/*useCaseSensitiveFileNames*/ false,
);
baselineProgram(baselines, program5);
baselineDiagnostics(baselines, program4);
runBaseline("handles file preprocessing dignostics when diagnostics are not queried", baselines);
});
});
describe("unittests:: Reuse program structure:: host is optional", () => {
describe("unittests:: reuseProgramStructure:: host is optional", () => {
it("should work if host is not provided", () => {
ts.createProgram([], {});
});
});
describe("unittests:: Reuse program structure:: isProgramUptoDate", () => {
describe("unittests:: reuseProgramStructure:: isProgramUptoDate::", () => {
function getWhetherProgramIsUptoDate(
program: ts.Program,
newRootFileNames: string[],

Просмотреть файл

@ -1,4 +1,5 @@
import * as Utils from "../../_namespaces/Utils";
import { dedent } from "../../_namespaces/Utils";
import { getFsContentsForMultipleErrorsForceConsistentCasingInFileNames } from "../helpers/forceConsistentCasingInFileNames";
import { verifyTsc } from "../helpers/tsc";
import { loadProjectFromFiles } from "../helpers/vfs";
@ -9,7 +10,7 @@ describe("unittests:: tsc:: forceConsistentCasingInFileNames::", () => {
commandLineArgs: ["/src/project/src/struct.d.ts", "--forceConsistentCasingInFileNames", "--explainFiles"],
fs: () =>
loadProjectFromFiles({
"/src/project/src/struct.d.ts": Utils.dedent`
"/src/project/src/struct.d.ts": dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
@ -18,4 +19,11 @@ describe("unittests:: tsc:: forceConsistentCasingInFileNames::", () => {
"/src/project/node_modules/fp-ts/lib/struct.d.ts": `export function foo(): void`,
}),
});
verifyTsc({
scenario: "forceConsistentCasingInFileNames",
subScenario: "when file is included from multiple places with different casing",
commandLineArgs: ["-p", "/home/src/projects/project/tsconfig.json", "--explainFiles"],
fs: () => loadProjectFromFiles(getFsContentsForMultipleErrorsForceConsistentCasingInFileNames()),
});
});

Просмотреть файл

@ -1,6 +1,7 @@
import {
getCommandLineArgsForLibResolution,
getFsForLibResolution,
getFsForLibResolutionUnknown,
} from "../helpers/libraryResolution";
import { verifyTsc } from "../helpers/tsc";
@ -18,4 +19,12 @@ describe("unittests:: tsc:: libraryResolution:: library file resolution", () =>
verify(/*libRedirection*/ true);
verify(/*libRedirection*/ undefined, /*withoutConfig*/ true);
verify(/*libRedirection*/ true, /*withoutConfig*/ true);
verifyTsc({
scenario: "libraryResolution",
subScenario: "unknown lib",
fs: () => getFsForLibResolutionUnknown(),
commandLineArgs: getCommandLineArgsForLibResolution(/*withoutConfig*/ undefined),
baselinePrograms: true,
});
});

Просмотреть файл

@ -1,5 +1,6 @@
import * as Utils from "../../_namespaces/Utils";
import { dedent } from "../../_namespaces/Utils";
import { jsonToReadableText } from "../helpers";
import { getFsContentsForMultipleErrorsForceConsistentCasingInFileNames } from "../helpers/forceConsistentCasingInFileNames";
import {
TscWatchCompileChange,
verifyTscWatch,
@ -11,7 +12,7 @@ import {
SymLink,
} from "../helpers/virtualFileSystemWithWatch";
describe("unittests:: tsc-watch:: forceConsistentCasingInFileNames", () => {
describe("unittests:: tsc-watch:: forceConsistentCasingInFileNames::", () => {
const loggerFile: File = {
path: `/user/username/projects/myproject/logger.ts`,
content: `export class logger { }`,
@ -334,7 +335,7 @@ a;b;
".": "./dist/index.js",
},
}),
"/Users/name/projects/web/index.ts": Utils.dedent`
"/Users/name/projects/web/index.ts": dedent`
import * as me from "@this/package";
me.thing();
export function thing(): void {}
@ -365,10 +366,10 @@ a;b;
type: "module",
exports: "./src/index.ts",
}),
"/Users/name/projects/lib-boilerplate/src/index.ts": Utils.dedent`
"/Users/name/projects/lib-boilerplate/src/index.ts": dedent`
export function thing(): void {}
`,
"/Users/name/projects/lib-boilerplate/test/basic.spec.ts": Utils.dedent`
"/Users/name/projects/lib-boilerplate/test/basic.spec.ts": dedent`
import { thing } from 'lib-boilerplate'
`,
"/Users/name/projects/lib-boilerplate/tsconfig.json": jsonToReadableText({
@ -382,4 +383,35 @@ a;b;
"/a/lib/lib.es2021.full.d.ts": libFile.content,
}, { currentDirectory: "/Users/name/projects/lib-boilerplate" }),
});
verifyTscWatch({
scenario: "forceConsistentCasingInFileNames",
subScenario: "when file is included from multiple places with different casing",
commandLineArgs: ["-w", "--explainFiles"],
sys: () =>
createWatchedSystem(
getFsContentsForMultipleErrorsForceConsistentCasingInFileNames(),
{ currentDirectory: "/home/src/projects/project" },
),
edits: [
{
caption: "change to reuse imports",
edit: sys => sys.appendFile("/home/src/projects/project/src/struct.d.ts", "export const y = 10;"),
timeouts: sys => sys.runQueuedTimeoutCallbacks(),
},
{
caption: "change to update imports",
edit: sys =>
sys.writeFile(
"/home/src/projects/project/src/struct.d.ts",
dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
`,
),
timeouts: sys => sys.runQueuedTimeoutCallbacks(),
},
],
});
});

Просмотреть файл

@ -1,7 +1,9 @@
import { dedent } from "../../_namespaces/Utils";
import { jsonToReadableText } from "../helpers";
import {
getCommandLineArgsForLibResolution,
getSysForLibResolution,
getSysForLibResolutionUnknown,
} from "../helpers/libraryResolution";
import {
TscWatchCompileChange,
@ -9,7 +11,7 @@ import {
verifyTscWatch,
} from "../helpers/tscWatch";
describe("unittests:: tsc-watch:: libraryResolution", () => {
describe("unittests:: tsc-watch:: libraryResolution::", () => {
function commandLineArgs(withoutConfig: true | undefined) {
return ["-w", ...getCommandLineArgsForLibResolution(withoutConfig), "--extendedDiagnostics"];
}
@ -147,4 +149,47 @@ describe("unittests:: tsc-watch:: libraryResolution", () => {
}
verify();
verify(/*withoutConfig*/ true);
verifyTscWatch({
scenario: "libraryResolution",
subScenario: "unknwon lib",
sys: () => getSysForLibResolutionUnknown(),
commandLineArgs: commandLineArgs(/*withoutConfig*/ undefined),
edits: [
{
caption: "edit index",
edit: sys => sys.appendFile("/home/src/projects/project1/index.ts", "export const xyz = 10;"),
timeouts: sys => sys.runQueuedTimeoutCallbacks(),
},
{
caption: "delete core",
edit: sys => sys.deleteFile("/home/src/projects/project1/core.d.ts"),
timeouts: sys => sys.runQueuedTimeoutCallbacks(),
},
{
caption: "remove unknown lib",
edit: sys =>
sys.writeFile(
"/home/src/projects/project1/file2.ts",
dedent`
/// <reference lib="webworker2"/>
/// <reference lib="scripthost"/>
`,
),
timeouts: sys => sys.runQueuedTimeoutCallbacks(),
},
{
caption: "correct webworker lib",
edit: sys =>
sys.writeFile(
"/home/src/projects/project1/file2.ts",
dedent`
/// <reference lib="webworker"/>
/// <reference lib="scripthost"/>
`,
),
timeouts: sys => sys.runQueuedTimeoutCallbacks(),
},
],
});
});

Просмотреть файл

@ -1,10 +1,12 @@
import * as ts from "../../_namespaces/ts";
import { dedent } from "../../_namespaces/Utils";
import { jsonToReadableText } from "../helpers";
import { getFsContentsForMultipleErrorsForceConsistentCasingInFileNames } from "../helpers/forceConsistentCasingInFileNames";
import {
baselineTsserverLogs,
closeFilesForSession,
openFilesForSession,
protocolFileLocationFromSubstring,
protocolTextSpanFromSubstring,
TestSession,
verifyGetErrRequest,
@ -16,7 +18,7 @@ import {
SymLink,
} from "../helpers/virtualFileSystemWithWatch";
describe("unittests:: tsserver:: forceConsistentCasingInFileNames", () => {
describe("unittests:: tsserver:: forceConsistentCasingInFileNames::", () => {
it("works when extends is specified with a case insensitive file system", () => {
const rootPath = "/Users/username/dev/project";
const file1: File = {
@ -328,4 +330,63 @@ describe("unittests:: tsserver:: forceConsistentCasingInFileNames", () => {
verifyDirSymlink("when import and directory symlink target agree but do not match disk", `/user/username/projects/myproject/XY`, `/user/username/projects/myproject/Xy`, `./Xy`);
verifyDirSymlink("when import, directory symlink target, and disk are all different", `/user/username/projects/myproject/XY`, `/user/username/projects/myproject/Xy`, `./xY`);
});
it("when file is included from multiple places with different casing", () => {
const host = createServerHost(getFsContentsForMultipleErrorsForceConsistentCasingInFileNames());
const session = new TestSession(host);
const file = "/home/src/projects/project/src/struct.d.ts";
let fileText = host.readFile(file)!;
openFilesForSession([{ file, projectRootPath: "/home/src/projects/project" }], session);
verifyGetErrRequest({ session, files: [file] });
// Update file without import but dont get errors:
updateFile(fileText + "\nexport const y = 10;");
goToDef();
// Update file without import and get errors:
updateFile(fileText + "\nexport const yy = 10;");
verifyGetErrRequest({ session, files: [file] });
// Remove one import, dont get errors
updateFile(dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
`);
goToDef();
// Remove import, get errors
updateFile(dedent`
import * as xs1 from "fp-ts/lib/Struct";
import * as xs3 from "./struct";
`);
verifyGetErrRequest({ session, files: [file] });
baselineTsserverLogs("forceConsistentCasingInFileNames", "when file is included from multiple places with different casing", session);
function updateFile(newText: string) {
session.executeCommandSeq<ts.server.protocol.UpdateOpenRequest>({
command: ts.server.protocol.CommandTypes.UpdateOpen,
arguments: {
changedFiles: [{
fileName: file,
textChanges: [{
newText,
...protocolTextSpanFromSubstring(
fileText,
fileText,
),
}],
}],
},
});
fileText = newText;
}
function goToDef() {
session.executeCommandSeq<ts.server.protocol.DefinitionRequest>({
command: ts.server.protocol.CommandTypes.Definition,
arguments: protocolFileLocationFromSubstring({ path: file, content: fileText }, `"fp-ts/lib/Struct"`),
});
}
});
});

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /a/b/app.ts
import * as fs from 'fs'
@ -81,7 +81,7 @@ MissingPaths:: [
Program Reused:: Completely
Program 2 Reused:: Completely
File: /a/b/app.ts
import * as fs from 'fs'
@ -136,7 +136,7 @@ MissingPaths:: [
Program Reused:: Completely
Program 3 Reused:: Completely
File: /a/b/app.ts
import * as fs from 'fs'

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: a1.ts
@ -138,7 +138,7 @@ node_modules/@types/typerefs2/index.d.ts(3,13): error TS2451: Cannot redeclare b
Program Reused:: SafeModules
Program 2 Reused:: SafeModules
File: a1.ts
@ -284,7 +284,7 @@ node_modules/@types/typerefs2/index.d.ts(3,13): error TS2451: Cannot redeclare b
Program Reused:: SafeModules
Program 3 Reused:: SafeModules
File: a1.ts
@ -413,7 +413,7 @@ node_modules/@types/typerefs2/index.d.ts(3,13): error TS2451: Cannot redeclare b
Program Reused:: SafeModules
Program 4 Reused:: SafeModules
File: a1.ts
@ -542,7 +542,7 @@ node_modules/@types/typerefs2/index.d.ts(3,13): error TS2451: Cannot redeclare b
Program Reused:: Completely
Program 5 Reused:: Completely
File: a1.ts
@ -653,7 +653,7 @@ node_modules/@types/typerefs2/index.d.ts(3,13): error TS2451: Cannot redeclare b
Program Reused:: SafeModules
Program 6 Reused:: SafeModules
File: a1.ts
@ -782,7 +782,7 @@ node_modules/@types/typerefs2/index.d.ts(3,13): error TS2451: Cannot redeclare b
Program Reused:: SafeModules
Program 7 Reused:: SafeModules
File: a1.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /node_modules/b/internal.d.ts
@ -67,7 +67,7 @@ MissingPaths:: [
Program Reused:: Completely
Program 2 Reused:: Completely
File: /node_modules/b/internal.d.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -42,7 +42,7 @@ a.ts(4,23): error TS2688: Cannot find type definition file for 'typerefs'.
Program Reused:: SafeModules
Program 2 Reused:: SafeModules
File: c.ts
import x from 'b'

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -42,7 +42,7 @@ a.ts(4,23): error TS2688: Cannot find type definition file for 'typerefs'.
Program Reused:: SafeModules
Program 2 Reused:: SafeModules
File: c.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -42,7 +42,7 @@ a.ts(4,23): error TS2688: Cannot find type definition file for 'typerefs'.
Program Reused:: SafeModules
Program 2 Reused:: SafeModules
File: c.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -55,7 +55,7 @@ a.ts(4,23): error TS2688: Cannot find type definition file for 'typerefs'.
Program Reused:: SafeModules
Program 2 Reused:: SafeModules
File: c.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -42,7 +42,7 @@ a.ts(4,23): error TS2688: Cannot find type definition file for 'typerefs'.
Program Reused:: Completely
Program 2 Reused:: Completely
File: c.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -55,7 +55,7 @@ a.ts(4,23): error TS2688: Cannot find type definition file for 'typerefs'.
Program Reused:: Completely
Program 2 Reused:: Completely
File: c.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -46,7 +46,7 @@ a.ts(4,23): error TS2688: Cannot find type definition file for 'typerefs'.
Program Reused:: Not
Program 2 Reused:: Not
File: c.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: file1.ts
import * as a from "a";
@ -63,7 +63,7 @@ file1.ts(2,20): error TS2307: Cannot find module 'a' or its corresponding type d
Program Reused:: SafeModules
Program 2 Reused:: SafeModules
File: node_modules/a/index.d.ts
export declare let x: number;

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,990 @@
Program 1 Reused:: Not
File: /src/project/node_modules/fp-ts/lib/Struct.d.ts
export function foo(): void
File: /src/project/src/struct.d.ts
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
resolvedModules:
fp-ts/lib/Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/Struct.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/Struct.ts",
"/src/project/node_modules/fp-ts/lib/Struct.tsx"
]
}
fp-ts/lib/struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/struct.ts",
"/src/project/src/node_modules/fp-ts/lib/struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/struct.ts",
"/src/project/node_modules/fp-ts/lib/struct.tsx"
]
}
./Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/Struct.ts",
"/src/project/src/Struct.tsx"
]
}
./struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/struct.ts",
"/src/project/src/struct.tsx"
]
}
File: /src/project/src/anotherFile.ts
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
resolvedModules:
fp-ts/lib/Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/Struct.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/Struct.ts",
"/src/project/node_modules/fp-ts/lib/Struct.tsx"
]
}
fp-ts/lib/struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/struct.ts",
"/src/project/src/node_modules/fp-ts/lib/struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/struct.ts",
"/src/project/node_modules/fp-ts/lib/struct.tsx"
]
}
./Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/Struct.ts",
"/src/project/src/Struct.tsx"
]
}
./struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/struct.ts",
"/src/project/src/struct.tsx"
]
}
File: /src/project/src/oneMore.ts
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
resolvedModules:
fp-ts/lib/Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/Struct.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/Struct.ts",
"/src/project/node_modules/fp-ts/lib/Struct.tsx"
]
}
fp-ts/lib/struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/struct.ts",
"/src/project/src/node_modules/fp-ts/lib/struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/struct.ts",
"/src/project/node_modules/fp-ts/lib/struct.tsx"
]
}
./Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/Struct.ts",
"/src/project/src/Struct.tsx"
]
}
./struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/struct.ts",
"/src/project/src/struct.tsx"
]
}
MissingPaths:: [
"lib.d.ts"
]
/src/project/src/anotherFile.ts(4,22): error TS1149: File name '/src/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/anotherFile.ts(5,22): error TS1149: File name '/src/project/src/Struct.d.ts' differs from already included file name '/src/project/src/struct.d.ts' only in casing.
The file is in the program because:
Root file specified for compilation
Imported via "./Struct" from file '/src/project/src/struct.d.ts'
Imported via "./struct" from file '/src/project/src/struct.d.ts'
Imported via "./Struct" from file '/src/project/src/anotherFile.ts'
Imported via "./struct" from file '/src/project/src/anotherFile.ts'
Imported via "./Struct" from file '/src/project/src/oneMore.ts'
Imported via "./struct" from file '/src/project/src/oneMore.ts'
/src/project/src/oneMore.ts(4,22): error TS1149: File name '/src/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/oneMore.ts(5,22): error TS1149: File name '/src/project/src/Struct.d.ts' differs from already included file name '/src/project/src/struct.d.ts' only in casing.
The file is in the program because:
Root file specified for compilation
Imported via "./Struct" from file '/src/project/src/struct.d.ts'
Imported via "./struct" from file '/src/project/src/struct.d.ts'
Imported via "./Struct" from file '/src/project/src/anotherFile.ts'
Imported via "./struct" from file '/src/project/src/anotherFile.ts'
Imported via "./Struct" from file '/src/project/src/oneMore.ts'
Imported via "./struct" from file '/src/project/src/oneMore.ts'
/src/project/src/struct.d.ts(3,22): error TS1261: Already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' differs from file name '/src/project/node_modules/fp-ts/lib/struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/struct.d.ts(4,22): error TS1149: File name '/src/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/struct.d.ts(5,22): error TS1149: File name '/src/project/src/Struct.d.ts' differs from already included file name '/src/project/src/struct.d.ts' only in casing.
The file is in the program because:
Root file specified for compilation
Imported via "./Struct" from file '/src/project/src/struct.d.ts'
Imported via "./struct" from file '/src/project/src/struct.d.ts'
Imported via "./Struct" from file '/src/project/src/anotherFile.ts'
Imported via "./struct" from file '/src/project/src/anotherFile.ts'
Imported via "./Struct" from file '/src/project/src/oneMore.ts'
Imported via "./struct" from file '/src/project/src/oneMore.ts'
Program 2 Reused:: Completely
File: /src/project/node_modules/fp-ts/lib/Struct.d.ts
export function foo(): void
File: /src/project/src/struct.d.ts
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
export const y = 10;
resolvedModules:
fp-ts/lib/Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/Struct.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/Struct.ts",
"/src/project/node_modules/fp-ts/lib/Struct.tsx"
]
}
fp-ts/lib/struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/struct.ts",
"/src/project/src/node_modules/fp-ts/lib/struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/struct.ts",
"/src/project/node_modules/fp-ts/lib/struct.tsx"
]
}
./Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/Struct.ts",
"/src/project/src/Struct.tsx"
]
}
./struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/struct.ts",
"/src/project/src/struct.tsx"
]
}
File: /src/project/src/anotherFile.ts
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
resolvedModules:
fp-ts/lib/Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/Struct.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/Struct.ts",
"/src/project/node_modules/fp-ts/lib/Struct.tsx"
]
}
fp-ts/lib/struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/struct.ts",
"/src/project/src/node_modules/fp-ts/lib/struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/struct.ts",
"/src/project/node_modules/fp-ts/lib/struct.tsx"
]
}
./Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/Struct.ts",
"/src/project/src/Struct.tsx"
]
}
./struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/struct.ts",
"/src/project/src/struct.tsx"
]
}
File: /src/project/src/oneMore.ts
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
resolvedModules:
fp-ts/lib/Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/Struct.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/Struct.ts",
"/src/project/node_modules/fp-ts/lib/Struct.tsx"
]
}
fp-ts/lib/struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/struct.ts",
"/src/project/src/node_modules/fp-ts/lib/struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/struct.ts",
"/src/project/node_modules/fp-ts/lib/struct.tsx"
]
}
./Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/Struct.ts",
"/src/project/src/Struct.tsx"
]
}
./struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/struct.ts",
"/src/project/src/struct.tsx"
]
}
MissingPaths:: [
"lib.d.ts"
]
/src/project/src/anotherFile.ts(4,22): error TS1149: File name '/src/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/anotherFile.ts(5,22): error TS1149: File name '/src/project/src/Struct.d.ts' differs from already included file name '/src/project/src/struct.d.ts' only in casing.
The file is in the program because:
Root file specified for compilation
Imported via "./Struct" from file '/src/project/src/struct.d.ts'
Imported via "./struct" from file '/src/project/src/struct.d.ts'
Imported via "./Struct" from file '/src/project/src/anotherFile.ts'
Imported via "./struct" from file '/src/project/src/anotherFile.ts'
Imported via "./Struct" from file '/src/project/src/oneMore.ts'
Imported via "./struct" from file '/src/project/src/oneMore.ts'
/src/project/src/oneMore.ts(4,22): error TS1149: File name '/src/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/oneMore.ts(5,22): error TS1149: File name '/src/project/src/Struct.d.ts' differs from already included file name '/src/project/src/struct.d.ts' only in casing.
The file is in the program because:
Root file specified for compilation
Imported via "./Struct" from file '/src/project/src/struct.d.ts'
Imported via "./struct" from file '/src/project/src/struct.d.ts'
Imported via "./Struct" from file '/src/project/src/anotherFile.ts'
Imported via "./struct" from file '/src/project/src/anotherFile.ts'
Imported via "./Struct" from file '/src/project/src/oneMore.ts'
Imported via "./struct" from file '/src/project/src/oneMore.ts'
/src/project/src/struct.d.ts(5,22): error TS1261: Already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' differs from file name '/src/project/node_modules/fp-ts/lib/struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/struct.d.ts(6,22): error TS1149: File name '/src/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/struct.d.ts(7,22): error TS1149: File name '/src/project/src/Struct.d.ts' differs from already included file name '/src/project/src/struct.d.ts' only in casing.
The file is in the program because:
Root file specified for compilation
Imported via "./Struct" from file '/src/project/src/struct.d.ts'
Imported via "./struct" from file '/src/project/src/struct.d.ts'
Imported via "./Struct" from file '/src/project/src/anotherFile.ts'
Imported via "./struct" from file '/src/project/src/anotherFile.ts'
Imported via "./Struct" from file '/src/project/src/oneMore.ts'
Imported via "./struct" from file '/src/project/src/oneMore.ts'
Program 3 Reused:: SafeModules
File: /src/project/node_modules/fp-ts/lib/Struct.d.ts
export function foo(): void
File: /src/project/src/struct.d.ts
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
resolvedModules:
fp-ts/lib/Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/Struct.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/Struct.ts",
"/src/project/node_modules/fp-ts/lib/Struct.tsx"
]
}
fp-ts/lib/struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/struct.ts",
"/src/project/src/node_modules/fp-ts/lib/struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/struct.ts",
"/src/project/node_modules/fp-ts/lib/struct.tsx"
]
}
./Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/Struct.ts",
"/src/project/src/Struct.tsx"
]
}
File: /src/project/src/anotherFile.ts
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
resolvedModules:
fp-ts/lib/Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/Struct.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/Struct.ts",
"/src/project/node_modules/fp-ts/lib/Struct.tsx"
]
}
fp-ts/lib/struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/struct.ts",
"/src/project/src/node_modules/fp-ts/lib/struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/struct.ts",
"/src/project/node_modules/fp-ts/lib/struct.tsx"
]
}
./Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/Struct.ts",
"/src/project/src/Struct.tsx"
]
}
./struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/struct.ts",
"/src/project/src/struct.tsx"
]
}
File: /src/project/src/oneMore.ts
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
resolvedModules:
fp-ts/lib/Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/Struct.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/Struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/Struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/Struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/Struct.ts",
"/src/project/node_modules/fp-ts/lib/Struct.tsx"
]
}
fp-ts/lib/struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/node_modules/fp-ts/lib/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": true,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/node_modules/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/fp-ts/package.json",
"/src/project/src/node_modules/fp-ts/lib/struct.ts",
"/src/project/src/node_modules/fp-ts/lib/struct.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.ts",
"/src/project/src/node_modules/fp-ts/lib/struct/index.tsx",
"/src/project/src/node_modules/fp-ts/lib/struct/index.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/package.json",
"/src/project/src/node_modules/@types/fp-ts/package.json",
"/src/project/src/node_modules/@types/fp-ts/lib/struct.d.ts",
"/src/project/src/node_modules/@types/fp-ts/lib/struct/index.d.ts",
"/src/project/node_modules/fp-ts/lib/struct/package.json",
"/src/project/node_modules/fp-ts/package.json",
"/src/project/node_modules/fp-ts/lib/struct.ts",
"/src/project/node_modules/fp-ts/lib/struct.tsx"
]
}
./Struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/Struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/Struct.ts",
"/src/project/src/Struct.tsx"
]
}
./struct: {
"resolvedModule": {
"resolvedFileName": "/src/project/src/struct.d.ts",
"extension": ".d.ts",
"isExternalLibraryImport": false,
"resolvedUsingTsExtension": false
},
"failedLookupLocations": [
"/src/project/src/struct.ts",
"/src/project/src/struct.tsx"
]
}
MissingPaths:: [
"lib.d.ts"
]
/src/project/src/anotherFile.ts(4,22): error TS1149: File name '/src/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/anotherFile.ts(5,22): error TS1149: File name '/src/project/src/Struct.d.ts' differs from already included file name '/src/project/src/struct.d.ts' only in casing.
The file is in the program because:
Root file specified for compilation
Imported via "./Struct" from file '/src/project/src/struct.d.ts'
Imported via "./Struct" from file '/src/project/src/anotherFile.ts'
Imported via "./struct" from file '/src/project/src/anotherFile.ts'
Imported via "./Struct" from file '/src/project/src/oneMore.ts'
Imported via "./struct" from file '/src/project/src/oneMore.ts'
/src/project/src/oneMore.ts(4,22): error TS1149: File name '/src/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/oneMore.ts(5,22): error TS1149: File name '/src/project/src/Struct.d.ts' differs from already included file name '/src/project/src/struct.d.ts' only in casing.
The file is in the program because:
Root file specified for compilation
Imported via "./Struct" from file '/src/project/src/struct.d.ts'
Imported via "./Struct" from file '/src/project/src/anotherFile.ts'
Imported via "./struct" from file '/src/project/src/anotherFile.ts'
Imported via "./Struct" from file '/src/project/src/oneMore.ts'
Imported via "./struct" from file '/src/project/src/oneMore.ts'
/src/project/src/struct.d.ts(3,22): error TS1261: Already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' differs from file name '/src/project/node_modules/fp-ts/lib/struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/struct.d.ts(4,22): error TS1149: File name '/src/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/src/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/src/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/src/project/src/oneMore.ts'
Root file specified for compilation
/src/project/src/struct.d.ts(5,22): error TS1149: File name '/src/project/src/Struct.d.ts' differs from already included file name '/src/project/src/struct.d.ts' only in casing.
The file is in the program because:
Root file specified for compilation
Imported via "./Struct" from file '/src/project/src/struct.d.ts'
Imported via "./Struct" from file '/src/project/src/anotherFile.ts'
Imported via "./struct" from file '/src/project/src/anotherFile.ts'
Imported via "./Struct" from file '/src/project/src/oneMore.ts'
Imported via "./struct" from file '/src/project/src/oneMore.ts'

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -41,7 +41,7 @@ a.ts(4,23): error TS2688: Cannot find type definition file for 'typerefs'.
Program Reused:: Not
Program 2 Reused:: Not
File: c.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -41,7 +41,7 @@ a.ts(4,23): error TS2688: Cannot find type definition file for 'typerefs'.
Program Reused:: Completely
Program 2 Reused:: Completely
File: c.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -42,7 +42,7 @@ a.ts(4,23): error TS2688: Cannot find type definition file for 'typerefs'.
Program Reused:: Not
Program 2 Reused:: Not
File: c.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts
@ -113,7 +113,7 @@ MissingPaths:: [
Program Reused:: Completely
Program 2 Reused:: Completely
File: /node_modules/a/node_modules/x/index.d.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts
@ -115,7 +115,7 @@ MissingPaths:: [
Program Reused:: Not
Program 2 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts
@ -113,7 +113,7 @@ MissingPaths:: [
Program Reused:: Not
Program 2 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts
@ -113,7 +113,7 @@ MissingPaths:: [
Program Reused:: Not
Program 2 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts
@ -113,7 +113,7 @@ MissingPaths:: [
Program Reused:: Completely
Program 2 Reused:: Completely
File: /node_modules/a/node_modules/x/index.d.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts
@ -115,7 +115,7 @@ MissingPaths:: [
Program Reused:: Not
Program 2 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts
@ -113,7 +113,7 @@ MissingPaths:: [
Program Reused:: Not
Program 2 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts
@ -113,7 +113,7 @@ MissingPaths:: [
Program Reused:: Not
Program 2 Reused:: Not
File: /node_modules/a/node_modules/x/index.d.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: b.ts
@ -27,7 +27,7 @@ a.ts(2,17): error TS2306: File 'b.ts' is not a module.
Program Reused:: Completely
Program 2 Reused:: Completely
File: b.ts
@ -56,7 +56,7 @@ a.ts(2,17): error TS2306: File 'b.ts' is not a module.
Program Reused:: SafeModules
Program 3 Reused:: SafeModules
File: a.ts
@ -70,7 +70,7 @@ MissingPaths:: [
Program Reused:: SafeModules
Program 4 Reused:: SafeModules
File: b.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /types/typedefs/index.d.ts
@ -29,7 +29,7 @@ MissingPaths:: [
Program Reused:: Completely
Program 2 Reused:: Completely
File: /types/typedefs/index.d.ts
@ -60,7 +60,7 @@ MissingPaths:: [
Program Reused:: SafeModules
Program 3 Reused:: SafeModules
File: /a.ts
@ -74,7 +74,7 @@ MissingPaths:: [
Program Reused:: SafeModules
Program 4 Reused:: SafeModules
File: /types/typedefs/index.d.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /a.ts
@ -21,7 +21,7 @@ MissingPaths:: [
Program Reused:: Completely
Program 2 Reused:: Completely
File: /a.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: c.ts
@ -44,7 +44,7 @@ b.ts(1,22): error TS6059: File 'c.ts' is not under 'rootDir' '/a/b'. 'rootDir' i
Program Reused:: Completely
Program 2 Reused:: Completely
File: c.ts

Просмотреть файл

@ -1,4 +1,4 @@
Program Reused:: Not
Program 1 Reused:: Not
File: /a.ts
@ -22,7 +22,7 @@ MissingPaths:: [
parent pointers are updated: true
Program Reused:: Completely
Program 2 Reused:: Completely
File: /a.ts
'use strict';

Просмотреть файл

@ -0,0 +1,339 @@
currentDirectory:: / useCaseSensitiveFileNames: false
Input::
//// [/a/lib/lib.d.ts]
/// <reference no-default-lib="true"/>
interface Boolean {}
interface Function {}
interface CallableFunction {}
interface NewableFunction {}
interface IArguments {}
interface Number { toExponential: any; }
interface Object {}
interface RegExp {}
interface String { charAt: any; }
interface Array<T> { length: number; [n: number]: T; }
interface ReadonlyArray<T> {}
declare const console: { log(msg: any): void; };
//// [/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts]
export function foo(): void
//// [/home/src/projects/project/src/anotherFile.ts]
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
//// [/home/src/projects/project/src/oneMore.ts]
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
//// [/home/src/projects/project/src/struct.d.ts]
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
//// [/home/src/projects/project/tsconfig.json]
{}
//// [/lib/lib.d.ts]
/// <reference no-default-lib="true"/>
interface Boolean {}
interface Function {}
interface CallableFunction {}
interface NewableFunction {}
interface IArguments {}
interface Number { toExponential: any; }
interface Object {}
interface RegExp {}
interface String { charAt: any; }
interface Array<T> { length: number; [n: number]: T; }
interface ReadonlyArray<T> {}
declare const console: { log(msg: any): void; };
Output::
/lib/tsc -p /home/src/projects/project/tsconfig.json --explainFiles
home/src/projects/project/src/anotherFile.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
home/src/projects/project/src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/anotherFile.ts:3:22 - error TS1261: Already included file name '/home/src/projects/project/src/Struct.d.ts' differs from file name '/home/src/projects/project/src/struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
home/src/projects/project/src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/anotherFile.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
home/src/projects/project/src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
home/src/projects/project/src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/anotherFile.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
home/src/projects/project/src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
home/src/projects/project/src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/anotherFile.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
home/src/projects/project/src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
home/src/projects/project/src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
lib/lib.d.ts
Default library for target 'es5'
home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts
Imported via "fp-ts/lib/Struct" from file 'home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file 'home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file 'home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file 'home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file 'home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file 'home/src/projects/project/src/oneMore.ts'
home/src/projects/project/src/Struct.d.ts
Imported via "./Struct" from file 'home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file 'home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file 'home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file 'home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file 'home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file 'home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
home/src/projects/project/src/anotherFile.ts
Matched by default include pattern '**/*'
home/src/projects/project/src/oneMore.ts
Matched by default include pattern '**/*'
Found 7 errors in 3 files.
Errors Files
3 home/src/projects/project/src/anotherFile.ts:2
2 home/src/projects/project/src/oneMore.ts:2
2 home/src/projects/project/src/Struct.d.ts:2
exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
//// [/home/src/projects/project/src/anotherFile.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//// [/home/src/projects/project/src/oneMore.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

Просмотреть файл

@ -0,0 +1,331 @@
currentDirectory:: /home/src/projects useCaseSensitiveFileNames: false
Input::
//// [/home/src/lib/lib.d.ts]
/// <reference no-default-lib="true"/>
interface Boolean {}
interface Function {}
interface CallableFunction {}
interface NewableFunction {}
interface IArguments {}
interface Number { toExponential: any; }
interface Object {}
interface RegExp {}
interface String { charAt: any; }
interface Array<T> { length: number; [n: number]: T; }
interface ReadonlyArray<T> {}
declare const console: { log(msg: any): void; };
//// [/home/src/lib/lib.scripthost.d.ts]
interface ScriptHostInterface { }
//// [/home/src/lib/lib.webworker.d.ts]
interface WebWorkerInterface { }
//// [/home/src/projects/project1/core.d.ts]
export const core = 10;
//// [/home/src/projects/project1/file.ts]
export const file = 10;
//// [/home/src/projects/project1/file2.ts]
/// <reference lib="webworker2"/>
/// <reference lib="unknownlib"/>
/// <reference lib="scripthost"/>
//// [/home/src/projects/project1/index.ts]
export const x = "type1";
//// [/home/src/projects/project1/tsconfig.json]
{
"compilerOptions": {
"composite": true,
"traceResolution": true
}
}
//// [/home/src/projects/project1/utils.d.ts]
export const y = 10;
Output::
/home/src/lib/tsc -p project1 --explainFiles
File '/home/src/projects/project1/package.json' does not exist.
File '/home/src/projects/package.json' does not exist.
File '/home/src/package.json' does not exist.
File '/home/package.json' does not exist.
File '/package.json' does not exist.
File '/home/src/projects/project1/package.json' does not exist according to earlier cached lookups.
File '/home/src/projects/package.json' does not exist according to earlier cached lookups.
File '/home/src/package.json' does not exist according to earlier cached lookups.
File '/home/package.json' does not exist according to earlier cached lookups.
File '/package.json' does not exist according to earlier cached lookups.
File '/home/src/projects/project1/package.json' does not exist according to earlier cached lookups.
File '/home/src/projects/package.json' does not exist according to earlier cached lookups.
File '/home/src/package.json' does not exist according to earlier cached lookups.
File '/home/package.json' does not exist according to earlier cached lookups.
File '/package.json' does not exist according to earlier cached lookups.
======== Resolving module '@typescript/lib-scripthost' from '/home/src/projects/project1/__lib_node_modules_lookup_lib.scripthost.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/home/src/projects/project1/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/home/src/projects/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/home/src/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/home/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/home/src/projects/project1/node_modules' does not exist, skipping all lookups in it.
Directory '/home/src/projects/node_modules' does not exist, skipping all lookups in it.
Directory '/home/src/node_modules' does not exist, skipping all lookups in it.
Directory '/home/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-scripthost' was not resolved. ========
File '/home/src/lib/package.json' does not exist.
File '/home/src/package.json' does not exist according to earlier cached lookups.
File '/home/package.json' does not exist according to earlier cached lookups.
File '/package.json' does not exist according to earlier cached lookups.
File '/home/src/projects/project1/package.json' does not exist according to earlier cached lookups.
File '/home/src/projects/package.json' does not exist according to earlier cached lookups.
File '/home/src/package.json' does not exist according to earlier cached lookups.
File '/home/package.json' does not exist according to earlier cached lookups.
File '/package.json' does not exist according to earlier cached lookups.
File '/home/src/projects/project1/package.json' does not exist according to earlier cached lookups.
File '/home/src/projects/package.json' does not exist according to earlier cached lookups.
File '/home/src/package.json' does not exist according to earlier cached lookups.
File '/home/package.json' does not exist according to earlier cached lookups.
File '/package.json' does not exist according to earlier cached lookups.
File '/home/src/lib/package.json' does not exist according to earlier cached lookups.
File '/home/src/package.json' does not exist according to earlier cached lookups.
File '/home/package.json' does not exist according to earlier cached lookups.
File '/package.json' does not exist according to earlier cached lookups.
project1/file2.ts:1:21 - error TS2727: Cannot find lib definition for 'webworker2'. Did you mean 'webworker'?
1 /// <reference lib="webworker2"/>
   ~~~~~~~~~~
project1/file2.ts:2:21 - error TS2726: Cannot find lib definition for 'unknownlib'.
2 /// <reference lib="unknownlib"/>
   ~~~~~~~~~~
../lib/lib.d.ts
Default library for target 'es5'
../lib/lib.scripthost.d.ts
Library referenced via 'scripthost' from file 'project1/file2.ts'
project1/core.d.ts
Matched by default include pattern '**/*'
project1/file.ts
Matched by default include pattern '**/*'
project1/file2.ts
Matched by default include pattern '**/*'
project1/index.ts
Matched by default include pattern '**/*'
project1/utils.d.ts
Matched by default include pattern '**/*'
Found 2 errors in the same file, starting at: project1/file2.ts:1
exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated
Program root files: [
"/home/src/projects/project1/core.d.ts",
"/home/src/projects/project1/file.ts",
"/home/src/projects/project1/file2.ts",
"/home/src/projects/project1/index.ts",
"/home/src/projects/project1/utils.d.ts"
]
Program options: {
"composite": true,
"traceResolution": true,
"project": "/home/src/projects/project1",
"explainFiles": true,
"configFilePath": "/home/src/projects/project1/tsconfig.json"
}
Program structureReused: Not
Program files::
/home/src/lib/lib.d.ts
/home/src/lib/lib.scripthost.d.ts
/home/src/projects/project1/core.d.ts
/home/src/projects/project1/file.ts
/home/src/projects/project1/file2.ts
/home/src/projects/project1/index.ts
/home/src/projects/project1/utils.d.ts
Semantic diagnostics in builder refreshed for::
/home/src/lib/lib.d.ts
/home/src/lib/lib.scripthost.d.ts
/home/src/projects/project1/core.d.ts
/home/src/projects/project1/file.ts
/home/src/projects/project1/file2.ts
/home/src/projects/project1/index.ts
/home/src/projects/project1/utils.d.ts
Shape signatures in builder refreshed for::
/home/src/lib/lib.d.ts (used version)
/home/src/lib/lib.scripthost.d.ts (used version)
/home/src/projects/project1/core.d.ts (used version)
/home/src/projects/project1/file.ts (computed .d.ts during emit)
/home/src/projects/project1/file2.ts (computed .d.ts during emit)
/home/src/projects/project1/index.ts (computed .d.ts during emit)
/home/src/projects/project1/utils.d.ts (used version)
//// [/home/src/projects/project1/file.d.ts]
export declare const file = 10;
//// [/home/src/projects/project1/file.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.file = void 0;
exports.file = 10;
//// [/home/src/projects/project1/file2.d.ts]
//// [/home/src/projects/project1/file2.js]
/// <reference lib="webworker2"/>
/// <reference lib="unknownlib"/>
/// <reference lib="scripthost"/>
//// [/home/src/projects/project1/index.d.ts]
export declare const x = "type1";
//// [/home/src/projects/project1/index.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.x = void 0;
exports.x = "type1";
//// [/home/src/projects/project1/tsconfig.tsbuildinfo]
{"program":{"fileNames":["../../lib/lib.d.ts","../../lib/lib.scripthost.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts"],"fileInfos":[{"version":"3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedFormat":1},{"version":"-5403980302-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedFormat":1},{"version":"-15683237936-export const core = 10;","impliedFormat":1},{"version":"-16628394009-export const file = 10;","signature":"-9025507999-export declare const file = 10;\n","impliedFormat":1},{"version":"-15920922626-/// <reference lib=\"webworker2\"/>\n/// <reference lib=\"unknownlib\"/>\n/// <reference lib=\"scripthost\"/>\n","signature":"5381-","impliedFormat":1},{"version":"-11532698187-export const x = \"type1\";","signature":"-5899226897-export declare const x = \"type1\";\n","impliedFormat":1},{"version":"-13729955264-export const y = 10;","impliedFormat":1}],"root":[[3,7]],"options":{"composite":true},"referencedMap":[],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7],"latestChangedDtsFile":"./index.d.ts"},"version":"FakeTSVersion"}
//// [/home/src/projects/project1/tsconfig.tsbuildinfo.readable.baseline.txt]
{
"program": {
"fileNames": [
"../../lib/lib.d.ts",
"../../lib/lib.scripthost.d.ts",
"./core.d.ts",
"./file.ts",
"./file2.ts",
"./index.ts",
"./utils.d.ts"
],
"fileInfos": {
"../../lib/lib.d.ts": {
"original": {
"version": "3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };",
"affectsGlobalScope": true,
"impliedFormat": 1
},
"version": "3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };",
"signature": "3858781397-/// <reference no-default-lib=\"true\"/>\ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array<T> { length: number; [n: number]: T; }\ninterface ReadonlyArray<T> {}\ndeclare const console: { log(msg: any): void; };",
"affectsGlobalScope": true,
"impliedFormat": "commonjs"
},
"../../lib/lib.scripthost.d.ts": {
"original": {
"version": "-5403980302-interface ScriptHostInterface { }",
"affectsGlobalScope": true,
"impliedFormat": 1
},
"version": "-5403980302-interface ScriptHostInterface { }",
"signature": "-5403980302-interface ScriptHostInterface { }",
"affectsGlobalScope": true,
"impliedFormat": "commonjs"
},
"./core.d.ts": {
"original": {
"version": "-15683237936-export const core = 10;",
"impliedFormat": 1
},
"version": "-15683237936-export const core = 10;",
"signature": "-15683237936-export const core = 10;",
"impliedFormat": "commonjs"
},
"./file.ts": {
"original": {
"version": "-16628394009-export const file = 10;",
"signature": "-9025507999-export declare const file = 10;\n",
"impliedFormat": 1
},
"version": "-16628394009-export const file = 10;",
"signature": "-9025507999-export declare const file = 10;\n",
"impliedFormat": "commonjs"
},
"./file2.ts": {
"original": {
"version": "-15920922626-/// <reference lib=\"webworker2\"/>\n/// <reference lib=\"unknownlib\"/>\n/// <reference lib=\"scripthost\"/>\n",
"signature": "5381-",
"impliedFormat": 1
},
"version": "-15920922626-/// <reference lib=\"webworker2\"/>\n/// <reference lib=\"unknownlib\"/>\n/// <reference lib=\"scripthost\"/>\n",
"signature": "5381-",
"impliedFormat": "commonjs"
},
"./index.ts": {
"original": {
"version": "-11532698187-export const x = \"type1\";",
"signature": "-5899226897-export declare const x = \"type1\";\n",
"impliedFormat": 1
},
"version": "-11532698187-export const x = \"type1\";",
"signature": "-5899226897-export declare const x = \"type1\";\n",
"impliedFormat": "commonjs"
},
"./utils.d.ts": {
"original": {
"version": "-13729955264-export const y = 10;",
"impliedFormat": 1
},
"version": "-13729955264-export const y = 10;",
"signature": "-13729955264-export const y = 10;",
"impliedFormat": "commonjs"
}
},
"root": [
[
[
3,
7
],
[
"./core.d.ts",
"./file.ts",
"./file2.ts",
"./index.ts",
"./utils.d.ts"
]
]
],
"options": {
"composite": true
},
"referencedMap": {},
"semanticDiagnosticsPerFile": [
"../../lib/lib.d.ts",
"../../lib/lib.scripthost.d.ts",
"./core.d.ts",
"./file.ts",
"./file2.ts",
"./index.ts",
"./utils.d.ts"
],
"latestChangedDtsFile": "./index.d.ts"
},
"version": "FakeTSVersion",
"size": 1512
}

Просмотреть файл

@ -0,0 +1,975 @@
currentDirectory:: /home/src/projects/project useCaseSensitiveFileNames: false
Input::
//// [/home/src/projects/project/src/struct.d.ts]
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
//// [/home/src/projects/project/src/anotherFile.ts]
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
//// [/home/src/projects/project/src/oneMore.ts]
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
//// [/home/src/projects/project/tsconfig.json]
{}
//// [/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts]
export function foo(): void
//// [/a/lib/lib.d.ts]
/// <reference no-default-lib="true"/>
interface Boolean {}
interface Function {}
interface CallableFunction {}
interface NewableFunction {}
interface IArguments {}
interface Number { toExponential: any; }
interface Object {}
interface RegExp {}
interface String { charAt: any; }
interface Array<T> { length: number; [n: number]: T; }
interface ReadonlyArray<T> {}
declare const console: { log(msg: any): void; };
/a/lib/tsc.js -w --explainFiles
Output::
>> Screen clear
[HH:MM:SS AM] Starting compilation in watch mode...
src/anotherFile.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:3:22 - error TS1261: Already included file name '/home/src/projects/project/src/Struct.d.ts' differs from file name '/home/src/projects/project/src/struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
../../../../a/lib/lib.d.ts
Default library for target 'es5'
node_modules/fp-ts/lib/Struct.d.ts
Imported via "fp-ts/lib/Struct" from file 'src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file 'src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file 'src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file 'src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file 'src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file 'src/oneMore.ts'
src/Struct.d.ts
Imported via "./Struct" from file 'src/anotherFile.ts'
Imported via "./Struct" from file 'src/Struct.d.ts'
Imported via "./struct" from file 'src/Struct.d.ts'
Imported via "./struct" from file 'src/anotherFile.ts'
Imported via "./Struct" from file 'src/oneMore.ts'
Imported via "./struct" from file 'src/oneMore.ts'
Matched by default include pattern '**/*'
src/anotherFile.ts
Matched by default include pattern '**/*'
src/oneMore.ts
Matched by default include pattern '**/*'
[HH:MM:SS AM] Found 7 errors. Watching for file changes.
//// [/home/src/projects/project/src/anotherFile.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//// [/home/src/projects/project/src/oneMore.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
PolledWatches::
/home/src/projects/node_modules/@types: *new*
{"pollingInterval":500}
/home/src/projects/package.json: *new*
{"pollingInterval":2000}
/home/src/projects/project/node_modules/@types: *new*
{"pollingInterval":500}
/home/src/projects/project/node_modules/fp-ts/lib/package.json: *new*
{"pollingInterval":2000}
/home/src/projects/project/node_modules/fp-ts/package.json: *new*
{"pollingInterval":2000}
/home/src/projects/project/node_modules/package.json: *new*
{"pollingInterval":2000}
/home/src/projects/project/package.json: *new*
{"pollingInterval":2000}
/home/src/projects/project/src/package.json: *new*
{"pollingInterval":2000}
FsWatches::
/a/lib/lib.d.ts: *new*
{}
/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts: *new*
{}
/home/src/projects/project/src/Struct.d.ts: *new*
{}
/home/src/projects/project/src/anotherFile.ts: *new*
{}
/home/src/projects/project/src/oneMore.ts: *new*
{}
/home/src/projects/project/tsconfig.json: *new*
{}
FsWatchesRecursive::
/home/src/projects/project: *new*
{}
/home/src/projects/project/node_modules: *new*
{}
/home/src/projects/project/src: *new*
{}
Program root files: [
"/home/src/projects/project/src/anotherFile.ts",
"/home/src/projects/project/src/oneMore.ts",
"/home/src/projects/project/src/struct.d.ts"
]
Program options: {
"watch": true,
"explainFiles": true,
"configFilePath": "/home/src/projects/project/tsconfig.json"
}
Program structureReused: Not
Program files::
/a/lib/lib.d.ts
/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts
/home/src/projects/project/src/Struct.d.ts
/home/src/projects/project/src/anotherFile.ts
/home/src/projects/project/src/oneMore.ts
Semantic diagnostics in builder refreshed for::
/a/lib/lib.d.ts
/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts
/home/src/projects/project/src/Struct.d.ts
/home/src/projects/project/src/anotherFile.ts
/home/src/projects/project/src/oneMore.ts
Shape signatures in builder refreshed for::
/a/lib/lib.d.ts (used version)
/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts (used version)
/home/src/projects/project/src/struct.d.ts (used version)
/home/src/projects/project/src/anotherfile.ts (used version)
/home/src/projects/project/src/onemore.ts (used version)
exitCode:: ExitStatus.undefined
Change:: change to reuse imports
Input::
//// [/home/src/projects/project/src/struct.d.ts]
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
import * as xs4 from "./struct";
export const y = 10;
Timeout callback:: count: 1
1: timerToUpdateProgram *new*
Before running Timeout callback:: count: 1
1: timerToUpdateProgram
After running Timeout callback:: count: 0
Output::
>> Screen clear
[HH:MM:SS AM] File change detected. Starting incremental compilation...
src/anotherFile.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:3:22 - error TS1261: Already included file name '/home/src/projects/project/src/Struct.d.ts' differs from file name '/home/src/projects/project/src/struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
../../../../a/lib/lib.d.ts
Default library for target 'es5'
node_modules/fp-ts/lib/Struct.d.ts
Imported via "fp-ts/lib/Struct" from file 'src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file 'src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file 'src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file 'src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file 'src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file 'src/oneMore.ts'
src/Struct.d.ts
Imported via "./Struct" from file 'src/anotherFile.ts'
Imported via "./Struct" from file 'src/Struct.d.ts'
Imported via "./struct" from file 'src/Struct.d.ts'
Imported via "./struct" from file 'src/anotherFile.ts'
Imported via "./Struct" from file 'src/oneMore.ts'
Imported via "./struct" from file 'src/oneMore.ts'
Matched by default include pattern '**/*'
src/anotherFile.ts
Matched by default include pattern '**/*'
src/oneMore.ts
Matched by default include pattern '**/*'
[HH:MM:SS AM] Found 7 errors. Watching for file changes.
//// [/home/src/projects/project/src/anotherFile.js] file written with same contents
//// [/home/src/projects/project/src/oneMore.js] file written with same contents
Program root files: [
"/home/src/projects/project/src/anotherFile.ts",
"/home/src/projects/project/src/oneMore.ts",
"/home/src/projects/project/src/struct.d.ts"
]
Program options: {
"watch": true,
"explainFiles": true,
"configFilePath": "/home/src/projects/project/tsconfig.json"
}
Program structureReused: Completely
Program files::
/a/lib/lib.d.ts
/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts
/home/src/projects/project/src/Struct.d.ts
/home/src/projects/project/src/anotherFile.ts
/home/src/projects/project/src/oneMore.ts
Semantic diagnostics in builder refreshed for::
/home/src/projects/project/src/Struct.d.ts
/home/src/projects/project/src/anotherFile.ts
/home/src/projects/project/src/oneMore.ts
Shape signatures in builder refreshed for::
/home/src/projects/project/src/struct.d.ts (used version)
/home/src/projects/project/src/onemore.ts (computed .d.ts)
/home/src/projects/project/src/anotherfile.ts (computed .d.ts)
exitCode:: ExitStatus.undefined
Change:: change to update imports
Input::
//// [/home/src/projects/project/src/struct.d.ts]
import * as xs1 from "fp-ts/lib/Struct";
import * as xs2 from "fp-ts/lib/struct";
import * as xs3 from "./Struct";
Timeout callback:: count: 1
2: timerToUpdateProgram *new*
Before running Timeout callback:: count: 1
2: timerToUpdateProgram
After running Timeout callback:: count: 0
Output::
>> Screen clear
[HH:MM:SS AM] File change detected. Starting incremental compilation...
src/anotherFile.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:3:22 - error TS1261: Already included file name '/home/src/projects/project/src/Struct.d.ts' differs from file name '/home/src/projects/project/src/struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:4:22 - error TS1149: File name '/home/src/projects/project/src/struct.d.ts' differs from already included file name '/home/src/projects/project/src/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "./Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "./struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "./Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "./struct" from file '/home/src/projects/project/src/oneMore.ts'
Matched by default include pattern '**/*'
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
src/anotherFile.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:4:22
4 import * as xs4 from "./struct";
   ~~~~~~~~~~
File is included via import here.
src/oneMore.ts:3:22
3 import * as xs3 from "./Struct";
   ~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:2:22 - error TS1149: File name '/home/src/projects/project/node_modules/fp-ts/lib/struct.d.ts' differs from already included file name '/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts' only in casing.
The file is in the program because:
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file '/home/src/projects/project/src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file '/home/src/projects/project/src/oneMore.ts'
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
src/anotherFile.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/anotherFile.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/Struct.d.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:1:22
1 import * as xs1 from "fp-ts/lib/Struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
src/oneMore.ts:2:22
2 import * as xs2 from "fp-ts/lib/struct";
   ~~~~~~~~~~~~~~~~~~
File is included via import here.
../../../../a/lib/lib.d.ts
Default library for target 'es5'
node_modules/fp-ts/lib/Struct.d.ts
Imported via "fp-ts/lib/Struct" from file 'src/anotherFile.ts'
Imported via "fp-ts/lib/struct" from file 'src/anotherFile.ts'
Imported via "fp-ts/lib/Struct" from file 'src/Struct.d.ts'
Imported via "fp-ts/lib/struct" from file 'src/Struct.d.ts'
Imported via "fp-ts/lib/Struct" from file 'src/oneMore.ts'
Imported via "fp-ts/lib/struct" from file 'src/oneMore.ts'
src/Struct.d.ts
Imported via "./Struct" from file 'src/anotherFile.ts'
Imported via "./Struct" from file 'src/Struct.d.ts'
Imported via "./struct" from file 'src/anotherFile.ts'
Imported via "./Struct" from file 'src/oneMore.ts'
Imported via "./struct" from file 'src/oneMore.ts'
Matched by default include pattern '**/*'
src/anotherFile.ts
Matched by default include pattern '**/*'
src/oneMore.ts
Matched by default include pattern '**/*'
[HH:MM:SS AM] Found 6 errors. Watching for file changes.
//// [/home/src/projects/project/src/anotherFile.js] file written with same contents
//// [/home/src/projects/project/src/oneMore.js] file written with same contents
Program root files: [
"/home/src/projects/project/src/anotherFile.ts",
"/home/src/projects/project/src/oneMore.ts",
"/home/src/projects/project/src/struct.d.ts"
]
Program options: {
"watch": true,
"explainFiles": true,
"configFilePath": "/home/src/projects/project/tsconfig.json"
}
Program structureReused: SafeModules
Program files::
/a/lib/lib.d.ts
/home/src/projects/project/node_modules/fp-ts/lib/Struct.d.ts
/home/src/projects/project/src/Struct.d.ts
/home/src/projects/project/src/anotherFile.ts
/home/src/projects/project/src/oneMore.ts
Semantic diagnostics in builder refreshed for::
/home/src/projects/project/src/Struct.d.ts
/home/src/projects/project/src/anotherFile.ts
/home/src/projects/project/src/oneMore.ts
Shape signatures in builder refreshed for::
/home/src/projects/project/src/struct.d.ts (used version)
/home/src/projects/project/src/onemore.ts (computed .d.ts)
/home/src/projects/project/src/anotherfile.ts (computed .d.ts)
exitCode:: ExitStatus.undefined

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -79,7 +79,6 @@ Info seq [hh:mm:ss:mss] Files (4)
../../../../a/lib/lib.d.ts
Default library for target 'es5'
node_modules/bar/foo.d.ts
Imported via "./foo" from file 'node_modules/bar/index.d.ts'
Imported via "./foo" from file 'node_modules/bar/index.d.ts'
Root file specified for compilation
node_modules/bar/index.d.ts

Просмотреть файл

@ -106,7 +106,6 @@ Info seq [hh:mm:ss:mss] Files (4)
../../../../a/lib/lib.d.ts
Default library for target 'es5'
node_modules/bar/foo.d.ts
Imported via "./foo" from file 'node_modules/bar/index.d.ts'
Imported via "./foo" from file 'node_modules/bar/index.d.ts'
Root file specified for compilation
node_modules/bar/index.d.ts

Просмотреть файл

@ -77,7 +77,6 @@ Info seq [hh:mm:ss:mss] Files (4)
../../../../a/lib/lib.d.ts
Default library for target 'es5'
node_modules/bar/foo.d.ts
Imported via "./foo" from file 'node_modules/bar/index.d.ts'
Imported via "./foo" from file 'node_modules/bar/index.d.ts'
Root file specified for compilation
node_modules/bar/index.d.ts