Skip to content

Commit

Permalink
Merge pull request #582 from microsoft/main
Browse files Browse the repository at this point in the history
Create a new pull request by comparing changes across two branches\
  • Loading branch information
GulajavaMinistudio authored Aug 2, 2024
2 parents 2e89224 + 8daac14 commit b12dfba
Show file tree
Hide file tree
Showing 296 changed files with 7,865 additions and 627 deletions.
3 changes: 3 additions & 0 deletions src/compiler/checker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8428,6 +8428,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
introducesError = true;
return { introducesError, node, sym };
}
else {
sym = symAtLocation;
}
}

if (sym) {
Expand Down
17 changes: 7 additions & 10 deletions src/compiler/program.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1392,16 +1392,13 @@ export function getImpliedNodeFormatForFileWorker(
host: ModuleResolutionHost,
options: CompilerOptions,
) {
switch (getEmitModuleResolutionKind(options)) {
case ModuleResolutionKind.Node16:
case ModuleResolutionKind.NodeNext:
return fileExtensionIsOneOf(fileName, [Extension.Dmts, Extension.Mts, Extension.Mjs]) ? ModuleKind.ESNext :
fileExtensionIsOneOf(fileName, [Extension.Dcts, Extension.Cts, Extension.Cjs]) ? ModuleKind.CommonJS :
fileExtensionIsOneOf(fileName, [Extension.Dts, Extension.Ts, Extension.Tsx, Extension.Js, Extension.Jsx]) ? lookupFromPackageJson() :
undefined; // other extensions, like `json` or `tsbuildinfo`, are set as `undefined` here but they should never be fed through the transformer pipeline
default:
return undefined;
}
const moduleResolution = getEmitModuleResolutionKind(options);
const shouldLookupFromPackageJson = ModuleResolutionKind.Node16 <= moduleResolution && moduleResolution <= ModuleResolutionKind.NodeNext
|| pathContainsNodeModules(fileName);
return fileExtensionIsOneOf(fileName, [Extension.Dmts, Extension.Mts, Extension.Mjs]) ? ModuleKind.ESNext :
fileExtensionIsOneOf(fileName, [Extension.Dcts, Extension.Cts, Extension.Cjs]) ? ModuleKind.CommonJS :
shouldLookupFromPackageJson && fileExtensionIsOneOf(fileName, [Extension.Dts, Extension.Ts, Extension.Tsx, Extension.Js, Extension.Jsx]) ? lookupFromPackageJson() :
undefined; // other extensions, like `json` or `tsbuildinfo`, are set as `undefined` here but they should never be fed through the transformer pipeline

function lookupFromPackageJson(): Partial<CreateSourceFileOptions> {
const state = getTemporaryModuleResolutionState(packageJsonInfoCache, host, options);
Expand Down
8 changes: 7 additions & 1 deletion src/compiler/utilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9164,10 +9164,16 @@ export function getJSXTransformEnabled(options: CompilerOptions): boolean {
export function getJSXImplicitImportBase(compilerOptions: CompilerOptions, file?: SourceFile): string | undefined {
const jsxImportSourcePragmas = file?.pragmas.get("jsximportsource");
const jsxImportSourcePragma = isArray(jsxImportSourcePragmas) ? jsxImportSourcePragmas[jsxImportSourcePragmas.length - 1] : jsxImportSourcePragmas;
const jsxRuntimePragmas = file?.pragmas.get("jsxruntime");
const jsxRuntimePragma = isArray(jsxRuntimePragmas) ? jsxRuntimePragmas[jsxRuntimePragmas.length - 1] : jsxRuntimePragmas;
if (jsxRuntimePragma?.arguments.factory === "classic") {
return undefined;
}
return compilerOptions.jsx === JsxEmit.ReactJSX ||
compilerOptions.jsx === JsxEmit.ReactJSXDev ||
compilerOptions.jsxImportSource ||
jsxImportSourcePragma ?
jsxImportSourcePragma ||
jsxRuntimePragma?.arguments.factory === "automatic" ?
jsxImportSourcePragma?.arguments.factory || compilerOptions.jsxImportSource || "react" :
undefined;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@
"File '/node_modules/pkg/index.d.ts' exists - use it as a name resolution result.",
"Resolving real path for '/node_modules/pkg/index.d.ts', result '/node_modules/pkg/index.d.ts'.",
"======== Module name 'pkg' was successfully resolved to '/node_modules/pkg/index.d.ts'. ========",
"File '/node_modules/pkg/package.json' does not exist according to earlier cached lookups.",
"File '/node_modules/package.json' does not exist.",
"File '/package.json' does not exist.",
"======== Resolving module '@typescript/lib-es5' from '/packages/main/__lib_node_modules_lookup_lib.es5.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: TypeScript, Declaration.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
[
"Found 'package.json' at '/node_modules/conditions/package.json'.",
"File '/node_modules/conditions/package.json' exists according to earlier cached lookups.",
"======== Resolving module 'conditions' from '/main.ts'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'import', 'types'.",
"File '/package.json' does not exist.",
"Loading module 'conditions' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"Found 'package.json' at '/node_modules/conditions/package.json'.",
"File '/node_modules/conditions/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Saw non-matching condition 'node'.",
"Matched 'exports' condition 'default'.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
[
"Found 'package.json' at '/node_modules/conditions/package.json'.",
"File '/node_modules/conditions/package.json' exists according to earlier cached lookups.",
"======== Resolving module 'conditions' from '/main.ts'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'import', 'types'.",
"File '/package.json' does not exist.",
"Loading module 'conditions' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"Found 'package.json' at '/node_modules/conditions/package.json'.",
"File '/node_modules/conditions/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Saw non-matching condition 'node'.",
"Matched 'exports' condition 'default'.",
Expand Down
3 changes: 2 additions & 1 deletion tests/baselines/reference/bundlerImportESM(module=esnext).js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import { esm } from "./esm.mjs";
//// [esm.mjs]
export var esm = 0;
//// [not-actually-cjs.cjs]
export {};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//// [still-not-cjs.js]
export {};
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ error TS6504: File '/node_modules/dual/index.cjs' is a JavaScript file. Did you
error TS6504: File '/node_modules/dual/index.js' is a JavaScript file. Did you mean to enable the 'allowJs' option?
The file is in the program because:
Root file specified for compilation
/main.cts(1,15): error TS2305: Module '"dual"' has no exported member 'cjs'.
/main.cts(1,10): error TS2305: Module '"dual"' has no exported member 'esm'.
/main.mts(1,15): error TS2305: Module '"dual"' has no exported member 'cjs'.
/main.ts(1,15): error TS2305: Module '"dual"' has no exported member 'cjs'.

Expand Down Expand Up @@ -54,6 +54,6 @@ error TS6504: File '/node_modules/dual/index.js' is a JavaScript file. Did you m

==== /main.cts (1 errors) ====
import { esm, cjs } from "dual";
~~~
!!! error TS2305: Module '"dual"' has no exported member 'cjs'.
~~~
!!! error TS2305: Module '"dual"' has no exported member 'esm'.

Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,5 @@ export {};
//// [main.mjs]
export {};
//// [main.cjs]
export {};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
[
"Found 'package.json' at '/node_modules/dual/package.json'.",
"======== Resolving module 'dual' from '/main.ts'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'import', 'types'.",
"File '/package.json' does not exist.",
"Loading module 'dual' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"Found 'package.json' at '/node_modules/dual/package.json'.",
"File '/node_modules/dual/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Matched 'exports' condition 'import'.",
"Using 'exports' subpath '.' with target './index.js'.",
Expand All @@ -22,8 +23,23 @@
"Resolution for module 'dual' was found in cache from location '/'.",
"======== Module name 'dual' was successfully resolved to '/node_modules/dual/index.d.ts' with Package ID 'dual/index.d.ts@1.0.0'. ========",
"======== Resolving module 'dual' from '/main.cts'. ========",
"Resolution for module 'dual' was found in cache from location '/'.",
"======== Module name 'dual' was successfully resolved to '/node_modules/dual/index.d.ts' with Package ID 'dual/index.d.ts@1.0.0'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'require', 'types'.",
"File '/package.json' does not exist according to earlier cached lookups.",
"Loading module 'dual' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"File '/node_modules/dual/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Saw non-matching condition 'import'.",
"Matched 'exports' condition 'require'.",
"Using 'exports' subpath '.' with target './index.cjs'.",
"File name '/node_modules/dual/index.cjs' has a '.cjs' extension - stripping it.",
"File '/node_modules/dual/index.cts' does not exist.",
"File '/node_modules/dual/index.d.cts' exists - use it as a name resolution result.",
"Resolved under condition 'require'.",
"Exiting conditional exports.",
"Resolving real path for '/node_modules/dual/index.d.cts', result '/node_modules/dual/index.d.cts'.",
"======== Module name 'dual' was successfully resolved to '/node_modules/dual/index.d.cts' with Package ID 'dual/index.d.cts@1.0.0'. ========",
"======== Resolving module '@typescript/lib-es5' from '/.src/__lib_node_modules_lookup_lib.es5.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: TypeScript, Declaration.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ import { esm, cjs } from "dual";

=== /main.cts ===
import { esm, cjs } from "dual";
>esm : number
> : ^^^^^^
>cjs : any
>esm : any
> : ^^^
>cjs : number
> : ^^^^^^

Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ error TS6504: File '/node_modules/dual/index.cjs' is a JavaScript file. Did you
error TS6504: File '/node_modules/dual/index.js' is a JavaScript file. Did you mean to enable the 'allowJs' option?
The file is in the program because:
Root file specified for compilation
/main.cts(1,15): error TS2305: Module '"dual"' has no exported member 'cjs'.
/main.cts(1,10): error TS2305: Module '"dual"' has no exported member 'esm'.
/main.mts(1,15): error TS2305: Module '"dual"' has no exported member 'cjs'.
/main.ts(1,15): error TS2305: Module '"dual"' has no exported member 'cjs'.

Expand Down Expand Up @@ -54,6 +54,6 @@ error TS6504: File '/node_modules/dual/index.js' is a JavaScript file. Did you m

==== /main.cts (1 errors) ====
import { esm, cjs } from "dual";
~~~
!!! error TS2305: Module '"dual"' has no exported member 'cjs'.
~~~
!!! error TS2305: Module '"dual"' has no exported member 'esm'.

Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
[
"Found 'package.json' at '/node_modules/dual/package.json'.",
"======== Resolving module 'dual' from '/main.ts'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'import', 'types'.",
"File '/package.json' does not exist.",
"Loading module 'dual' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"Found 'package.json' at '/node_modules/dual/package.json'.",
"File '/node_modules/dual/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Matched 'exports' condition 'import'.",
"Using 'exports' subpath '.' with target './index.js'.",
Expand All @@ -22,8 +23,23 @@
"Resolution for module 'dual' was found in cache from location '/'.",
"======== Module name 'dual' was successfully resolved to '/node_modules/dual/index.d.ts' with Package ID 'dual/index.d.ts@1.0.0'. ========",
"======== Resolving module 'dual' from '/main.cts'. ========",
"Resolution for module 'dual' was found in cache from location '/'.",
"======== Module name 'dual' was successfully resolved to '/node_modules/dual/index.d.ts' with Package ID 'dual/index.d.ts@1.0.0'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'require', 'types'.",
"File '/package.json' does not exist according to earlier cached lookups.",
"Loading module 'dual' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"File '/node_modules/dual/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Saw non-matching condition 'import'.",
"Matched 'exports' condition 'require'.",
"Using 'exports' subpath '.' with target './index.cjs'.",
"File name '/node_modules/dual/index.cjs' has a '.cjs' extension - stripping it.",
"File '/node_modules/dual/index.cts' does not exist.",
"File '/node_modules/dual/index.d.cts' exists - use it as a name resolution result.",
"Resolved under condition 'require'.",
"Exiting conditional exports.",
"Resolving real path for '/node_modules/dual/index.d.cts', result '/node_modules/dual/index.d.cts'.",
"======== Module name 'dual' was successfully resolved to '/node_modules/dual/index.d.cts' with Package ID 'dual/index.d.cts@1.0.0'. ========",
"======== Resolving module '@typescript/lib-es5' from '/.src/__lib_node_modules_lookup_lib.es5.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: TypeScript, Declaration.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ import { esm, cjs } from "dual";

=== /main.cts ===
import { esm, cjs } from "dual";
>esm : number
> : ^^^^^^
>cjs : any
>esm : any
> : ^^^
>cjs : number
> : ^^^^^^

4 changes: 4 additions & 0 deletions tests/baselines/reference/cachedModuleResolution1.trace.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
[
"File '/a/b/node_modules/package.json' does not exist.",
"File '/a/b/package.json' does not exist.",
"File '/a/package.json' does not exist.",
"File '/package.json' does not exist.",
"======== Resolving module 'foo' from '/a/b/c/d/e/app.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module 'foo' from 'node_modules' folder, target file types: TypeScript, Declaration.",
Expand Down
4 changes: 4 additions & 0 deletions tests/baselines/reference/cachedModuleResolution2.trace.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
[
"File '/a/b/node_modules/package.json' does not exist.",
"File '/a/b/package.json' does not exist.",
"File '/a/package.json' does not exist.",
"File '/package.json' does not exist.",
"======== Resolving module 'foo' from '/a/b/c/lib.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module 'foo' from 'node_modules' folder, target file types: TypeScript, Declaration.",
Expand Down
4 changes: 4 additions & 0 deletions tests/baselines/reference/cachedModuleResolution5.trace.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
[
"File '/a/b/node_modules/package.json' does not exist.",
"File '/a/b/package.json' does not exist.",
"File '/a/package.json' does not exist.",
"File '/package.json' does not exist.",
"======== Resolving module 'foo' from '/a/b/c/d/e/app.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module 'foo' from 'node_modules' folder, target file types: TypeScript, Declaration.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
[
"File '/node_modules/dep/dist/package.json' does not exist.",
"Found 'package.json' at '/node_modules/dep/package.json'.",
"======== Resolving module 'dep' from '/index.mts'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'import', 'types'.",
"File '/package.json' does not exist.",
"Loading module 'dep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"Found 'package.json' at '/node_modules/dep/package.json'.",
"File '/node_modules/dep/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Matched 'exports' condition 'import'.",
"Using 'exports' subpath '.' with target './dist/index.mjs'.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
[
"Found 'package.json' at '/node_modules/lodash/package.json'.",
"File '/node_modules/lodash/package.json' exists according to earlier cached lookups.",
"File '/node_modules/lodash/package.json' exists according to earlier cached lookups.",
"======== Resolving module 'lodash' from '/index.ts'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'import', 'types', 'webpack', ' browser'.",
"File '/package.json' does not exist.",
"Loading module 'lodash' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"Found 'package.json' at '/node_modules/lodash/package.json'.",
"File '/node_modules/lodash/package.json' exists according to earlier cached lookups.",
"File '/node_modules/lodash.ts' does not exist.",
"File '/node_modules/lodash.tsx' does not exist.",
"File '/node_modules/lodash.d.ts' does not exist.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
[
"Found 'package.json' at '/node_modules/lodash/package.json'.",
"File '/node_modules/lodash/package.json' exists according to earlier cached lookups.",
"File '/node_modules/lodash/package.json' exists according to earlier cached lookups.",
"======== Resolving module 'lodash' from '/index.ts'. ========",
"Explicitly specified module resolution kind: 'Bundler'.",
"Resolving in CJS mode with conditions 'import', 'types', 'webpack', ' browser'.",
"File '/package.json' does not exist.",
"Loading module 'lodash' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
"Found 'package.json' at '/node_modules/lodash/package.json'.",
"File '/node_modules/lodash/package.json' exists according to earlier cached lookups.",
"Entering conditional exports.",
"Saw non-matching condition 'browser'.",
"Matched 'exports' condition 'webpack'.",
Expand Down
Loading

0 comments on commit b12dfba

Please sign in to comment.