Skip to content

Commit 8c81daf

Browse files
committed
Actually fix it
1 parent 1fddb2a commit 8c81daf

File tree

5 files changed

+32
-13
lines changed

5 files changed

+32
-13
lines changed

src/compiler/binder.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ import {
279279
setValueDeclaration,
280280
ShorthandPropertyAssignment,
281281
shouldPreserveConstEnums,
282+
shouldResolveJsRequire,
282283
SignatureDeclaration,
283284
skipParentheses,
284285
sliceAfter,
@@ -3525,7 +3526,7 @@ function createBinder(): (file: SourceFile, options: CompilerOptions) => void {
35253526
if (!isBindingPattern(node.name)) {
35263527
const possibleVariableDecl = node.kind === SyntaxKind.VariableDeclaration ? node : node.parent.parent;
35273528
if (isInJSFile(node) &&
3528-
getEmitModuleResolutionKind(options) !== ModuleResolutionKind.Bundler &&
3529+
shouldResolveJsRequire(compilerOptions) &&
35293530
isVariableDeclarationInitializedToBareOrAccessedRequire(possibleVariableDecl) &&
35303531
!getJSDocTypeTag(node) &&
35313532
!(getCombinedModifierFlags(node) & ModifierFlags.Export)

src/compiler/checker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,7 @@ import {
940940
ShorthandPropertyAssignment,
941941
shouldAllowImportingTsExtension,
942942
shouldPreserveConstEnums,
943+
shouldResolveJsRequire,
943944
Signature,
944945
SignatureDeclaration,
945946
SignatureFlags,
@@ -34163,8 +34164,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3416334164
}
3416434165

3416534166
// In JavaScript files, calls to any identifier 'require' are treated as external module imports
34166-
if (isInJSFile(node) && (getEmitModuleResolutionKind(compilerOptions) !== ModuleResolutionKind.Bundler || compilerOptions.noDtsResolution) && isCommonJsRequire(node)) {
34167-
// `bundler` doesn't support resolving `require`, but needs to in `noDtsResolution` to support Find Source Definition
34167+
if (isInJSFile(node) && shouldResolveJsRequire(compilerOptions) && isCommonJsRequire(node)) {
3416834168
return resolveExternalModuleTypeByLiteral(node.arguments![0] as StringLiteral);
3416934169
}
3417034170

src/compiler/program.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,7 @@ import {
329329
WriteFileCallbackData,
330330
writeFileEnsuringDirectories,
331331
zipToModeAwareCache,
332+
shouldResolveJsRequire,
332333
} from "./_namespaces/ts";
333334
import * as performance from "./_namespaces/ts.performance";
334335

@@ -3211,8 +3212,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
32113212
collectModuleReferences(node, /*inAmbientModule*/ false);
32123213
}
32133214

3214-
// `require` has no special meaning in `--moduleResolution bundler`
3215-
const shouldProcessRequires = isJavaScriptFile && getEmitModuleResolutionKind(options) !== ModuleResolutionKind.Bundler;
3215+
const shouldProcessRequires = isJavaScriptFile && shouldResolveJsRequire(options);
32163216
if ((file.flags & NodeFlags.PossiblyContainsDynamicImport) || shouldProcessRequires) {
32173217
collectDynamicImportOrRequireCalls(file);
32183218
}

src/compiler/utilities.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8438,6 +8438,12 @@ export function moduleResolutionSupportsPackageJsonExportsAndImports(moduleResol
84388438
|| moduleResolution === ModuleResolutionKind.Bundler;
84398439
}
84408440

8441+
/** @internal */
8442+
export function shouldResolveJsRequire(compilerOptions: CompilerOptions): boolean {
8443+
// `bundler` doesn't support resolving `require`, but needs to in `noDtsResolution` to support Find Source Definition
8444+
return !!compilerOptions.noDtsResolution || getEmitModuleResolutionKind(compilerOptions) !== ModuleResolutionKind.Bundler;
8445+
}
8446+
84418447
/** @internal */
84428448
export function getResolvePackageJsonExports(compilerOptions: CompilerOptions) {
84438449
const moduleResolution = getEmitModuleResolutionKind(compilerOptions);

tests/baselines/reference/goToSource15_bundler.baseline.jsonc

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,31 @@
11
// === goToSourceDefinition ===
2-
// === /node_modules/react/index.js ===
3-
// [|'use strict';
4-
//
5-
// if (process.env.NODE_ENV === 'production') {
6-
// module.exports = require('./cjs/react.production.min.js');
7-
// } else {
8-
// module.exports = require('./cjs/react.development.js');
9-
// }|]
2+
// === /node_modules/react/cjs/react.production.min.js ===
3+
// 'use strict';exports.[|{| defId: 0 |}useState|]=function(a){};exports.version='16.8.6';
4+
5+
// === /node_modules/react/cjs/react.development.js ===
6+
// 'use strict';
7+
// if (process.env.NODE_ENV !== 'production') {
8+
// (function() {
9+
// function useState(initialState) {}
10+
// exports.[|{| defId: 1 |}useState|] = useState;
11+
// exports.version = '16.8.6';
12+
// }());
13+
// }
1014

1115
// === /index.ts ===
1216
// import { /*GOTO SOURCE DEF*/useState } from 'react';
1317

1418
// === Details ===
1519
[
1620
{
21+
"defId": 0,
22+
"containerKind": "",
23+
"containerName": "",
24+
"kind": "",
25+
"name": ""
26+
},
27+
{
28+
"defId": 1,
1729
"containerKind": "",
1830
"containerName": "",
1931
"kind": "",

0 commit comments

Comments
 (0)