Remove special symbol for untyped modules
Extending symbols from untyped modules is no longer an error, so #12532 didn't get us anything except slightly better quick info.
This commit is contained in:
parent
441e54ce00
commit
90d5c299b0
|
@ -203,8 +203,6 @@ namespace ts {
|
|||
const evolvingArrayTypes: EvolvingArrayType[] = [];
|
||||
|
||||
const unknownSymbol = createSymbol(SymbolFlags.Property, "unknown");
|
||||
const untypedModuleSymbol = createSymbol(SymbolFlags.ValueModule, "<untyped>");
|
||||
untypedModuleSymbol.exports = createMap<Symbol>();
|
||||
const resolvingSymbol = createSymbol(0, "__resolving__");
|
||||
|
||||
const anyType = createIntrinsicType(TypeFlags.Any, "any");
|
||||
|
@ -1253,7 +1251,7 @@ namespace ts {
|
|||
|
||||
if (moduleSymbol) {
|
||||
let exportDefaultSymbol: Symbol;
|
||||
if (isUntypedOrShorthandAmbientModuleSymbol(moduleSymbol)) {
|
||||
if (isShorthandAmbientModuleSymbol(moduleSymbol)) {
|
||||
exportDefaultSymbol = moduleSymbol;
|
||||
}
|
||||
else {
|
||||
|
@ -1333,7 +1331,7 @@ namespace ts {
|
|||
if (targetSymbol) {
|
||||
const name = specifier.propertyName || specifier.name;
|
||||
if (name.text) {
|
||||
if (isUntypedOrShorthandAmbientModuleSymbol(moduleSymbol)) {
|
||||
if (isShorthandAmbientModuleSymbol(moduleSymbol)) {
|
||||
return moduleSymbol;
|
||||
}
|
||||
|
||||
|
@ -1586,18 +1584,15 @@ namespace ts {
|
|||
if (isForAugmentation) {
|
||||
const diag = Diagnostics.Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented;
|
||||
error(errorNode, diag, moduleReference, resolvedModule.resolvedFileName);
|
||||
return undefined;
|
||||
}
|
||||
else if (noImplicitAny && moduleNotFoundError) {
|
||||
error(errorNode,
|
||||
Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type,
|
||||
moduleReference,
|
||||
resolvedModule.resolvedFileName);
|
||||
return undefined;
|
||||
}
|
||||
// Unlike a failed import, an untyped module produces a dummy symbol.
|
||||
// This is checked for by `isUntypedOrShorthandAmbientModuleSymbol`.
|
||||
return untypedModuleSymbol;
|
||||
// Failed imports and untyped modules are both treated in an untyped manner; only difference is whether we give a diagnostic first.
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if (moduleNotFoundError) {
|
||||
|
@ -4367,7 +4362,7 @@ namespace ts {
|
|||
function getTypeOfFuncClassEnumModule(symbol: Symbol): Type {
|
||||
const links = getSymbolLinks(symbol);
|
||||
if (!links.type) {
|
||||
if (symbol.flags & SymbolFlags.Module && isUntypedOrShorthandAmbientModuleSymbol(symbol)) {
|
||||
if (symbol.flags & SymbolFlags.Module && isShorthandAmbientModuleSymbol(symbol)) {
|
||||
links.type = anyType;
|
||||
}
|
||||
else {
|
||||
|
@ -22063,7 +22058,7 @@ namespace ts {
|
|||
|
||||
function moduleExportsSomeValue(moduleReferenceExpression: Expression): boolean {
|
||||
let moduleSymbol = resolveExternalModuleName(moduleReferenceExpression.parent, moduleReferenceExpression);
|
||||
if (!moduleSymbol || isUntypedOrShorthandAmbientModuleSymbol(moduleSymbol)) {
|
||||
if (!moduleSymbol || isShorthandAmbientModuleSymbol(moduleSymbol)) {
|
||||
// If the module is not found or is shorthand, assume that it may export a value.
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -439,8 +439,8 @@ namespace ts {
|
|||
}
|
||||
|
||||
/** Given a symbol for a module, checks that it is either an untyped import or a shorthand ambient module. */
|
||||
export function isUntypedOrShorthandAmbientModuleSymbol(moduleSymbol: Symbol): boolean {
|
||||
return !moduleSymbol.declarations || isShorthandAmbientModule(moduleSymbol.valueDeclaration);
|
||||
export function isShorthandAmbientModuleSymbol(moduleSymbol: Symbol): boolean {
|
||||
return isShorthandAmbientModule(moduleSymbol.valueDeclaration);
|
||||
}
|
||||
|
||||
function isShorthandAmbientModule(node: Node): boolean {
|
||||
|
|
|
@ -187,7 +187,7 @@ namespace ts.FindAllReferences {
|
|||
return { symbol };
|
||||
}
|
||||
|
||||
if (ts.isUntypedOrShorthandAmbientModuleSymbol(aliasedSymbol)) {
|
||||
if (ts.isShorthandAmbientModuleSymbol(aliasedSymbol)) {
|
||||
return { symbol, shorthandModuleSymbol: aliasedSymbol };
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ verify.numberOfErrorsInCurrentFile(0);
|
|||
|
||||
goTo.marker("fooModule");
|
||||
verify.goToDefinitionIs([]);
|
||||
verify.quickInfoIs("module <untyped>");
|
||||
verify.quickInfoIs("");
|
||||
verify.noReferences();
|
||||
|
||||
goTo.marker("foo");
|
||||
|
|
Loading…
Reference in a new issue