@@ -720,6 +720,7 @@ import {
720
720
isSetAccessorDeclaration,
721
721
isShorthandAmbientModuleSymbol,
722
722
isShorthandPropertyAssignment,
723
+ isSideEffectImport,
723
724
isSingleOrDoubleQuote,
724
725
isSourceFile,
725
726
isSourceFileJS,
@@ -1505,6 +1506,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1505
1506
var noImplicitThis = getStrictOptionValue(compilerOptions, "noImplicitThis");
1506
1507
var useUnknownInCatchVariables = getStrictOptionValue(compilerOptions, "useUnknownInCatchVariables");
1507
1508
var exactOptionalPropertyTypes = compilerOptions.exactOptionalPropertyTypes;
1509
+ var noUncheckedSideEffectImports = !!compilerOptions.noUncheckedSideEffectImports;
1508
1510
1509
1511
var checkBinaryExpression = createCheckBinaryExpression();
1510
1512
var emitResolver = createResolver();
@@ -4660,7 +4662,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
4660
4662
// merged symbol is module declaration symbol combined with all augmentations
4661
4663
return getMergedSymbol(sourceFile.symbol);
4662
4664
}
4663
- if (errorNode && moduleNotFoundError) {
4665
+ if (errorNode && moduleNotFoundError && !isSideEffectImport(errorNode) ) {
4664
4666
// report errors only if it was requested
4665
4667
error(errorNode, Diagnostics.File_0_is_not_a_module, sourceFile.fileName);
4666
4668
}
@@ -4765,6 +4767,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
4765
4767
}
4766
4768
4767
4769
function errorOnImplicitAnyModule(isError: boolean, errorNode: Node, sourceFile: SourceFile, mode: ResolutionMode, { packageId, resolvedFileName }: ResolvedModuleFull, moduleReference: string): void {
4770
+ if (isSideEffectImport(errorNode)) {
4771
+ return;
4772
+ }
4773
+
4768
4774
let errorInfo: DiagnosticMessageChain | undefined;
4769
4775
if (!isExternalModuleNameRelative(moduleReference) && packageId) {
4770
4776
errorInfo = createModuleNotFoundChain(sourceFile, host, moduleReference, mode, packageId.name);
@@ -47246,6 +47252,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
47246
47252
}
47247
47253
}
47248
47254
}
47255
+ else if (noUncheckedSideEffectImports && !importClause) {
47256
+ void resolveExternalModuleName(node, node.moduleSpecifier);
47257
+ }
47249
47258
}
47250
47259
checkImportAttributes(node);
47251
47260
}
0 commit comments