File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -108,7 +108,7 @@ namespace ts {
108108 getAliasedSymbol: resolveAlias,
109109 getEmitResolver,
110110 getExportsOfModule: getExportsOfModuleAsArray,
111- resolveExternalModuleSymbol ,
111+ getExportsAndPropertiesOfModule ,
112112 getAmbientModules,
113113 getJsxElementAttributesType,
114114 getJsxIntrinsicTagNames,
@@ -1528,6 +1528,15 @@ namespace ts {
15281528 return symbolsToArray(getExportsOfModule(moduleSymbol));
15291529 }
15301530
1531+ function getExportsAndPropertiesOfModule(moduleSymbol: Symbol): Symbol[] {
1532+ const exports = getExportsOfModuleAsArray(moduleSymbol);
1533+ const exportEquals = resolveExternalModuleSymbol(moduleSymbol);
1534+ if (exportEquals !== moduleSymbol) {
1535+ addRange(exports, getPropertiesOfType(getTypeOfSymbol(exportEquals)));
1536+ }
1537+ return exports;
1538+ }
1539+
15311540 function tryGetMemberInModuleExports(memberName: string, moduleSymbol: Symbol): Symbol | undefined {
15321541 const symbolTable = getExportsOfModule(moduleSymbol);
15331542 if (symbolTable) {
Original file line number Diff line number Diff line change @@ -2370,7 +2370,8 @@ namespace ts {
23702370 isValidPropertyAccess ( node : PropertyAccessExpression | QualifiedName , propertyName : string ) : boolean ;
23712371 getAliasedSymbol ( symbol : Symbol ) : Symbol ;
23722372 getExportsOfModule ( moduleSymbol : Symbol ) : Symbol [ ] ;
2373- /* @internal */ resolveExternalModuleSymbol ( moduleSymbol : Symbol ) : Symbol ;
2373+ /** Unlike `getExportsOfModule`, this includes properties of an `export =` value. */
2374+ /* @internal */ getExportsAndPropertiesOfModule ( moduleSymbol : Symbol ) : Symbol [ ] ;
23742375
23752376 getJsxElementAttributesType ( elementNode : JsxOpeningLikeElement ) : Type ;
23762377 getJsxIntrinsicTagNames ( ) : Symbol [ ] ;
Original file line number Diff line number Diff line change @@ -1318,20 +1318,14 @@ namespace ts.Completions {
13181318 isMemberCompletion = true ;
13191319 isNewIdentifierLocation = false ;
13201320
1321- let exports : Symbol [ ] ;
1322- const moduleSpecifierSymbol = typeChecker . getSymbolAtLocation ( importOrExportDeclaration . moduleSpecifier ) ;
1323- if ( moduleSpecifierSymbol ) {
1324- exports = typeChecker . getExportsOfModule ( moduleSpecifierSymbol ) ;
1325- const exportEquals = typeChecker . resolveExternalModuleSymbol ( moduleSpecifierSymbol ) ;
1326- if ( exportEquals !== moduleSpecifierSymbol ) {
1327- // Location doesn't matter so long as it's not an identifier.
1328- const exportEqualsType = typeChecker . getTypeOfSymbolAtLocation ( exportEquals , moduleSpecifier ) ;
1329- exports = ts . concatenate ( exports , typeChecker . getPropertiesOfType ( exportEqualsType ) ) ;
1330- }
1321+ const moduleSpecifierSymbol = typeChecker . getSymbolAtLocation ( moduleSpecifier ) ;
1322+ if ( ! moduleSpecifierSymbol ) {
1323+ symbols = emptyArray ;
1324+ return true ;
13311325 }
13321326
1333- symbols = exports ? filterNamedImportOrExportCompletionItems ( exports , namedImportsOrExports . elements ) : emptyArray ;
1334-
1327+ const exports = typeChecker . getExportsAndPropertiesOfModule ( moduleSpecifierSymbol ) ;
1328+ symbols = filterNamedImportOrExportCompletionItems ( exports , namedImportsOrExports . elements ) ;
13351329 return true ;
13361330 }
13371331
You can’t perform that action at this time.
0 commit comments