Skip to content

Commit a0190f7

Browse files
Amxxfrangio
andauthored
Implement partial transpilation (#130)
Co-authored-by: Francisco Giordano <[email protected]>
1 parent 4238e36 commit a0190f7

20 files changed

+400
-82
lines changed

contracts/project/ISomeInterface.sol

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// SPDX-License-Identifier: UNLICENSED
2+
pragma solidity ^0.8.0;
3+
4+
interface ISomeInterface {
5+
function someFunction() external returns (bool);
6+
function someOtherFunction() external returns (bool);
7+
}

contracts/project/SomeContract.sol

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// SPDX-License-Identifier: UNLICENSED
2+
pragma solidity ^0.8.0;
3+
4+
import { ISomeInterface } from "./ISomeInterface.sol";
5+
import { SomeLibrary } from "./SomeLibrary.sol";
6+
7+
interface ISomeContract is ISomeInterface {}
8+
9+
error Error1(uint256);
10+
11+
function freeFn_1(uint256 x) pure { revert Error1(x); }
12+
13+
struct SomeStruct {
14+
uint member;
15+
}
16+
17+
contract SomeContract is ISomeContract {
18+
SomeStruct s;
19+
20+
function someFunction() public override returns (bool) {
21+
return false;
22+
}
23+
24+
function someOtherFunction() public override returns (bool) {
25+
return true;
26+
}
27+
28+
function test(ISomeInterface other) public returns (bool) {
29+
return SomeLibrary.bothFunctions(this) && SomeLibrary.bothFunctions(other);
30+
}
31+
}

contracts/project/SomeLibrary.sol

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// SPDX-License-Identifier: UNLICENSED
2+
pragma solidity ^0.8.0;
3+
4+
import { ISomeInterface } from "./ISomeInterface.sol";
5+
6+
library SomeLibrary {
7+
function bothFunctions(ISomeInterface instance) internal returns (bool) {
8+
return instance.someFunction() && instance.someOtherFunction();
9+
}
10+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// SPDX-License-Identifier: UNLICENSED
2+
pragma solidity ^0.8.0;
3+
4+
import { ISomeInterface } from "./ISomeInterface.sol";
5+
import { SomeLibrary } from "./SomeLibrary.sol";
6+
import { ISomeContract, SomeContract } from "./SomeContract.sol";
7+
8+
contract SomeOtherContract is SomeContract {
9+
function extraFunction() public returns (uint256) {
10+
return 42;
11+
}
12+
}

src/cli.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ interface Options {
2424
publicInitializers: string[];
2525
namespaced: boolean;
2626
namespaceExclude: string[];
27+
peerProject?: string;
2728
}
2829

2930
function readCommandFlags(resolveRootRelative: (p: string) => string): Options {
@@ -36,12 +37,14 @@ function readCommandFlags(resolveRootRelative: (p: string) => string): Options {
3637
W: skipWithInit = false,
3738
n: namespaced = false,
3839
N: namespaceExclude = [],
40+
q: peerProject = false,
3941
} = minimist(process.argv.slice(2));
4042
return {
4143
buildInfo,
4244
deleteOriginals,
4345
skipWithInit,
4446
namespaced,
47+
peerProject,
4548
namespaceExclude: ensureArray(namespaceExclude).map(resolveRootRelative),
4649
initializablePath: initializablePath && resolveRootRelative(initializablePath),
4750
publicInitializers: ensureArray(publicInitializers).map(resolveRootRelative),

src/index.test.ts.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Generated by [AVA](https://avajs.dev).
1212
fileName: 'ClassInheritance.sol',
1313
path: 'contracts/solc-0.6/ClassInheritanceUpgradeable.sol',
1414
source: `pragma solidity ^0.6.0;␊
15-
import "../Initializable.sol";␊
15+
import {Initializable} from "../Initializable.sol";␊
1616
1717
interface CICUpgradeable {␊
1818
function fooBar(uint a) external;␊
@@ -89,7 +89,7 @@ Generated by [AVA](https://avajs.dev).
8989
fileName: 'Override.sol',
9090
path: 'contracts/solc-0.6/OverrideUpgradeable.sol',
9191
source: `pragma solidity ^0.6.0;␊
92-
import "../Initializable.sol";␊
92+
import {Initializable} from "../Initializable.sol";␊
9393
9494
contract Parent1Upgradeable is Initializable {␊
9595
function __Parent1_init() internal onlyInitializing {␊
@@ -158,7 +158,7 @@ Generated by [AVA](https://avajs.dev).
158158
fileName: 'DiamondInheritance.sol',
159159
path: 'contracts/solc-0.6/DiamondInheritanceUpgradeable.sol',
160160
source: `pragma solidity ^0.6.0;␊
161-
import "../Initializable.sol";␊
161+
import {Initializable} from "../Initializable.sol";␊
162162
163163
contract DAUpgradeable is Initializable {␊
164164
event Log(string);␊
@@ -254,7 +254,7 @@ Generated by [AVA](https://avajs.dev).
254254
source: `pragma solidity ^0.6.0;␊
255255
256256
import "../../../ElementaryTypesUpgradeable.sol";␊
257-
import "../../../../Initializable.sol";␊
257+
import {Initializable} from "../../../../Initializable.sol";␊
258258
259259
contract DeepUpgradeable is Initializable {␊
260260
function __Deep_init() internal onlyInitializing {␊
@@ -281,7 +281,7 @@ Generated by [AVA](https://avajs.dev).
281281
fileName: 'ElementaryTypes.sol',
282282
path: 'contracts/solc-0.6/ElementaryTypesUpgradeable.sol',
283283
source: `pragma solidity ^0.6.0;␊
284-
import "../Initializable.sol";␊
284+
import {Initializable} from "../Initializable.sol";␊
285285
286286
contract ElementaryTypesUpgradeable is Initializable {␊
287287
function __ElementaryTypes_init() internal onlyInitializing {␊
@@ -325,7 +325,7 @@ Generated by [AVA](https://avajs.dev).
325325
fileName: 'ElementaryTypesWithConstructor.sol',
326326
path: 'contracts/solc-0.6/ElementaryTypesWithConstructorUpgradeable.sol',
327327
source: `pragma solidity ^0.6.0;␊
328-
import "../Initializable.sol";␊
328+
import {Initializable} from "../Initializable.sol";␊
329329
330330
contract ElementaryTypesWithConstructorUpgradeable is Initializable {␊
331331
address public owner;␊
@@ -366,7 +366,7 @@ Generated by [AVA](https://avajs.dev).
366366
fileName: 'Imported.sol',
367367
path: 'contracts/solc-0.6/ImportedUpgradeable.sol',
368368
source: `pragma solidity ^0.6.0;␊
369-
import "../Initializable.sol";␊
369+
import {Initializable} from "../Initializable.sol";␊
370370
371371
contract Imported1Upgradeable is Initializable {␊
372372
function __Imported1_init(uint256 x, uint256 y) internal onlyInitializing {␊
@@ -409,7 +409,7 @@ Generated by [AVA](https://avajs.dev).
409409
source: `pragma solidity ^0.6.0;␊
410410
411411
import "./ImportedUpgradeable.sol";␊
412-
import "../Initializable.sol";␊
412+
import {Initializable} from "../Initializable.sol";␊
413413
414414
contract LocalUpgradeable is Initializable, Imported2Upgradeable {␊
415415
function __Local_init(uint x, uint y) internal onlyInitializing {␊
@@ -437,7 +437,7 @@ Generated by [AVA](https://avajs.dev).
437437
fileName: 'SimpleInheritance.sol',
438438
path: 'contracts/solc-0.6/SimpleInheritanceUpgradeable.sol',
439439
source: `pragma solidity ^0.6.0;␊
440-
import "../Initializable.sol";␊
440+
import {Initializable} from "../Initializable.sol";␊
441441
442442
contract SIAUpgradeable is Initializable {␊
443443
uint256 public foo;␊
@@ -509,7 +509,7 @@ Generated by [AVA](https://avajs.dev).
509509
fileName: 'StringConstructor.sol',
510510
path: 'contracts/solc-0.6/StringConstructorUpgradeable.sol',
511511
source: `pragma solidity ^0.6.0;␊
512-
import "../Initializable.sol";␊
512+
import {Initializable} from "../Initializable.sol";␊
513513
514514
contract StringConstructorUpgradeable is Initializable {␊
515515
@@ -557,7 +557,7 @@ Generated by [AVA](https://avajs.dev).
557557
fileName: 'AbstractContract.sol',
558558
path: 'contracts/solc-0.6/AbstractContractUpgradeable.sol',
559559
source: `pragma solidity ^0.6.0;␊
560-
import "../Initializable.sol";␊
560+
import {Initializable} from "../Initializable.sol";␊
561561
562562
abstract contract AbstractContractUpgradeable is Initializable {␊
563563
function __AbstractContract_init() internal onlyInitializing {␊
@@ -598,7 +598,7 @@ Generated by [AVA](https://avajs.dev).
598598
fileName: 'Rename.sol',
599599
path: 'contracts/solc-0.6/RenameUpgradeable.sol',
600600
source: `pragma solidity ^0.6.0;␊
601-
import "../Initializable.sol";␊
601+
import {Initializable} from "../Initializable.sol";␊
602602
603603
library RenameLibraryUpgradeable {␊
604604
function test() external {␊

src/index.test.ts.snap

16 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)