Skip to content

Commit 9b17f6e

Browse files
authored
Never break imports (#527)
1 parent fe4ec01 commit 9b17f6e

File tree

2 files changed

+30
-26
lines changed

2 files changed

+30
-26
lines changed

src/nodes/ImportDirective.js

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,44 @@
11
const {
22
doc: {
3-
builders: { group, line, softline }
3+
builders: { join }
44
}
55
} = require('prettier/standalone');
66

7-
const printSeparatedList = require('./print-separated-list');
87
const { printString } = require('../prettier-comments/common/util');
98

109
const ImportDirective = {
1110
print: ({ node, options }) => {
12-
let doc = printString(node.path, options);
11+
const importPath = printString(node.path, options);
12+
13+
let doc;
1314

1415
if (node.unitAlias) {
15-
doc = [doc, ' as ', node.unitAlias];
16+
// import "./Foo.sol" as Foo;
17+
doc = [importPath, ' as ', node.unitAlias];
1618
} else if (node.symbolAliases) {
17-
doc = [
18-
'{',
19-
printSeparatedList(
20-
node.symbolAliases.map(([a, b]) => (b ? `${a} as ${b}` : a)),
21-
{ firstSeparator: options.bracketSpacing ? line : softline }
22-
),
23-
'} from ',
24-
doc
25-
];
19+
// import { Foo, Bar as Qux } from "./Foo.sol";
20+
doc = ['{'];
21+
22+
if (options.bracketSpacing) {
23+
doc.push(' ');
24+
}
25+
26+
const symbolAliases = node.symbolAliases.map(([a, b]) =>
27+
b ? `${a} as ${b}` : a
28+
);
29+
doc.push(join(', ', symbolAliases));
30+
31+
if (options.bracketSpacing) {
32+
doc.push(' ');
33+
}
34+
35+
doc.push('} from ', importPath);
36+
} else {
37+
// import "./Foo.sol";
38+
doc = importPath;
2639
}
27-
return group(['import ', doc, ';']);
40+
41+
return ['import ', doc, ';'];
2842
}
2943
};
3044

tests/ImportDirective/__snapshots__/jsfmt.spec.js.snap

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,7 @@ import "SomeFile.sol";
1818
import "SomeFile.sol" as SomeOtherFile;
1919
import "AnotherFile.sol" as SomeSymbol;
2020
import { symbol1 as alias, symbol2 } from "File.sol";
21-
import {
22-
symbol1 as alias1,
23-
symbol2 as alias2,
24-
symbol3 as alias3,
25-
symbol4
26-
} from "File2.sol";
21+
import { symbol1 as alias1, symbol2 as alias2, symbol3 as alias3, symbol4 } from "File2.sol";
2722
2823
================================================================================
2924
`;
@@ -45,12 +40,7 @@ import "SomeFile.sol";
4540
import "SomeFile.sol" as SomeOtherFile;
4641
import "AnotherFile.sol" as SomeSymbol;
4742
import {symbol1 as alias, symbol2} from "File.sol";
48-
import {
49-
symbol1 as alias1,
50-
symbol2 as alias2,
51-
symbol3 as alias3,
52-
symbol4
53-
} from "File2.sol";
43+
import {symbol1 as alias1, symbol2 as alias2, symbol3 as alias3, symbol4} from "File2.sol";
5444
5545
================================================================================
5646
`;

0 commit comments

Comments
 (0)