Skip to content

Commit a10b78b

Browse files
committed
Combine imports from same file, cherry-picked from OpenZeppelin#661
1 parent 9f03a98 commit a10b78b

File tree

5 files changed

+38
-54
lines changed

5 files changed

+38
-54
lines changed

packages/core/confidential/src/confidentialFungible.test.ts.md

Lines changed: 25 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ Generated by [AVA](https://avajs.dev).
1212
// Compatible with OpenZeppelin Confidential Contracts ^0.2.0␊
1313
pragma solidity ^0.8.27;␊
1414
15-
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
16-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
1715
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
18-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
16+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
17+
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
1918
2019
contract MyToken is ConfidentialFungibleToken, SepoliaConfig {␊
2120
constructor() ConfidentialFungibleToken("MyToken", "MTK", "") {}␊
@@ -30,10 +29,9 @@ Generated by [AVA](https://avajs.dev).
3029
// Compatible with OpenZeppelin Confidential Contracts ^0.2.0␊
3130
pragma solidity ^0.8.27;␊
3231
33-
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
34-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
3532
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
36-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
33+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
34+
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
3735
3836
contract MyTokec is ConfidentialFungibleToken, SepoliaConfig {␊
3937
constructor() ConfidentialFungibleToken(unicode"MyTokeć", "MTK", "") {}␊
@@ -48,11 +46,10 @@ Generated by [AVA](https://avajs.dev).
4846
// Compatible with OpenZeppelin Contracts ^5.4.0 and OpenZeppelin Confidential Contracts ^0.2.0␊
4947
pragma solidity ^0.8.27;␊
5048
49+
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
50+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
5151
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
52-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
5352
import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol";␊
54-
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
55-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
5653
5754
contract MyToken is ConfidentialFungibleToken, SepoliaConfig {␊
5855
constructor(address recipient)␊
@@ -71,10 +68,9 @@ Generated by [AVA](https://avajs.dev).
7168
// Compatible with OpenZeppelin Confidential Contracts ^0.2.0␊
7269
pragma solidity ^0.8.27;␊
7370
74-
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
75-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
7671
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
77-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
72+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
73+
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
7874
7975
contract MyToken is ConfidentialFungibleToken, SepoliaConfig {␊
8076
constructor() ConfidentialFungibleToken("MyToken", "MTK", "") {}␊
@@ -89,11 +85,10 @@ Generated by [AVA](https://avajs.dev).
8985
// Compatible with OpenZeppelin Contracts ^5.4.0 and OpenZeppelin Confidential Contracts ^0.2.0␊
9086
pragma solidity ^0.8.27;␊
9187
88+
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
89+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
9290
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
93-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
9491
import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol";␊
95-
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
96-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
9792
9893
contract MyToken is ConfidentialFungibleToken, SepoliaConfig {␊
9994
constructor(address recipient)␊
@@ -112,11 +107,10 @@ Generated by [AVA](https://avajs.dev).
112107
// Compatible with OpenZeppelin Contracts ^5.4.0 and OpenZeppelin Confidential Contracts ^0.2.0␊
113108
pragma solidity ^0.8.27;␊
114109
110+
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
111+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
115112
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
116-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
117113
import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol";␊
118-
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
119-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
120114
121115
contract MyToken is ConfidentialFungibleToken, SepoliaConfig {␊
122116
constructor(address recipient)␊
@@ -135,11 +129,10 @@ Generated by [AVA](https://avajs.dev).
135129
// Compatible with OpenZeppelin Contracts ^5.4.0 and OpenZeppelin Confidential Contracts ^0.2.0␊
136130
pragma solidity ^0.8.27;␊
137131
132+
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
133+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
138134
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
139-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
140135
import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol";␊
141-
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
142-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
143136
144137
contract MyToken is ConfidentialFungibleToken, SepoliaConfig {␊
145138
constructor(address recipient)␊
@@ -158,12 +151,11 @@ Generated by [AVA](https://avajs.dev).
158151
// Compatible with OpenZeppelin Contracts ^5.4.0 and OpenZeppelin Confidential Contracts ^0.2.0␊
159152
pragma solidity ^0.8.27;␊
160153
154+
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
155+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
161156
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
162157
import {ConfidentialFungibleTokenERC20Wrapper} from "@openzeppelin/confidential-contracts/token/extensions/ConfidentialFungibleTokenERC20Wrapper.sol";␊
163-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
164158
import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";␊
165-
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
166-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
167159
168160
contract MyToken is ConfidentialFungibleToken, SepoliaConfig, ConfidentialFungibleTokenERC20Wrapper {␊
169161
constructor(IERC20 underlying)␊
@@ -192,13 +184,12 @@ Generated by [AVA](https://avajs.dev).
192184
// Compatible with OpenZeppelin Contracts ^5.4.0 and OpenZeppelin Confidential Contracts ^0.2.0␊
193185
pragma solidity ^0.8.27;␊
194186
195-
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
187+
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
188+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
196189
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
197190
import {ConfidentialFungibleTokenVotes} from "@openzeppelin/confidential-contracts/token/extensions/ConfidentialFungibleTokenVotes.sol";␊
191+
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
198192
import {EIP712} from "@openzeppelin/contracts/utils/cryptography/EIP712.sol";␊
199-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
200-
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
201-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
202193
203194
contract MyToken is ConfidentialFungibleToken, SepoliaConfig, EIP712, ConfidentialFungibleTokenVotes, AccessControl {␊
204195
bytes32 public constant HANDLE_VIEWER_ROLE = keccak256("HANDLE_VIEWER_ROLE");␊
@@ -247,13 +238,12 @@ Generated by [AVA](https://avajs.dev).
247238
// Compatible with OpenZeppelin Contracts ^5.4.0 and OpenZeppelin Confidential Contracts ^0.2.0␊
248239
pragma solidity ^0.8.27;␊
249240
250-
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
241+
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
242+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
251243
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
252244
import {ConfidentialFungibleTokenVotes} from "@openzeppelin/confidential-contracts/token/extensions/ConfidentialFungibleTokenVotes.sol";␊
245+
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
253246
import {EIP712} from "@openzeppelin/contracts/utils/cryptography/EIP712.sol";␊
254-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
255-
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
256-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
257247
258248
contract MyToken is ConfidentialFungibleToken, SepoliaConfig, EIP712, ConfidentialFungibleTokenVotes, AccessControl {␊
259249
bytes32 public constant HANDLE_VIEWER_ROLE = keccak256("HANDLE_VIEWER_ROLE");␊
@@ -302,13 +292,12 @@ Generated by [AVA](https://avajs.dev).
302292
// Compatible with OpenZeppelin Contracts ^5.4.0 and OpenZeppelin Confidential Contracts ^0.2.0␊
303293
pragma solidity ^0.8.27;␊
304294
305-
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
295+
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
296+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
306297
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
307298
import {ConfidentialFungibleTokenVotes} from "@openzeppelin/confidential-contracts/token/extensions/ConfidentialFungibleTokenVotes.sol";␊
299+
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
308300
import {EIP712} from "@openzeppelin/contracts/utils/cryptography/EIP712.sol";␊
309-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
310-
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
311-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
312301
313302
contract MyToken is ConfidentialFungibleToken, SepoliaConfig, EIP712, ConfidentialFungibleTokenVotes, AccessControl {␊
314303
bytes32 public constant HANDLE_VIEWER_ROLE = keccak256("HANDLE_VIEWER_ROLE");␊
3 Bytes
Binary file not shown.

packages/core/confidential/src/zip-hardhat.test.ts.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,13 @@ Generated by [AVA](https://avajs.dev).
1313
// Compatible with OpenZeppelin Contracts ^5.4.0 and OpenZeppelin Confidential Contracts ^0.2.0␊
1414
pragma solidity ^0.8.27;␊
1515
16-
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
16+
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
17+
import {FHE, euint64} from "@fhevm/solidity/lib/FHE.sol";␊
1718
import {ConfidentialFungibleToken} from "@openzeppelin/confidential-contracts/token/ConfidentialFungibleToken.sol";␊
1819
import {ConfidentialFungibleTokenVotes} from "@openzeppelin/confidential-contracts/token/extensions/ConfidentialFungibleTokenVotes.sol";␊
20+
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
1921
import {EIP712} from "@openzeppelin/contracts/utils/cryptography/EIP712.sol";␊
20-
import {FHE} from "@fhevm/solidity/lib/FHE.sol";␊
2122
import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol";␊
22-
import {SepoliaConfig} from "@fhevm/solidity/config/ZamaConfig.sol";␊
23-
import {euint64} from "@fhevm/solidity/lib/FHE.sol";␊
2423
2524
contract MyToken is ConfidentialFungibleToken, SepoliaConfig, EIP712, ConfidentialFungibleTokenVotes, AccessControl {␊
2625
bytes32 public constant HANDLE_VIEWER_ROLE = keccak256("HANDLE_VIEWER_ROLE");␊
-3 Bytes
Binary file not shown.

packages/core/solidity/src/print.ts

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -274,20 +274,16 @@ function printNatspecTags(tags: NatspecTag[]): string[] {
274274
}
275275

276276
function printImports(imports: ImportContract[], helpers: Helpers): string[] {
277-
// Sort imports by name
278-
imports.sort((a, b) => {
279-
if (a.name < b.name) return -1;
280-
if (a.name > b.name) return 1;
281-
return 0;
282-
});
283-
284-
const lines: string[] = [];
285-
imports.map(p => {
286-
const importContract = helpers.transformImport(p);
287-
lines.push(`import {${importContract.name}} from "${importContract.path}";`);
288-
});
289-
290-
return lines;
277+
const itemByPath = new Map<string, Set<string>>();
278+
279+
for (const p of imports) {
280+
const { name, path } = helpers.transformImport(p);
281+
const _ = itemByPath.get(path)?.add(name) ?? itemByPath.set(path, new Set([name]));
282+
}
283+
284+
return Array.from(itemByPath.keys())
285+
.sort()
286+
.map(path => `import {${Array.from(itemByPath.get(path)!).sort().join(', ')}} from "${path}";`);
291287
}
292288

293289
function printLibraries(contract: Contract, { transformName }: Helpers): string[] {

0 commit comments

Comments
 (0)