Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove empty unchained function calls #68

Merged
merged 27 commits into from Jan 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
70e21a6
Prevent call to unchained function if empty
JulissaDantes Jan 14, 2022
2051d49
Remove extra variable assignment
JulissaDantes Jan 14, 2022
f98c500
Remove declaration
JulissaDantes Jan 14, 2022
601cea6
Add character on the right initializer
JulissaDantes Jan 14, 2022
a7dd9f4
Remove lint warning
JulissaDantes Jan 14, 2022
d259e33
Move characters to the right initializer
JulissaDantes Jan 14, 2022
c10f53a
Include logic in cases where there is not a constructor
JulissaDantes Jan 14, 2022
8983a21
Update local npm version and reinstalled packages
JulissaDantes Jan 17, 2022
d1d29d5
Remove unchained body helper
JulissaDantes Jan 17, 2022
9f385e6
Run lint
JulissaDantes Jan 17, 2022
1fe0bd0
Update modifier check
JulissaDantes Jan 18, 2022
0023ea1
Remove unused variables on the init method definition
JulissaDantes Jan 19, 2022
00143fa
Update isEmpty
JulissaDantes Jan 19, 2022
1e36528
Add explicit types
JulissaDantes Jan 19, 2022
a6cedcd
Update lock-file
JulissaDantes Jan 19, 2022
19e727a
Merge branch 'master' into EmptyUnchained
frangio Jan 19, 2022
58949be
Improve format
JulissaDantes Jan 19, 2022
d52f80c
Update snaps
JulissaDantes Jan 19, 2022
95cdf90
Update regex
JulissaDantes Jan 19, 2022
31620b5
Update test snaps
JulissaDantes Jan 19, 2022
0252790
Refactor getUnusedArguments
JulissaDantes Jan 20, 2022
4268ed9
Remove logic to check init variablestsc
JulissaDantes Jan 21, 2022
4f4f73f
refactor to reuse code
frangio Jan 21, 2022
dde1fb6
lint
frangio Jan 21, 2022
4807d4c
Update test snapshots
JulissaDantes Jan 24, 2022
d4acd1e
Update inheritance type check and add interface inheritance test case
JulissaDantes Jan 24, 2022
6dfe6ae
invert check
frangio Jan 24, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
63 changes: 61 additions & 2 deletions contracts/TransformConstructor.sol
Expand Up @@ -37,14 +37,18 @@ contract Bar3 is Bar2 {
}

contract Foo5 {
constructor(function () external f) public {}
constructor(function () external f) public {
f();
}
}

contract Foo6 {
constructor(
uint a,
uint b
) public {}
) public {
a = a + b;
}
}

contract Foo7 {
Expand All @@ -55,3 +59,58 @@ contract Foo7 {
a = _a;
}
}

contract Foo8 {

modifier hasModifier() {
_;
}

constructor() public hasModifier {
}
}

contract Foo9 {
constructor(
uint a,
uint b
) public {
a = 0;
b = 0;
}
}

contract Foo10 is Foo7(123) {

uint bar = 1;
}

contract Foo11 is Foo7 {

modifier hasModifier() {
_;
}

constructor(uint a) Foo7(a) public hasModifier {
}
}

contract Foo12 is Foo7 {

constructor(uint a) Foo7(a) public {
}
}

contract Foo13 is Foo4 {
constructor() public { }
}

contract Foo14 is Foo7 {

modifier hasModifier() {
_;
}

constructor(uint a, uint b) Foo7(a) public hasModifier() {
}
}
12 changes: 12 additions & 0 deletions contracts/solc-0.6/ClassInheritance.sol
@@ -1,5 +1,9 @@
pragma solidity ^0.6.0;

interface CIC {
function fooBar(uint a) external;
}

contract CIA {
uint256 public foo;
event log(string);
Expand All @@ -12,3 +16,11 @@ contract CIA {
contract CIB is CIA(324) {
uint256 public val = 123;
}

contract CID is CIC {
uint256 public val = 123;

function fooBar(uint a) override external{

}
}
32 changes: 20 additions & 12 deletions src/index.test.ts.md
Expand Up @@ -14,6 +14,10 @@ Generated by [AVA](https://avajs.dev).
source: `pragma solidity ^0.6.0;␊
import "../Initializable.sol";␊
interface CICUpgradeable {␊
function fooBar(uint a) external;␊
}␊
contract CIAUpgradeable is Initializable {␊
uint256 public foo;␊
event log(string);␊
Expand All @@ -40,6 +44,22 @@ Generated by [AVA](https://avajs.dev).
uint256 public val;␊
uint256[49] private __gap;␊
}␊
contract CIDUpgradeable is Initializable, CICUpgradeable {␊
function __CID_init() internal onlyInitializing {␊
__CID_init_unchained();␊
}␊
function __CID_init_unchained() internal onlyInitializing {␊
val = 123;␊
}␊
uint256 public val;␊
function fooBar(uint a) override external{␊
}␊
uint256[49] private __gap;␊
}␊
`,
}

Expand All @@ -55,7 +75,6 @@ Generated by [AVA](https://avajs.dev).
contract Parent1Upgradeable is Initializable {␊
function __Parent1_init() internal onlyInitializing {␊
__Parent1_init_unchained();␊
}␊
function __Parent1_init_unchained() internal onlyInitializing {␊
Expand All @@ -70,7 +89,6 @@ Generated by [AVA](https://avajs.dev).
contract Parent2Upgradeable is Initializable {␊
function __Parent2_init() internal onlyInitializing {␊
__Parent2_init_unchained();␊
}␊
function __Parent2_init_unchained() internal onlyInitializing {␊
Expand All @@ -82,9 +100,6 @@ Generated by [AVA](https://avajs.dev).
contract ChildUpgradeable is Initializable, Parent1Upgradeable, Parent2Upgradeable {␊
function __Child_init() internal onlyInitializing {␊
__Parent1_init_unchained();␊
__Parent2_init_unchained();␊
__Child_init_unchained();␊
}␊
function __Child_init_unchained() internal onlyInitializing {␊
Expand Down Expand Up @@ -183,7 +198,6 @@ Generated by [AVA](https://avajs.dev).
contract DeepUpgradeable is Initializable {␊
function __Deep_init() internal onlyInitializing {␊
__Deep_init_unchained();␊
}␊
function __Deep_init_unchained() internal onlyInitializing {␊
Expand Down Expand Up @@ -278,7 +292,6 @@ Generated by [AVA](https://avajs.dev).
contract Imported1Upgradeable is Initializable {␊
function __Imported1_init(uint256 x, uint256 y) internal onlyInitializing {␊
__Imported1_init_unchained(x, y);␊
}␊
function __Imported1_init_unchained(uint256, uint256) internal onlyInitializing { }␊
Expand All @@ -288,7 +301,6 @@ Generated by [AVA](https://avajs.dev).
contract Imported2Upgradeable is Initializable, Imported1Upgradeable {␊
function __Imported2_init(uint256 x, uint256 y) internal onlyInitializing {␊
__Imported1_init_unchained(x, y);␊
__Imported2_init_unchained(x, y);␊
}␊
function __Imported2_init_unchained(uint256, uint256) internal onlyInitializing { }␊
Expand All @@ -313,7 +325,6 @@ Generated by [AVA](https://avajs.dev).
function __Local_init(uint x, uint y) internal onlyInitializing {␊
__Imported1_init_unchained(x, y);␊
__Imported2_init_unchained(x, y);␊
__Local_init_unchained(x, y);␊
}␊
function __Local_init_unchained(uint, uint) internal onlyInitializing { }␊
Expand Down Expand Up @@ -388,7 +399,6 @@ Generated by [AVA](https://avajs.dev).
contract StringConstructorUpgradeable is Initializable {␊
function __StringConstructor_init(string memory message) internal onlyInitializing {␊
__StringConstructor_init_unchained(message);␊
JulissaDantes marked this conversation as resolved.
Show resolved Hide resolved
}␊
function __StringConstructor_init_unchained(string memory) internal onlyInitializing {␊
Expand Down Expand Up @@ -425,7 +435,6 @@ Generated by [AVA](https://avajs.dev).
abstract contract AbstractContractUpgradeable is Initializable {␊
function __AbstractContract_init() internal onlyInitializing {␊
__AbstractContract_init_unchained();␊
}␊
function __AbstractContract_init_unchained() internal onlyInitializing {␊
Expand Down Expand Up @@ -466,7 +475,6 @@ Generated by [AVA](https://avajs.dev).
contract RenameContractUpgradeable is Initializable {␊
function __RenameContract_init() internal onlyInitializing {␊
__RenameContract_init_unchained();␊
}␊
function __RenameContract_init_unchained() internal onlyInitializing {␊
Expand Down
Binary file modified src/index.test.ts.snap
Binary file not shown.
1 change: 0 additions & 1 deletion src/transform-0.8.test.ts.md
Expand Up @@ -96,7 +96,6 @@ Generated by [AVA](https://avajs.dev).
abstract contract T3 is T2 {␊
function __T3_init() internal onlyInitializing {␊
__T3_init_unchained();␊
}␊
function __T3_init_unchained() internal onlyInitializing {␊
Expand Down
Binary file modified src/transform-0.8.test.ts.snap
Binary file not shown.
2 changes: 1 addition & 1 deletion src/transform.test.ts
Expand Up @@ -137,7 +137,7 @@ test('append initializable import custom', t => {
t.snapshot(t.context.transform.results()[file]);
});

test('transform constructor', t => {
test.only('transform constructor', t => {
const file = 'contracts/TransformConstructor.sol';
t.context.transform.apply(transformConstructor);
t.context.transform.apply(removeLeftoverConstructorHead);
Expand Down
112 changes: 100 additions & 12 deletions src/transform.test.ts.md
Expand Up @@ -214,7 +214,6 @@ Generated by [AVA](https://avajs.dev).
contract Foo1 {␊
function __Foo1_init() internal onlyInitializing {␊
__Foo1_init_unchained();␊
}␊
function __Foo1_init_unchained() internal onlyInitializing {␊
Expand Down Expand Up @@ -258,7 +257,6 @@ Generated by [AVA](https://avajs.dev).
contract Bar1 {␊
function __Bar1_init() internal onlyInitializing {␊
__Bar1_init_unchained();␊
}␊
function __Bar1_init_unchained() internal onlyInitializing {␊
Expand All @@ -268,8 +266,6 @@ Generated by [AVA](https://avajs.dev).
contract Bar2 is Bar1 {␊
function __Bar2_init() internal onlyInitializing {␊
__Bar1_init_unchained();␊
__Bar2_init_unchained();␊
}␊
function __Bar2_init_unchained() internal onlyInitializing {␊
Expand All @@ -279,9 +275,6 @@ Generated by [AVA](https://avajs.dev).
contract Bar3 is Bar2 {␊
function __Bar3_init() internal onlyInitializing {␊
__Bar1_init_unchained();␊
__Bar2_init_unchained();␊
__Bar3_init_unchained();␊
}␊
function __Bar3_init_unchained() internal onlyInitializing {␊
Expand All @@ -294,7 +287,9 @@ Generated by [AVA](https://avajs.dev).
__Foo5_init_unchained(f);␊
}␊
function __Foo5_init_unchained(function () external) internal onlyInitializing {}␊
function __Foo5_init_unchained(function () external f) internal onlyInitializing {␊
f();␊
}␊
}␊
contract Foo6 {␊
Expand All @@ -306,9 +301,11 @@ Generated by [AVA](https://avajs.dev).
}␊
function __Foo6_init_unchained(␊
uint,␊
uint␊
) internal onlyInitializing {}␊
uint a,␊
uint b␊
) internal onlyInitializing {␊
a = a + b;␊
}␊
}␊
contract Foo7 {␊
Expand All @@ -325,7 +322,98 @@ Generated by [AVA](https://avajs.dev).
a = _a;␊
}␊
}␊
`
contract Foo8 {␊
modifier hasModifier() {␊
_;␊
}␊
function __Foo8_init() internal onlyInitializing {␊
__Foo8_init_unchained();␊
}␊
function __Foo8_init_unchained() internal onlyInitializing {␊
JulissaDantes marked this conversation as resolved.
Show resolved Hide resolved
}␊
}␊
contract Foo9 {␊
function __Foo9_init(␊
uint a,␊
uint b␊
) internal onlyInitializing {␊
__Foo9_init_unchained(a, b);␊
}␊
function __Foo9_init_unchained(␊
uint a,␊
uint b␊
) internal onlyInitializing {␊
a = 0;␊
b = 0;␊
}␊
}␊
contract Foo10 is Foo7(123) {␊
function __Foo10_init() internal onlyInitializing {␊
__Foo7_init_unchained(123);␊
__Foo10_init_unchained();␊
}␊
function __Foo10_init_unchained() internal onlyInitializing {␊
bar = 1;␊
}␊
uint bar = 1;␊
}␊
contract Foo11 is Foo7 {␊
modifier hasModifier() {␊
_;␊
}␊
function __Foo11_init(uint a) internal onlyInitializing {␊
__Foo7_init_unchained(a);␊
__Foo11_init_unchained(a);␊
}␊
function __Foo11_init_unchained(uint) internal onlyInitializing {␊
}␊
}␊
contract Foo12 is Foo7 {␊
function __Foo12_init(uint a) internal onlyInitializing {␊
__Foo7_init_unchained(a);␊
}␊
function __Foo12_init_unchained(uint) internal onlyInitializing {␊
}␊
}␊
contract Foo13 is Foo4 {␊
function __Foo13_init() internal onlyInitializing {␊
__Foo4_init_unchained();␊
}␊
function __Foo13_init_unchained() internal onlyInitializing { }␊
}␊
contract Foo14 is Foo7 {␊
modifier hasModifier() {␊
_;␊
}␊
function __Foo14_init(uint a, uint b) internal onlyInitializing {␊
__Foo7_init_unchained(a);␊
__Foo14_init_unchained(a, b);␊
}␊
function __Foo14_init_unchained(uint, uint) internal onlyInitializing {␊
}␊
}`

## fix new statement

Expand Down
Binary file modified src/transform.test.ts.snap
Binary file not shown.