fix(42765): require should not work in ts files (#42792)

* add failing test

* fix(42765): require should not work in ts files
This commit is contained in:
Zen
2021-03-02 22:54:31 +08:00
committed by GitHub
parent 0b337f12b5
commit 3d1c6e8f2f
5 changed files with 143 additions and 12 deletions

View File

@@ -3144,18 +3144,19 @@ namespace ts {
else if (namespace === unknownSymbol) {
return namespace;
}
if (isInJSFile(name)) {
if (namespace.valueDeclaration &&
isVariableDeclaration(namespace.valueDeclaration) &&
namespace.valueDeclaration.initializer &&
isCommonJsRequire(namespace.valueDeclaration.initializer)) {
const moduleName = (namespace.valueDeclaration.initializer as CallExpression).arguments[0] as StringLiteral;
const moduleSym = resolveExternalModuleName(moduleName, moduleName);
if (moduleSym) {
const resolvedModuleSymbol = resolveExternalModuleSymbol(moduleSym);
if (resolvedModuleSymbol) {
namespace = resolvedModuleSymbol;
}
if (
namespace.valueDeclaration &&
isInJSFile(namespace.valueDeclaration) &&
isVariableDeclaration(namespace.valueDeclaration) &&
namespace.valueDeclaration.initializer &&
isCommonJsRequire(namespace.valueDeclaration.initializer)
) {
const moduleName = (namespace.valueDeclaration.initializer as CallExpression).arguments[0] as StringLiteral;
const moduleSym = resolveExternalModuleName(moduleName, moduleName);
if (moduleSym) {
const resolvedModuleSymbol = resolveExternalModuleSymbol(moduleSym);
if (resolvedModuleSymbol) {
namespace = resolvedModuleSymbol;
}
}
}