diff --git a/internal/checker/checker.go b/internal/checker/checker.go
index 31d4728a6b..a20cd5ddd8 100644
--- a/internal/checker/checker.go
+++ b/internal/checker/checker.go
@@ -14482,14 +14482,24 @@ func (c *Checker) resolveExternalModule(location *ast.Node, moduleReference stri
mode = c.program.GetDefaultResolutionModeForFile(importingSourceFile)
}
- var sourceFile *ast.SourceFile
resolvedModule := c.program.GetResolvedModule(importingSourceFile, moduleReference, mode)
- if resolvedModule.IsResolved() {
+
+ var resolutionDiagnostic *diagnostics.Message
+ if errorNode != nil && resolvedModule.IsResolved() {
+ resolutionDiagnostic = module.GetResolutionDiagnostic(c.compilerOptions, resolvedModule, importingSourceFile)
+ }
+
+ var sourceFile *ast.SourceFile
+ if resolvedModule.IsResolved() && (resolutionDiagnostic == nil || resolutionDiagnostic == diagnostics.Module_0_was_resolved_to_1_but_jsx_is_not_set) {
sourceFile = c.program.GetSourceFileForResolvedModule(resolvedModule.ResolvedFileName)
}
if sourceFile != nil {
- // !!!
+ // If there's a resolutionDiagnostic we need to report it even if a sourceFile is found.
+ if resolutionDiagnostic != nil {
+ c.error(errorNode, resolutionDiagnostic, moduleReference, resolvedModule.ResolvedFileName)
+ }
+
if errorNode != nil {
if resolvedModule.ResolvedUsingTsExtension && tspath.IsDeclarationFileName(moduleReference) {
if ast.FindAncestor(location, ast.IsEmittableImport) != nil {
@@ -14577,7 +14587,7 @@ func (c *Checker) resolveExternalModule(location *ast.Node, moduleReference stri
if sourceFile.Symbol != nil {
if errorNode != nil {
- if resolvedModule.IsExternalLibraryImport && !(tspath.ExtensionIsTs(resolvedModule.Extension) || resolvedModule.Extension == tspath.ExtensionJson) {
+ if resolvedModule.IsExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.Extension) {
c.errorOnImplicitAnyModule(false /*isError*/, errorNode, mode, resolvedModule, moduleReference)
}
if c.moduleKind == core.ModuleKindNode16 || c.moduleKind == core.ModuleKindNode18 {
@@ -14633,7 +14643,7 @@ func (c *Checker) resolveExternalModule(location *ast.Node, moduleReference stri
return nil
}
- if resolvedModule.IsResolved() && !(tspath.ExtensionIsTs(resolvedModule.Extension) || resolvedModule.Extension == tspath.ExtensionJson) {
+ if resolvedModule.IsResolved() && !resolutionExtensionIsTSOrJson(resolvedModule.Extension) && resolutionDiagnostic == nil || resolutionDiagnostic == diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type {
if isForAugmentation {
c.error(
errorNode,
@@ -14648,7 +14658,6 @@ func (c *Checker) resolveExternalModule(location *ast.Node, moduleReference stri
}
if moduleNotFoundError != nil {
-
// See if this was possibly a projectReference redirect
if resolvedModule.IsResolved() {
redirect := c.program.GetOutputAndProjectReference(tspath.ToPath(resolvedModule.ResolvedFileName, c.program.GetCurrentDirectory(), c.program.UseCaseSensitiveFileNames()))
@@ -14663,29 +14672,36 @@ func (c *Checker) resolveExternalModule(location *ast.Node, moduleReference stri
}
}
- // !!!
- isExtensionlessRelativePathImport := tspath.PathIsRelative(moduleReference) && !tspath.HasExtension(moduleReference)
- resolutionIsNode16OrNext := c.moduleResolutionKind == core.ModuleResolutionKindNode16 || c.moduleResolutionKind == core.ModuleResolutionKindNodeNext
- if !c.compilerOptions.GetResolveJsonModule() && tspath.FileExtensionIs(moduleReference, tspath.ExtensionJson) {
- c.error(errorNode, diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference)
- } else if mode == core.ResolutionModeESM && resolutionIsNode16OrNext && isExtensionlessRelativePathImport {
- absoluteRef := tspath.GetNormalizedAbsolutePath(moduleReference, tspath.GetDirectoryPath(importingSourceFile.FileName()))
- if suggestedExt := c.getSuggestedImportExtension(absoluteRef); suggestedExt != "" {
- c.error(errorNode, diagnostics.Relative_import_paths_need_explicit_file_extensions_in_ECMAScript_imports_when_moduleResolution_is_node16_or_nodenext_Did_you_mean_0, moduleReference+suggestedExt)
+ if resolutionDiagnostic != nil {
+ c.error(errorNode, resolutionDiagnostic, moduleReference, resolvedModule.ResolvedFileName)
+ } else {
+ isExtensionlessRelativePathImport := tspath.PathIsRelative(moduleReference) && !tspath.HasExtension(moduleReference)
+ resolutionIsNode16OrNext := c.moduleResolutionKind == core.ModuleResolutionKindNode16 || c.moduleResolutionKind == core.ModuleResolutionKindNodeNext
+ if !c.compilerOptions.GetResolveJsonModule() && tspath.FileExtensionIs(moduleReference, tspath.ExtensionJson) {
+ c.error(errorNode, diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference)
+ } else if mode == core.ResolutionModeESM && resolutionIsNode16OrNext && isExtensionlessRelativePathImport {
+ absoluteRef := tspath.GetNormalizedAbsolutePath(moduleReference, tspath.GetDirectoryPath(importingSourceFile.FileName()))
+ if suggestedExt := c.getSuggestedImportExtension(absoluteRef); suggestedExt != "" {
+ c.error(errorNode, diagnostics.Relative_import_paths_need_explicit_file_extensions_in_ECMAScript_imports_when_moduleResolution_is_node16_or_nodenext_Did_you_mean_0, moduleReference+suggestedExt)
+ } else {
+ c.error(errorNode, diagnostics.Relative_import_paths_need_explicit_file_extensions_in_ECMAScript_imports_when_moduleResolution_is_node16_or_nodenext_Consider_adding_an_extension_to_the_import_path)
+ }
+ } else if resolvedModule != nil && resolvedModule.AlternateResult != "" {
+ errorInfo := c.createModuleNotFoundChain(resolvedModule, errorNode, moduleReference, mode, moduleReference)
+ c.diagnostics.Add(NewDiagnosticChainForNode(errorInfo, errorNode, moduleNotFoundError, moduleReference))
} else {
- c.error(errorNode, diagnostics.Relative_import_paths_need_explicit_file_extensions_in_ECMAScript_imports_when_moduleResolution_is_node16_or_nodenext_Consider_adding_an_extension_to_the_import_path)
+ c.error(errorNode, moduleNotFoundError, moduleReference)
}
- } else if resolvedModule != nil && resolvedModule.AlternateResult != "" {
- errorInfo := c.createModuleNotFoundChain(resolvedModule, errorNode, moduleReference, mode, moduleReference)
- c.diagnostics.Add(NewDiagnosticChainForNode(errorInfo, errorNode, moduleNotFoundError, moduleReference))
- } else {
- c.error(errorNode, moduleNotFoundError, moduleReference)
}
}
return nil
}
+func resolutionExtensionIsTSOrJson(ext string) bool {
+ return tspath.ExtensionIsTs(ext) || ext == tspath.ExtensionJson
+}
+
func (c *Checker) getSuggestedImportSource(moduleReference string, tsExtension string, mode core.ResolutionMode) string {
importSourceWithoutExtension := tspath.RemoveExtension(moduleReference, tsExtension)
diff --git a/internal/compiler/fileloader.go b/internal/compiler/fileloader.go
index 40f45b408d..9396bc89d5 100644
--- a/internal/compiler/fileloader.go
+++ b/internal/compiler/fileloader.go
@@ -10,7 +10,6 @@ import (
"github.com/microsoft/typescript-go/internal/ast"
"github.com/microsoft/typescript-go/internal/collections"
"github.com/microsoft/typescript-go/internal/core"
- "github.com/microsoft/typescript-go/internal/diagnostics"
"github.com/microsoft/typescript-go/internal/module"
"github.com/microsoft/typescript-go/internal/tsoptions"
"github.com/microsoft/typescript-go/internal/tspath"
@@ -432,7 +431,7 @@ func (p *fileLoader) resolveImportsAndModuleAugmentations(t *parseTask) {
importIndex := index - importsStart
shouldAddFile := moduleName != "" &&
- getResolutionDiagnostic(optionsForFile, resolvedModule, file) == nil &&
+ module.GetResolutionDiagnostic(optionsForFile, resolvedModule, file) == nil &&
!optionsForFile.NoResolve.IsTrue() &&
!(isJsFile && !optionsForFile.GetAllowJS()) &&
(importIndex < 0 || (importIndex < len(file.Imports()) && (ast.IsInJSFile(file.Imports()[importIndex]) || file.Imports()[importIndex].Flags&ast.NodeFlagsJSDoc == 0)))
@@ -451,57 +450,6 @@ func (p *fileLoader) resolveImportsAndModuleAugmentations(t *parseTask) {
}
}
-// Returns a DiagnosticMessage if we won't include a resolved module due to its extension.
-// The DiagnosticMessage's parameters are the imported module name, and the filename it resolved to.
-// This returns a diagnostic even if the module will be an untyped module.
-func getResolutionDiagnostic(options *core.CompilerOptions, resolvedModule *module.ResolvedModule, file *ast.SourceFile) *diagnostics.Message {
- needJsx := func() *diagnostics.Message {
- if options.Jsx != core.JsxEmitNone {
- return nil
- }
- return diagnostics.Module_0_was_resolved_to_1_but_jsx_is_not_set
- }
-
- needAllowJs := func() *diagnostics.Message {
- if options.GetAllowJS() || !options.NoImplicitAny.DefaultIfUnknown(options.Strict).IsTrue() {
- return nil
- }
- return diagnostics.Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used
- }
-
- needResolveJsonModule := func() *diagnostics.Message {
- if options.GetResolveJsonModule() {
- return nil
- }
- return diagnostics.Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used
- }
-
- needAllowArbitraryExtensions := func() *diagnostics.Message {
- if file.IsDeclarationFile || options.AllowArbitraryExtensions.IsTrue() {
- return nil
- }
- return diagnostics.Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set
- }
-
- switch resolvedModule.Extension {
- case tspath.ExtensionTs, tspath.ExtensionDts,
- tspath.ExtensionMts, tspath.ExtensionDmts,
- tspath.ExtensionCts, tspath.ExtensionDcts:
- // These are always allowed.
- return nil
- case tspath.ExtensionTsx:
- return needJsx()
- case tspath.ExtensionJsx:
- return core.Coalesce(needJsx(), needAllowJs())
- case tspath.ExtensionJs, tspath.ExtensionMjs, tspath.ExtensionCjs:
- return needAllowJs()
- case tspath.ExtensionJson:
- return needResolveJsonModule()
- default:
- return needAllowArbitraryExtensions()
- }
-}
-
func (p *fileLoader) createSyntheticImport(text string, file *ast.SourceFile) *ast.Node {
p.factoryMu.Lock()
defer p.factoryMu.Unlock()
diff --git a/internal/module/util.go b/internal/module/util.go
index 179042a5d6..7f6d093d05 100644
--- a/internal/module/util.go
+++ b/internal/module/util.go
@@ -3,7 +3,9 @@ package module
import (
"strings"
+ "github.com/microsoft/typescript-go/internal/ast"
"github.com/microsoft/typescript-go/internal/core"
+ "github.com/microsoft/typescript-go/internal/diagnostics"
"github.com/microsoft/typescript-go/internal/semver"
"github.com/microsoft/typescript-go/internal/tspath"
)
@@ -97,3 +99,57 @@ func ComparePatternKeys(a, b string) int {
}
return 0
}
+
+// Returns a DiagnosticMessage if we won't include a resolved module due to its extension.
+// The DiagnosticMessage's parameters are the imported module name, and the filename it resolved to.
+// This returns a diagnostic even if the module will be an untyped module.
+func GetResolutionDiagnostic(options *core.CompilerOptions, resolvedModule *ResolvedModule, file *ast.SourceFile) *diagnostics.Message {
+ needJsx := func() *diagnostics.Message {
+ if options.Jsx != core.JsxEmitNone {
+ return nil
+ }
+ return diagnostics.Module_0_was_resolved_to_1_but_jsx_is_not_set
+ }
+
+ needAllowJs := func() *diagnostics.Message {
+ if options.GetAllowJS() || !options.NoImplicitAny.DefaultIfUnknown(options.Strict).IsTrue() {
+ return nil
+ }
+ return diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type
+ }
+
+ needResolveJsonModule := func() *diagnostics.Message {
+ if options.GetResolveJsonModule() {
+ return nil
+ }
+ return diagnostics.Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used
+ }
+
+ needAllowArbitraryExtensions := func() *diagnostics.Message {
+ if file.IsDeclarationFile || options.AllowArbitraryExtensions.IsTrue() {
+ return nil
+ }
+ return diagnostics.Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set
+ }
+
+ switch resolvedModule.Extension {
+ case tspath.ExtensionTs, tspath.ExtensionDts,
+ tspath.ExtensionMts, tspath.ExtensionDmts,
+ tspath.ExtensionCts, tspath.ExtensionDcts:
+ // These are always allowed.
+ return nil
+ case tspath.ExtensionTsx:
+ return needJsx()
+ case tspath.ExtensionJsx:
+ if message := needJsx(); message != nil {
+ return message
+ }
+ return needAllowJs()
+ case tspath.ExtensionJs, tspath.ExtensionMjs, tspath.ExtensionCjs:
+ return needAllowJs()
+ case tspath.ExtensionJson:
+ return needResolveJsonModule()
+ default:
+ return needAllowArbitraryExtensions()
+ }
+}
diff --git a/testdata/baselines/reference/submodule/compiler/checkJsxNotSetError.errors.txt b/testdata/baselines/reference/submodule/compiler/checkJsxNotSetError.errors.txt
index 2d04383c93..55dbe1b239 100644
--- a/testdata/baselines/reference/submodule/compiler/checkJsxNotSetError.errors.txt
+++ b/testdata/baselines/reference/submodule/compiler/checkJsxNotSetError.errors.txt
@@ -1,3 +1,4 @@
+/bar.jsx(1,17): error TS6142: Module '/foo' was resolved to '/foo.jsx', but '--jsx' is not set.
/bar.jsx(2,11): error TS17004: Cannot use JSX unless the '--jsx' flag is provided.
/foo.jsx(2,5): error TS17004: Cannot use JSX unless the '--jsx' flag is provided.
@@ -10,8 +11,10 @@
);
export default Foo;
-==== /bar.jsx (1 errors) ====
+==== /bar.jsx (2 errors) ====
import Foo from '/foo';
+ ~~~~~~
+!!! error TS6142: Module '/foo' was resolved to '/foo.jsx', but '--jsx' is not set.
const a =
~~~~~~~
!!! error TS17004: Cannot use JSX unless the '--jsx' flag is provided.
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported.errors.txt b/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported.errors.txt
index b756d61a76..991b83bc30 100644
--- a/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported.errors.txt
+++ b/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported.errors.txt
@@ -1,11 +1,14 @@
-/a.ts(1,17): error TS2307: Cannot find module './tsx' or its corresponding type declarations.
+/a.ts(1,17): error TS6142: Module './tsx' was resolved to '/tsx.tsx', but '--jsx' is not set.
+/a.ts(2,17): error TS6142: Module './jsx' was resolved to '/jsx.jsx', but '--jsx' is not set.
-==== /a.ts (1 errors) ====
+==== /a.ts (2 errors) ====
import tsx from "./tsx"; // Not allowed.
~~~~~~~
-!!! error TS2307: Cannot find module './tsx' or its corresponding type declarations.
+!!! error TS6142: Module './tsx' was resolved to '/tsx.tsx', but '--jsx' is not set.
import jsx from "./jsx"; // Not allowed.
+ ~~~~~~~
+!!! error TS6142: Module './jsx' was resolved to '/jsx.jsx', but '--jsx' is not set.
import js from "./js"; // OK because it's an untyped module.
==== /tsx.tsx (0 errors) ====
diff --git a/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported.errors.txt.diff
deleted file mode 100644
index ac4179cf7c..0000000000
--- a/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported.errors.txt.diff
+++ /dev/null
@@ -1,22 +0,0 @@
---- old.moduleResolutionWithExtensions_notSupported.errors.txt
-+++ new.moduleResolutionWithExtensions_notSupported.errors.txt
-@@= skipped -0, +0 lines =@@
--/a.ts(1,17): error TS6142: Module './tsx' was resolved to '/tsx.tsx', but '--jsx' is not set.
--/a.ts(2,17): error TS6142: Module './jsx' was resolved to '/jsx.jsx', but '--jsx' is not set.
--
--
--==== /a.ts (2 errors) ====
-+/a.ts(1,17): error TS2307: Cannot find module './tsx' or its corresponding type declarations.
-+
-+
-+==== /a.ts (1 errors) ====
- import tsx from "./tsx"; // Not allowed.
- ~~~~~~~
--!!! error TS6142: Module './tsx' was resolved to '/tsx.tsx', but '--jsx' is not set.
-+!!! error TS2307: Cannot find module './tsx' or its corresponding type declarations.
- import jsx from "./jsx"; // Not allowed.
-- ~~~~~~~
--!!! error TS6142: Module './jsx' was resolved to '/jsx.jsx', but '--jsx' is not set.
- import js from "./js"; // OK because it's an untyped module.
-
- ==== /tsx.tsx (0 errors) ====
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported2.errors.txt b/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported2.errors.txt
new file mode 100644
index 0000000000..d37beb38a1
--- /dev/null
+++ b/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported2.errors.txt
@@ -0,0 +1,10 @@
+/a.ts(1,17): error TS6142: Module './jsx' was resolved to '/jsx.jsx', but '--jsx' is not set.
+
+
+==== /a.ts (1 errors) ====
+ import jsx from "./jsx";
+ ~~~~~~~
+!!! error TS6142: Module './jsx' was resolved to '/jsx.jsx', but '--jsx' is not set.
+
+==== /jsx.jsx (0 errors) ====
+
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported2.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported2.errors.txt.diff
deleted file mode 100644
index a933fc4fb2..0000000000
--- a/testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported2.errors.txt.diff
+++ /dev/null
@@ -1,14 +0,0 @@
---- old.moduleResolutionWithExtensions_notSupported2.errors.txt
-+++ new.moduleResolutionWithExtensions_notSupported2.errors.txt
-@@= skipped -0, +0 lines =@@
--/a.ts(1,17): error TS6142: Module './jsx' was resolved to '/jsx.jsx', but '--jsx' is not set.
--
--
--==== /a.ts (1 errors) ====
-- import jsx from "./jsx";
-- ~~~~~~~
--!!! error TS6142: Module './jsx' was resolved to '/jsx.jsx', but '--jsx' is not set.
--
--==== /jsx.jsx (0 errors) ====
--
-+
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=false).errors.txt b/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=false).errors.txt
index 0641005dbf..ddd2bdfc26 100644
--- a/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=false).errors.txt
+++ b/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=false).errors.txt
@@ -3,6 +3,7 @@
/project/main.ts(8,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './b.js' instead?
/project/main.ts(11,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
/project/main.ts(12,16): error TS5097: An import path can only end with a '.tsx' extension when 'allowImportingTsExtensions' is enabled.
+/project/main.ts(12,16): error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
/project/main.ts(16,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
/project/types.d.ts(2,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './a.js' instead?
@@ -43,7 +44,7 @@
==== /project/e.txt.ts (0 errors) ====
export {};
-==== /project/main.ts (6 errors) ====
+==== /project/main.ts (7 errors) ====
import {} from "./a";
import {} from "./a.js";
import {} from "./a.ts";
@@ -66,6 +67,8 @@
import {} from "./c.tsx";
~~~~~~~~~
!!! error TS5097: An import path can only end with a '.tsx' extension when 'allowImportingTsExtensions' is enabled.
+ ~~~~~~~~~
+!!! error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
import {} from "./d";
import {} from "./d/index";
diff --git a/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=true).errors.txt b/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=true).errors.txt
index 0641005dbf..ddd2bdfc26 100644
--- a/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=true).errors.txt
+++ b/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=true).errors.txt
@@ -3,6 +3,7 @@
/project/main.ts(8,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './b.js' instead?
/project/main.ts(11,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
/project/main.ts(12,16): error TS5097: An import path can only end with a '.tsx' extension when 'allowImportingTsExtensions' is enabled.
+/project/main.ts(12,16): error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
/project/main.ts(16,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
/project/types.d.ts(2,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './a.js' instead?
@@ -43,7 +44,7 @@
==== /project/e.txt.ts (0 errors) ====
export {};
-==== /project/main.ts (6 errors) ====
+==== /project/main.ts (7 errors) ====
import {} from "./a";
import {} from "./a.js";
import {} from "./a.ts";
@@ -66,6 +67,8 @@
import {} from "./c.tsx";
~~~~~~~~~
!!! error TS5097: An import path can only end with a '.tsx' extension when 'allowImportingTsExtensions' is enabled.
+ ~~~~~~~~~
+!!! error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
import {} from "./d";
import {} from "./d/index";
diff --git a/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=false).errors.txt b/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=false).errors.txt
index 18463589db..ce138220b1 100644
--- a/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=false).errors.txt
+++ b/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=false).errors.txt
@@ -1,4 +1,5 @@
/project/main.ts(8,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './b.ts' instead?
+/project/main.ts(12,16): error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
/project/types.d.ts(2,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './a.ts' instead?
@@ -38,7 +39,7 @@
==== /project/e.txt.ts (0 errors) ====
export {};
-==== /project/main.ts (1 errors) ====
+==== /project/main.ts (2 errors) ====
import {} from "./a";
import {} from "./a.js";
import {} from "./a.ts";
@@ -53,6 +54,8 @@
import {} from "./c.ts";
import {} from "./c.tsx";
+ ~~~~~~~~~
+!!! error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
import {} from "./d";
import {} from "./d/index";
diff --git a/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=true).errors.txt b/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=true).errors.txt
index 18463589db..ce138220b1 100644
--- a/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=true).errors.txt
+++ b/testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=true).errors.txt
@@ -1,4 +1,5 @@
/project/main.ts(8,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './b.ts' instead?
+/project/main.ts(12,16): error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
/project/types.d.ts(2,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './a.ts' instead?
@@ -38,7 +39,7 @@
==== /project/e.txt.ts (0 errors) ====
export {};
-==== /project/main.ts (1 errors) ====
+==== /project/main.ts (2 errors) ====
import {} from "./a";
import {} from "./a.js";
import {} from "./a.ts";
@@ -53,6 +54,8 @@
import {} from "./c.ts";
import {} from "./c.tsx";
+ ~~~~~~~~~
+!!! error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
import {} from "./d";
import {} from "./d/index";
diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).errors.txt b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).errors.txt
new file mode 100644
index 0000000000..d79c53bb4d
--- /dev/null
+++ b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).errors.txt
@@ -0,0 +1,27 @@
+file.ts(1,22): error TS6263: Module './component.html' was resolved to 'component.d.html.ts', but '--allowArbitraryExtensions' is not set.
+
+
+==== component.d.html.ts (0 errors) ====
+ // html modules were proposed at https://github.com/WICG/webcomponents/blob/gh-pages/proposals/html-modules-explainer.md
+
+ // per proposal, `default` is user-defined, but if not present, will be the document of the imported module
+ declare var doc: Document;
+ export default doc;
+
+ // all other exports are just whatever was exported in module script blocks in the html file
+ export const blogPost: Element;
+
+ export class HTML5Element extends HTMLElement {
+ connectedCallback(): void;
+ }
+
+==== file.ts (1 errors) ====
+ import * as mod from "./component.html";
+ ~~~~~~~~~~~~~~~~~~
+!!! error TS6263: Module './component.html' was resolved to 'component.d.html.ts', but '--allowArbitraryExtensions' is not set.
+
+ window.customElements.define("my-html5-element", mod.HTML5Element);
+
+ if (document !== mod.default) {
+ document.body.appendChild(mod.blogPost);
+ }
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).errors.txt.diff b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).errors.txt.diff
deleted file mode 100644
index 3b859c2cb0..0000000000
--- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).errors.txt.diff
+++ /dev/null
@@ -1,31 +0,0 @@
---- old.declarationFileForHtmlImport(allowarbitraryextensions=false).errors.txt
-+++ new.declarationFileForHtmlImport(allowarbitraryextensions=false).errors.txt
-@@= skipped -0, +0 lines =@@
--file.ts(1,22): error TS6263: Module './component.html' was resolved to 'component.d.html.ts', but '--allowArbitraryExtensions' is not set.
--
--
--==== component.d.html.ts (0 errors) ====
-- // html modules were proposed at https://github.com/WICG/webcomponents/blob/gh-pages/proposals/html-modules-explainer.md
--
-- // per proposal, `default` is user-defined, but if not present, will be the document of the imported module
-- declare var doc: Document;
-- export default doc;
--
-- // all other exports are just whatever was exported in module script blocks in the html file
-- export const blogPost: Element;
--
-- export class HTML5Element extends HTMLElement {
-- connectedCallback(): void;
-- }
--
--==== file.ts (1 errors) ====
-- import * as mod from "./component.html";
-- ~~~~~~~~~~~~~~~~~~
--!!! error TS6263: Module './component.html' was resolved to 'component.d.html.ts', but '--allowArbitraryExtensions' is not set.
--
-- window.customElements.define("my-html5-element", mod.HTML5Element);
--
-- if (document !== mod.default) {
-- document.body.appendChild(mod.blogPost);
-- }
-+
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).symbols b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).symbols
index 7eb3c4febb..a872d5ee49 100644
--- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).symbols
+++ b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).symbols
@@ -34,15 +34,11 @@ window.customElements.define("my-html5-element", mod.HTML5Element);
>window : Symbol(window, Decl(lib.dom.d.ts, --, --))
>customElements : Symbol(customElements, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
>define : Symbol(define, Decl(lib.dom.d.ts, --, --))
->mod.HTML5Element : Symbol(HTML5Element, Decl(component.d.html.ts, 7, 31))
>mod : Symbol(mod, Decl(file.ts, 0, 6))
->HTML5Element : Symbol(HTML5Element, Decl(component.d.html.ts, 7, 31))
if (document !== mod.default) {
>document : Symbol(document, Decl(lib.dom.d.ts, --, --))
->mod.default : Symbol(doc, Decl(component.d.html.ts, 3, 26))
>mod : Symbol(mod, Decl(file.ts, 0, 6))
->default : Symbol(doc, Decl(component.d.html.ts, 3, 26))
document.body.appendChild(mod.blogPost);
>document.body.appendChild : Symbol(appendChild, Decl(lib.dom.d.ts, --, --))
@@ -50,7 +46,5 @@ if (document !== mod.default) {
>document : Symbol(document, Decl(lib.dom.d.ts, --, --))
>body : Symbol(body, Decl(lib.dom.d.ts, --, --))
>appendChild : Symbol(appendChild, Decl(lib.dom.d.ts, --, --))
->mod.blogPost : Symbol(blogPost, Decl(component.d.html.ts, 7, 12))
>mod : Symbol(mod, Decl(file.ts, 0, 6))
->blogPost : Symbol(blogPost, Decl(component.d.html.ts, 7, 12))
}
diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).symbols.diff b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).symbols.diff
index 07e5f5bed6..8618d5c9eb 100644
--- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).symbols.diff
+++ b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).symbols.diff
@@ -20,15 +20,11 @@
>customElements : Symbol(customElements, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
->define : Symbol(CustomElementRegistry.define, Decl(lib.dom.d.ts, --, --))
+>define : Symbol(define, Decl(lib.dom.d.ts, --, --))
-+>mod.HTML5Element : Symbol(HTML5Element, Decl(component.d.html.ts, 7, 31))
>mod : Symbol(mod, Decl(file.ts, 0, 6))
-+>HTML5Element : Symbol(HTML5Element, Decl(component.d.html.ts, 7, 31))
if (document !== mod.default) {
- >document : Symbol(document, Decl(lib.dom.d.ts, --, --))
-+>mod.default : Symbol(doc, Decl(component.d.html.ts, 3, 26))
+@@= skipped -12, +12 lines =@@
>mod : Symbol(mod, Decl(file.ts, 0, 6))
-+>default : Symbol(doc, Decl(component.d.html.ts, 3, 26))
document.body.appendChild(mod.blogPost);
->document.body.appendChild : Symbol(Node.appendChild, Decl(lib.dom.d.ts, --, --))
@@ -40,7 +36,5 @@
->appendChild : Symbol(Node.appendChild, Decl(lib.dom.d.ts, --, --))
+>body : Symbol(body, Decl(lib.dom.d.ts, --, --))
+>appendChild : Symbol(appendChild, Decl(lib.dom.d.ts, --, --))
-+>mod.blogPost : Symbol(blogPost, Decl(component.d.html.ts, 7, 12))
>mod : Symbol(mod, Decl(file.ts, 0, 6))
-+>blogPost : Symbol(blogPost, Decl(component.d.html.ts, 7, 12))
}
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types
index 76a136254a..0fce08e790 100644
--- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types
+++ b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types
@@ -24,7 +24,7 @@ export class HTML5Element extends HTMLElement {
=== file.ts ===
import * as mod from "./component.html";
->mod : typeof mod
+>mod : any
window.customElements.define("my-html5-element", mod.HTML5Element);
>window.customElements.define("my-html5-element", mod.HTML5Element) : void
@@ -34,25 +34,25 @@ window.customElements.define("my-html5-element", mod.HTML5Element);
>customElements : CustomElementRegistry
>define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void
>"my-html5-element" : "my-html5-element"
->mod.HTML5Element : typeof mod.HTML5Element
->mod : typeof mod
->HTML5Element : typeof mod.HTML5Element
+>mod.HTML5Element : any
+>mod : any
+>HTML5Element : any
if (document !== mod.default) {
>document !== mod.default : boolean
>document : Document
->mod.default : Document
->mod : typeof mod
->default : Document
+>mod.default : any
+>mod : any
+>default : any
document.body.appendChild(mod.blogPost);
->document.body.appendChild(mod.blogPost) : Element
+>document.body.appendChild(mod.blogPost) : any
>document.body.appendChild : (node: T) => T
>document.body : HTMLElement
>document : Document
>body : HTMLElement
>appendChild : (node: T) => T
->mod.blogPost : Element
->mod : typeof mod
->blogPost : Element
+>mod.blogPost : any
+>mod : any
+>blogPost : any
}
diff --git a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types.diff b/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types.diff
deleted file mode 100644
index be6029de0f..0000000000
--- a/testdata/baselines/reference/submodule/conformance/declarationFileForHtmlImport(allowarbitraryextensions=false).types.diff
+++ /dev/null
@@ -1,47 +0,0 @@
---- old.declarationFileForHtmlImport(allowarbitraryextensions=false).types
-+++ new.declarationFileForHtmlImport(allowarbitraryextensions=false).types
-@@= skipped -23, +23 lines =@@
-
- === file.ts ===
- import * as mod from "./component.html";
-->mod : any
-+>mod : typeof mod
-
- window.customElements.define("my-html5-element", mod.HTML5Element);
- >window.customElements.define("my-html5-element", mod.HTML5Element) : void
-@@= skipped -10, +10 lines =@@
- >customElements : CustomElementRegistry
- >define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void
- >"my-html5-element" : "my-html5-element"
-->mod.HTML5Element : any
-->mod : any
-->HTML5Element : any
-+>mod.HTML5Element : typeof mod.HTML5Element
-+>mod : typeof mod
-+>HTML5Element : typeof mod.HTML5Element
-
- if (document !== mod.default) {
- >document !== mod.default : boolean
- >document : Document
-->mod.default : any
-->mod : any
-->default : any
-+>mod.default : Document
-+>mod : typeof mod
-+>default : Document
-
- document.body.appendChild(mod.blogPost);
-->document.body.appendChild(mod.blogPost) : any
-+>document.body.appendChild(mod.blogPost) : Element
- >document.body.appendChild : (node: T) => T
- >document.body : HTMLElement
- >document : Document
- >body : HTMLElement
- >appendChild : (node: T) => T
-->mod.blogPost : any
-->mod : any
-->blogPost : any
-+>mod.blogPost : Element
-+>mod : typeof mod
-+>blogPost : Element
- }
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=node18).errors.txt b/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=node18).errors.txt
index b02d019f6c..04c3dfd21d 100644
--- a/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=node18).errors.txt
+++ b/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=node18).errors.txt
@@ -1,10 +1,10 @@
-main.ts(1,22): error TS2307: Cannot find module './dir/native.node' or its corresponding type declarations.
+main.ts(1,22): error TS6263: Module './dir/native.node' was resolved to 'dir/native.d.node.ts', but '--allowArbitraryExtensions' is not set.
==== main.ts (1 errors) ====
import mod = require("./dir/native.node");
~~~~~~~~~~~~~~~~~~~
-!!! error TS2307: Cannot find module './dir/native.node' or its corresponding type declarations.
+!!! error TS6263: Module './dir/native.node' was resolved to 'dir/native.d.node.ts', but '--allowArbitraryExtensions' is not set.
mod.doNativeThing("good");
==== package.json (0 errors) ====
diff --git a/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=node18).errors.txt.diff b/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=node18).errors.txt.diff
deleted file mode 100644
index 3a70da5bf4..0000000000
--- a/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=node18).errors.txt.diff
+++ /dev/null
@@ -1,15 +0,0 @@
---- old.declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=node18).errors.txt
-+++ new.declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=node18).errors.txt
-@@= skipped -0, +0 lines =@@
--main.ts(1,22): error TS6263: Module './dir/native.node' was resolved to 'dir/native.d.node.ts', but '--allowArbitraryExtensions' is not set.
-+main.ts(1,22): error TS2307: Cannot find module './dir/native.node' or its corresponding type declarations.
-
-
- ==== main.ts (1 errors) ====
- import mod = require("./dir/native.node");
- ~~~~~~~~~~~~~~~~~~~
--!!! error TS6263: Module './dir/native.node' was resolved to 'dir/native.d.node.ts', but '--allowArbitraryExtensions' is not set.
-+!!! error TS2307: Cannot find module './dir/native.node' or its corresponding type declarations.
- mod.doNativeThing("good");
-
- ==== package.json (0 errors) ====
\ No newline at end of file
diff --git a/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=nodenext).errors.txt b/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=nodenext).errors.txt
index b02d019f6c..04c3dfd21d 100644
--- a/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=nodenext).errors.txt
+++ b/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=nodenext).errors.txt
@@ -1,10 +1,10 @@
-main.ts(1,22): error TS2307: Cannot find module './dir/native.node' or its corresponding type declarations.
+main.ts(1,22): error TS6263: Module './dir/native.node' was resolved to 'dir/native.d.node.ts', but '--allowArbitraryExtensions' is not set.
==== main.ts (1 errors) ====
import mod = require("./dir/native.node");
~~~~~~~~~~~~~~~~~~~
-!!! error TS2307: Cannot find module './dir/native.node' or its corresponding type declarations.
+!!! error TS6263: Module './dir/native.node' was resolved to 'dir/native.d.node.ts', but '--allowArbitraryExtensions' is not set.
mod.doNativeThing("good");
==== package.json (0 errors) ====
diff --git a/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=nodenext).errors.txt.diff b/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=nodenext).errors.txt.diff
deleted file mode 100644
index 5ab7ae5bd1..0000000000
--- a/testdata/baselines/reference/submodule/conformance/declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=nodenext).errors.txt.diff
+++ /dev/null
@@ -1,15 +0,0 @@
---- old.declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=nodenext).errors.txt
-+++ new.declarationFilesForNodeNativeModules(allowarbitraryextensions=false,module=nodenext).errors.txt
-@@= skipped -0, +0 lines =@@
--main.ts(1,22): error TS6263: Module './dir/native.node' was resolved to 'dir/native.d.node.ts', but '--allowArbitraryExtensions' is not set.
-+main.ts(1,22): error TS2307: Cannot find module './dir/native.node' or its corresponding type declarations.
-
-
- ==== main.ts (1 errors) ====
- import mod = require("./dir/native.node");
- ~~~~~~~~~~~~~~~~~~~
--!!! error TS6263: Module './dir/native.node' was resolved to 'dir/native.d.node.ts', but '--allowArbitraryExtensions' is not set.
-+!!! error TS2307: Cannot find module './dir/native.node' or its corresponding type declarations.
- mod.doNativeThing("good");
-
- ==== package.json (0 errors) ====
\ No newline at end of file
diff --git a/testdata/baselines/reference/submoduleAccepted/compiler/checkJsxNotSetError.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/compiler/checkJsxNotSetError.errors.txt.diff
deleted file mode 100644
index 55feb5fdcd..0000000000
--- a/testdata/baselines/reference/submoduleAccepted/compiler/checkJsxNotSetError.errors.txt.diff
+++ /dev/null
@@ -1,19 +0,0 @@
---- old.checkJsxNotSetError.errors.txt
-+++ new.checkJsxNotSetError.errors.txt
-@@= skipped -0, +0 lines =@@
--/bar.jsx(1,17): error TS6142: Module '/foo' was resolved to '/foo.jsx', but '--jsx' is not set.
- /bar.jsx(2,11): error TS17004: Cannot use JSX unless the '--jsx' flag is provided.
- /foo.jsx(2,5): error TS17004: Cannot use JSX unless the '--jsx' flag is provided.
-
-@@= skipped -10, +9 lines =@@
- );
- export default Foo;
-
--==== /bar.jsx (2 errors) ====
-+==== /bar.jsx (1 errors) ====
- import Foo from '/foo';
-- ~~~~~~
--!!! error TS6142: Module '/foo' was resolved to '/foo.jsx', but '--jsx' is not set.
- const a =
- ~~~~~~~
- !!! error TS17004: Cannot use JSX unless the '--jsx' flag is provided.
\ No newline at end of file
diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=false).errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=false).errors.txt.diff
index e6caa39db1..41175e8df6 100644
--- a/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=false).errors.txt.diff
+++ b/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=false).errors.txt.diff
@@ -9,10 +9,7 @@
/project/main.ts(3,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
/project/main.ts(7,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
/project/main.ts(8,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './b.js' instead?
- /project/main.ts(11,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
- /project/main.ts(12,16): error TS5097: An import path can only end with a '.tsx' extension when 'allowImportingTsExtensions' is enabled.
--/project/main.ts(12,16): error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
- /project/main.ts(16,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
+@@= skipped -12, +7 lines =@@
/project/types.d.ts(2,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './a.js' instead?
@@ -23,22 +20,4 @@
-!!! error TS6054: Root file specified for compilation
==== /project/a.ts (0 errors) ====
export {};
-
-@@= skipped -53, +42 lines =@@
- ==== /project/e.txt.ts (0 errors) ====
- export {};
-
--==== /project/main.ts (7 errors) ====
-+==== /project/main.ts (6 errors) ====
- import {} from "./a";
- import {} from "./a.js";
- import {} from "./a.ts";
-@@= skipped -23, +23 lines =@@
- import {} from "./c.tsx";
- ~~~~~~~~~
- !!! error TS5097: An import path can only end with a '.tsx' extension when 'allowImportingTsExtensions' is enabled.
-- ~~~~~~~~~
--!!! error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
-
- import {} from "./d";
- import {} from "./d/index";
\ No newline at end of file
+
\ No newline at end of file
diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=true).errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=true).errors.txt.diff
index 7beb92a08d..39bd898b4d 100644
--- a/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=true).errors.txt.diff
+++ b/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=true).errors.txt.diff
@@ -7,10 +7,7 @@
/project/main.ts(3,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
/project/main.ts(7,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
/project/main.ts(8,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './b.js' instead?
- /project/main.ts(11,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
- /project/main.ts(12,16): error TS5097: An import path can only end with a '.tsx' extension when 'allowImportingTsExtensions' is enabled.
--/project/main.ts(12,16): error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
- /project/main.ts(16,16): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled.
+@@= skipped -10, +7 lines =@@
/project/types.d.ts(2,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './a.js' instead?
@@ -19,22 +16,4 @@
-!!! error TS6054: Root file specified for compilation
==== /project/a.ts (0 errors) ====
export {};
-
-@@= skipped -49, +42 lines =@@
- ==== /project/e.txt.ts (0 errors) ====
- export {};
-
--==== /project/main.ts (7 errors) ====
-+==== /project/main.ts (6 errors) ====
- import {} from "./a";
- import {} from "./a.js";
- import {} from "./a.ts";
-@@= skipped -23, +23 lines =@@
- import {} from "./c.tsx";
- ~~~~~~~~~
- !!! error TS5097: An import path can only end with a '.tsx' extension when 'allowImportingTsExtensions' is enabled.
-- ~~~~~~~~~
--!!! error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
-
- import {} from "./d";
- import {} from "./d/index";
\ No newline at end of file
+
\ No newline at end of file
diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=false).errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=false).errors.txt.diff
index 0f570f3b79..f755b9e8b9 100644
--- a/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=false).errors.txt.diff
+++ b/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=false).errors.txt.diff
@@ -8,7 +8,7 @@
- The file is in the program because:
- Root file specified for compilation
/project/main.ts(8,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './b.ts' instead?
--/project/main.ts(12,16): error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
+ /project/main.ts(12,16): error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
/project/types.d.ts(2,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './a.ts' instead?
@@ -20,22 +20,4 @@
-!!! error TS6054: Root file specified for compilation
==== /project/a.ts (0 errors) ====
export {};
-
-@@= skipped -50, +37 lines =@@
- ==== /project/e.txt.ts (0 errors) ====
- export {};
-
--==== /project/main.ts (2 errors) ====
-+==== /project/main.ts (1 errors) ====
- import {} from "./a";
- import {} from "./a.js";
- import {} from "./a.ts";
-@@= skipped -15, +15 lines =@@
-
- import {} from "./c.ts";
- import {} from "./c.tsx";
-- ~~~~~~~~~
--!!! error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
-
- import {} from "./d";
- import {} from "./d/index";
\ No newline at end of file
+
\ No newline at end of file
diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=true).errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=true).errors.txt.diff
index e17ded846d..d1f5232a81 100644
--- a/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=true).errors.txt.diff
+++ b/testdata/baselines/reference/submoduleAccepted/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=true).errors.txt.diff
@@ -5,7 +5,7 @@
- The file is in the program because:
- Root file specified for compilation
/project/main.ts(8,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './b.ts' instead?
--/project/main.ts(12,16): error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
+ /project/main.ts(12,16): error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
/project/types.d.ts(2,16): error TS2846: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file './a.ts' instead?
@@ -14,22 +14,4 @@
-!!! error TS6054: Root file specified for compilation
==== /project/a.ts (0 errors) ====
export {};
-
-@@= skipped -44, +37 lines =@@
- ==== /project/e.txt.ts (0 errors) ====
- export {};
-
--==== /project/main.ts (2 errors) ====
-+==== /project/main.ts (1 errors) ====
- import {} from "./a";
- import {} from "./a.js";
- import {} from "./a.ts";
-@@= skipped -15, +15 lines =@@
-
- import {} from "./c.ts";
- import {} from "./c.tsx";
-- ~~~~~~~~~
--!!! error TS6142: Module './c.tsx' was resolved to '/project/c.tsx', but '--jsx' is not set.
-
- import {} from "./d";
- import {} from "./d/index";
\ No newline at end of file
+
\ No newline at end of file