mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-04 21:53:42 -06:00
Make javascript require goto def similar to ts import equals (#36487)
Fixes #34996
This commit is contained in:
parent
39311da27b
commit
869a8211fc
@ -207,6 +207,15 @@ namespace ts.GoToDefinition {
|
||||
return aliased;
|
||||
}
|
||||
}
|
||||
if (symbol && isInJSFile(node)) {
|
||||
const requireCall = forEach(symbol.declarations, d => isVariableDeclaration(d) && !!d.initializer && isRequireCall(d.initializer, /*checkArgumentIsStringLiteralLike*/ true) ? d.initializer : undefined);
|
||||
if (requireCall) {
|
||||
const moduleSymbol = checker.getSymbolAtLocation(requireCall.arguments[0]);
|
||||
if (moduleSymbol) {
|
||||
return checker.resolveExternalModuleSymbol(moduleSymbol);
|
||||
}
|
||||
}
|
||||
}
|
||||
return symbol;
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
/// <reference path='fourslash.ts'/>
|
||||
|
||||
// @allowJs: true
|
||||
|
||||
// @Filename: /foo.js
|
||||
//// /*moduleDef*/class Blah {
|
||||
//// abc = 123;
|
||||
////}
|
||||
////module.exports.Blah = Blah;
|
||||
|
||||
// @Filename: /bar.js
|
||||
////const [|/*importDef*/BlahModule|] = require("./foo.js");
|
||||
////new [|/*importUsage*/BlahModule|].Blah()
|
||||
|
||||
// @Filename: /barTs.ts
|
||||
////import [|/*importDefTs*/BlahModule|] = require("./foo.js");
|
||||
////new [|/*importUsageTs*/BlahModule|].Blah()
|
||||
|
||||
verify.goToDefinition(["importDef", "importUsage", "importDefTs", "importUsageTs"], "moduleDef");
|
||||
@ -9,4 +9,8 @@
|
||||
////const f = require("./a");
|
||||
////[|/*use*/f|]();
|
||||
|
||||
verify.goToDefinition("use", "f");
|
||||
// @Filename: /bar.ts
|
||||
////import f = require("./a");
|
||||
////[|/*useTs*/f|]();
|
||||
|
||||
verify.goToDefinition(["use", "useTs"], "f");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user