Skip to content

Commit

Permalink
Transpile 8198205
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Jun 1, 2023
1 parent bd21439 commit 8b8c14a
Show file tree
Hide file tree
Showing 10 changed files with 297 additions and 212 deletions.
8 changes: 3 additions & 5 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ concurrency:
group: checks-${{ github.ref }}
cancel-in-progress: true

env:
NODE_OPTIONS: --max_old_space_size=5120

jobs:
lint:
runs-on: ubuntu-latest
Expand All @@ -25,7 +28,6 @@ jobs:
runs-on: ubuntu-latest
env:
FORCE_COLOR: 1
NODE_OPTIONS: --max_old_space_size=4096
GAS: true
steps:
- uses: actions/checkout@v3
Expand Down Expand Up @@ -56,8 +58,6 @@ jobs:
run: bash scripts/upgradeable/transpile.sh
- name: Run tests
run: npm run test
env:
NODE_OPTIONS: --max_old_space_size=4096
- name: Check linearisation of the inheritance graph
run: npm run test:inheritance
- name: Check storage layout
Expand Down Expand Up @@ -85,8 +85,6 @@ jobs:
- name: Set up environment
uses: ./.github/actions/setup
- run: npm run coverage
env:
NODE_OPTIONS: --max_old_space_size=4096
- uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
Expand Down
37 changes: 35 additions & 2 deletions contracts/mocks/WithInit.sol
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,39 @@ contract CrossChainEnabledPolygonChildMockUpgradeableWithInit is CrossChainEnabl

}
}
import "./docs/governance/MyGovernorUpgradeable.sol";

contract MyGovernorUpgradeableWithInit is MyGovernorUpgradeable {
constructor(
IVotesUpgradeable _token,
TimelockControllerUpgradeable _timelock
) payable initializer {
__MyGovernor_init(_token, _timelock);
}
}
import "./docs/governance/MyTokenUpgradeable.sol";

contract MyTokenUpgradeableWithInit is MyTokenUpgradeable {
constructor() payable initializer {
__MyToken_init();
}
}
import "./docs/governance/MyTokenTimestampBasedUpgradeable.sol";

contract MyTokenTimestampBasedUpgradeableWithInit is MyTokenTimestampBasedUpgradeable {
constructor() payable initializer {
__MyTokenTimestampBased_init();
}
}
import "./docs/governance/MyTokenWrappedUpgradeable.sol";

contract MyTokenWrappedUpgradeableWithInit is MyTokenWrappedUpgradeable {
constructor(
IERC20Upgradeable wrappedToken
) payable initializer {
__MyTokenWrapped_init(wrappedToken);
}
}
import "./DummyImplementationUpgradeable.sol";

contract DummyImplementationUpgradeableWithInit is DummyImplementationUpgradeable {
Expand Down Expand Up @@ -565,12 +598,12 @@ contract MyGovernor2UpgradeableWithInit is MyGovernor2Upgradeable {
}
import "./wizard/MyGovernor3Upgradeable.sol";

contract MyGovernorUpgradeableWithInit is MyGovernorUpgradeable {
contract MyGovernor3UpgradeableWithInit is MyGovernor3Upgradeable {
constructor(
IVotesUpgradeable _token,
TimelockControllerUpgradeable _timelock
) payable initializer {
__MyGovernor_init(_token, _timelock);
__MyGovernor3_init(_token, _timelock);
}
}
import "../proxy/ERC1967/ERC1967UpgradeUpgradeable.sol";
Expand Down
107 changes: 107 additions & 0 deletions contracts/mocks/docs/governance/MyGovernorUpgradeable.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

import "../../../governance/GovernorUpgradeable.sol";
import "../../../governance/compatibility/GovernorCompatibilityBravoUpgradeable.sol";
import "../../../governance/extensions/GovernorVotesUpgradeable.sol";
import "../../../governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol";
import "../../../governance/extensions/GovernorTimelockControlUpgradeable.sol";
import "../../../proxy/utils/Initializable.sol";

contract MyGovernorUpgradeable is
Initializable, GovernorUpgradeable,
GovernorCompatibilityBravoUpgradeable,
GovernorVotesUpgradeable,
GovernorVotesQuorumFractionUpgradeable,
GovernorTimelockControlUpgradeable
{
function __MyGovernor_init(
IVotesUpgradeable _token,
TimelockControllerUpgradeable _timelock
) internal onlyInitializing {
__EIP712_init_unchained("MyGovernor", version());
__Governor_init_unchained("MyGovernor");
__GovernorVotes_init_unchained(_token);
__GovernorVotesQuorumFraction_init_unchained(4);
__GovernorTimelockControl_init_unchained(_timelock);
}

function __MyGovernor_init_unchained(
IVotesUpgradeable,
TimelockControllerUpgradeable
) internal onlyInitializing {}

function votingDelay() public pure override returns (uint256) {
return 7200; // 1 day
}

function votingPeriod() public pure override returns (uint256) {
return 50400; // 1 week
}

function proposalThreshold() public pure override returns (uint256) {
return 0;
}

// The functions below are overrides required by Solidity.

function state(
uint256 proposalId
) public view override(GovernorUpgradeable, IGovernorUpgradeable, GovernorTimelockControlUpgradeable) returns (ProposalState) {
return super.state(proposalId);
}

function propose(
address[] memory targets,
uint256[] memory values,
bytes[] memory calldatas,
string memory description
) public override(GovernorUpgradeable, GovernorCompatibilityBravoUpgradeable, IGovernorUpgradeable) returns (uint256) {
return super.propose(targets, values, calldatas, description);
}

function cancel(
address[] memory targets,
uint256[] memory values,
bytes[] memory calldatas,
bytes32 descriptionHash
) public override(GovernorUpgradeable, GovernorCompatibilityBravoUpgradeable, IGovernorUpgradeable) returns (uint256) {
return super.cancel(targets, values, calldatas, descriptionHash);
}

function _execute(
uint256 proposalId,
address[] memory targets,
uint256[] memory values,
bytes[] memory calldatas,
bytes32 descriptionHash
) internal override(GovernorUpgradeable, GovernorTimelockControlUpgradeable) {
super._execute(proposalId, targets, values, calldatas, descriptionHash);
}

function _cancel(
address[] memory targets,
uint256[] memory values,
bytes[] memory calldatas,
bytes32 descriptionHash
) internal override(GovernorUpgradeable, GovernorTimelockControlUpgradeable) returns (uint256) {
return super._cancel(targets, values, calldatas, descriptionHash);
}

function _executor() internal view override(GovernorUpgradeable, GovernorTimelockControlUpgradeable) returns (address) {
return super._executor();
}

function supportsInterface(
bytes4 interfaceId
) public view override(GovernorUpgradeable, IERC165Upgradeable, GovernorTimelockControlUpgradeable) returns (bool) {
return super.supportsInterface(interfaceId);
}

/**
* @dev This empty reserved space is put in place to allow future versions to add new
* variables without shifting down storage in the inheritance chain.
* See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
*/
uint256[50] private __gap;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

import "../../../token/ERC20/ERC20Upgradeable.sol";
import "../../../token/ERC20/extensions/ERC20PermitUpgradeable.sol";
import "../../../token/ERC20/extensions/ERC20VotesUpgradeable.sol";
import "../../../proxy/utils/Initializable.sol";

contract MyTokenTimestampBasedUpgradeable is Initializable, ERC20Upgradeable, ERC20PermitUpgradeable, ERC20VotesUpgradeable {
function __MyTokenTimestampBased_init() internal onlyInitializing {
__ERC20_init_unchained("MyTokenTimestampBased", "MTK");
__EIP712_init_unchained("MyTokenTimestampBased", "1");
__ERC20Permit_init_unchained("MyTokenTimestampBased");
}

function __MyTokenTimestampBased_init_unchained() internal onlyInitializing {}

// Overrides IERC6372 functions to make the token & governor timestamp-based

function clock() public view override returns (uint48) {
return uint48(block.timestamp);
}

// solhint-disable-next-line func-name-mixedcase
function CLOCK_MODE() public pure override returns (string memory) {
return "mode=timestamp";
}

// The functions below are overrides required by Solidity.

function _afterTokenTransfer(address from, address to, uint256 amount) internal override(ERC20Upgradeable, ERC20VotesUpgradeable) {
super._afterTokenTransfer(from, to, amount);
}

function _mint(address to, uint256 amount) internal override(ERC20Upgradeable, ERC20VotesUpgradeable) {
super._mint(to, amount);
}

function _burn(address account, uint256 amount) internal override(ERC20Upgradeable, ERC20VotesUpgradeable) {
super._burn(account, amount);
}

/**
* @dev This empty reserved space is put in place to allow future versions to add new
* variables without shifting down storage in the inheritance chain.
* See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
*/
uint256[50] private __gap;
}
38 changes: 38 additions & 0 deletions contracts/mocks/docs/governance/MyTokenUpgradeable.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

import "../../../token/ERC20/ERC20Upgradeable.sol";
import "../../../token/ERC20/extensions/ERC20PermitUpgradeable.sol";
import "../../../token/ERC20/extensions/ERC20VotesUpgradeable.sol";
import "../../../proxy/utils/Initializable.sol";

contract MyTokenUpgradeable is Initializable, ERC20Upgradeable, ERC20PermitUpgradeable, ERC20VotesUpgradeable {
function __MyToken_init() internal onlyInitializing {
__ERC20_init_unchained("MyToken", "MTK");
__EIP712_init_unchained("MyToken", "1");
__ERC20Permit_init_unchained("MyToken");
}

function __MyToken_init_unchained() internal onlyInitializing {}

// The functions below are overrides required by Solidity.

function _afterTokenTransfer(address from, address to, uint256 amount) internal override(ERC20Upgradeable, ERC20VotesUpgradeable) {
super._afterTokenTransfer(from, to, amount);
}

function _mint(address to, uint256 amount) internal override(ERC20Upgradeable, ERC20VotesUpgradeable) {
super._mint(to, amount);
}

function _burn(address account, uint256 amount) internal override(ERC20Upgradeable, ERC20VotesUpgradeable) {
super._burn(account, amount);
}

/**
* @dev This empty reserved space is put in place to allow future versions to add new
* variables without shifting down storage in the inheritance chain.
* See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
*/
uint256[50] private __gap;
}
48 changes: 48 additions & 0 deletions contracts/mocks/docs/governance/MyTokenWrappedUpgradeable.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

import "../../../token/ERC20/ERC20Upgradeable.sol";
import "../../../token/ERC20/extensions/ERC20PermitUpgradeable.sol";
import "../../../token/ERC20/extensions/ERC20VotesUpgradeable.sol";
import "../../../token/ERC20/extensions/ERC20WrapperUpgradeable.sol";
import "../../../proxy/utils/Initializable.sol";

contract MyTokenWrappedUpgradeable is Initializable, ERC20Upgradeable, ERC20PermitUpgradeable, ERC20VotesUpgradeable, ERC20WrapperUpgradeable {
function __MyTokenWrapped_init(
IERC20Upgradeable wrappedToken
) internal onlyInitializing {
__ERC20_init_unchained("MyTokenWrapped", "MTK");
__EIP712_init_unchained("MyTokenWrapped", "1");
__ERC20Permit_init_unchained("MyTokenWrapped");
__ERC20Wrapper_init_unchained(wrappedToken);
}

function __MyTokenWrapped_init_unchained(
IERC20Upgradeable
) internal onlyInitializing {}

// The functions below are overrides required by Solidity.

function decimals() public pure override(ERC20Upgradeable, ERC20WrapperUpgradeable) returns (uint8) {
return 18;
}

function _afterTokenTransfer(address from, address to, uint256 amount) internal override(ERC20Upgradeable, ERC20VotesUpgradeable) {
super._afterTokenTransfer(from, to, amount);
}

function _mint(address to, uint256 amount) internal override(ERC20Upgradeable, ERC20VotesUpgradeable) {
super._mint(to, amount);
}

function _burn(address account, uint256 amount) internal override(ERC20Upgradeable, ERC20VotesUpgradeable) {
super._burn(account, amount);
}

/**
* @dev This empty reserved space is put in place to allow future versions to add new
* variables without shifting down storage in the inheritance chain.
* See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
*/
uint256[50] private __gap;
}
6 changes: 3 additions & 3 deletions contracts/mocks/wizard/MyGovernor3Upgradeable.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ import "../../governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol";
import "../../governance/extensions/GovernorTimelockControlUpgradeable.sol";
import "../../proxy/utils/Initializable.sol";

contract MyGovernorUpgradeable is
contract MyGovernor3Upgradeable is
Initializable, GovernorUpgradeable,
GovernorTimelockControlUpgradeable,
GovernorCompatibilityBravoUpgradeable,
GovernorVotesUpgradeable,
GovernorVotesQuorumFractionUpgradeable
{
function __MyGovernor_init(
function __MyGovernor3_init(
IVotesUpgradeable _token,
TimelockControllerUpgradeable _timelock
) internal onlyInitializing {
Expand All @@ -26,7 +26,7 @@ contract MyGovernorUpgradeable is
__GovernorVotesQuorumFraction_init_unchained(4);
}

function __MyGovernor_init_unchained(
function __MyGovernor3_init_unchained(
IVotesUpgradeable,
TimelockControllerUpgradeable
) internal onlyInitializing {}
Expand Down
Loading

0 comments on commit 8b8c14a

Please sign in to comment.