@@ -785,28 +785,36 @@ namespace ts {
785785
786786 function getAdjustedLocationForImportDeclaration ( node : ImportDeclaration , forRename : boolean ) {
787787 if ( node . importClause ) {
788+ if ( node . importClause . name && node . importClause . namedBindings ) {
789+ // do not adjust if we have both a name and named bindings
790+ return ;
791+ }
792+
788793 // /**/import [|name|] from ...;
789794 // import /**/type [|name|] from ...;
790- if ( node . importClause . name && ! node . importClause . namedBindings ) {
795+ if ( node . importClause . name ) {
791796 return node . importClause . name ;
792797 }
798+
793799 // /**/import { [|name|] } from ...;
794800 // /**/import { propertyName as [|name|] } from ...;
795801 // /**/import * as [|name|] from ...;
796802 // import /**/type { [|name|] } from ...;
797803 // import /**/type { propertyName as [|name|] } from ...;
798804 // import /**/type * as [|name|] from ...;
799- if ( ! node . importClause . name && node . importClause . namedBindings ) {
805+ if ( node . importClause . namedBindings ) {
800806 if ( isNamedImports ( node . importClause . namedBindings ) ) {
801- if ( node . importClause . namedBindings . elements . length === 1 ) {
802- return node . importClause . namedBindings . elements [ 0 ] . name ;
807+ // do nothing if there is more than one binding
808+ const onlyBinding = singleOrUndefined ( node . importClause . namedBindings . elements ) ;
809+ if ( ! onlyBinding ) {
810+ return ;
803811 }
812+ return onlyBinding . name ;
804813 }
805814 else if ( isNamespaceImport ( node . importClause . namedBindings ) ) {
806815 return node . importClause . namedBindings . name ;
807816 }
808817 }
809-
810818 }
811819 if ( ! forRename ) {
812820 // /**/import "[|module|]";
@@ -825,9 +833,12 @@ namespace ts {
825833 // export /**/type { propertyName as [|name|] } from ...
826834 // export /**/type * as [|name|] ...
827835 if ( isNamedExports ( node . exportClause ) ) {
828- if ( node . exportClause . elements . length === 1 ) {
829- return node . exportClause . elements [ 0 ] . name ;
836+ // do nothing if there is more than one binding
837+ const onlyBinding = singleOrUndefined ( node . exportClause . elements ) ;
838+ if ( ! onlyBinding ) {
839+ return ;
830840 }
841+ return node . exportClause . elements [ 0 ] . name ;
831842 }
832843 else if ( isNamespaceExport ( node . exportClause ) ) {
833844 return node . exportClause . name ;
0 commit comments