@@ -785,28 +785,36 @@ namespace ts {
785
785
786
786
function getAdjustedLocationForImportDeclaration ( node : ImportDeclaration , forRename : boolean ) {
787
787
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
+
788
793
// /**/import [|name|] from ...;
789
794
// import /**/type [|name|] from ...;
790
- if ( node . importClause . name && ! node . importClause . namedBindings ) {
795
+ if ( node . importClause . name ) {
791
796
return node . importClause . name ;
792
797
}
798
+
793
799
// /**/import { [|name|] } from ...;
794
800
// /**/import { propertyName as [|name|] } from ...;
795
801
// /**/import * as [|name|] from ...;
796
802
// import /**/type { [|name|] } from ...;
797
803
// import /**/type { propertyName as [|name|] } from ...;
798
804
// import /**/type * as [|name|] from ...;
799
- if ( ! node . importClause . name && node . importClause . namedBindings ) {
805
+ if ( node . importClause . namedBindings ) {
800
806
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 ;
803
811
}
812
+ return onlyBinding . name ;
804
813
}
805
814
else if ( isNamespaceImport ( node . importClause . namedBindings ) ) {
806
815
return node . importClause . namedBindings . name ;
807
816
}
808
817
}
809
-
810
818
}
811
819
if ( ! forRename ) {
812
820
// /**/import "[|module|]";
@@ -825,9 +833,12 @@ namespace ts {
825
833
// export /**/type { propertyName as [|name|] } from ...
826
834
// export /**/type * as [|name|] ...
827
835
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 ;
830
840
}
841
+ return node . exportClause . elements [ 0 ] . name ;
831
842
}
832
843
else if ( isNamespaceExport ( node . exportClause ) ) {
833
844
return node . exportClause . name ;
0 commit comments