diff --git a/README.md b/README.md index e7aaca6e2..423ae1005 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ forge install foundry-rs/forge-std ``` ## Contracts + ### stdError This is a helper contract for errors and reverts. In Forge, this contract is particularly helpful for the `expectRevert` cheatcode, as it provides all compiler built-in errors. @@ -45,11 +46,12 @@ contract ErrorsTest { ### stdStorage -This is a rather large contract due to all of the overloading to make the UX decent. Primarily, it is a wrapper around the `record` and `accesses` cheatcodes. It can *always* find and write the storage slot(s) associated with a particular variable without knowing the storage layout. The one _major_ caveat to this is while a slot can be found for packed storage variables, we can't write to that variable safely. If a user tries to write to a packed slot, the execution throws an error, unless it is uninitialized (`bytes32(0)`). +This is a rather large contract due to all of the overloading to make the UX decent. Primarily, it is a wrapper around the `record` and `accesses` cheatcodes. It can _always_ find and write the storage slot(s) associated with a particular variable without knowing the storage layout. The one _major_ caveat to this is while a slot can be found for packed storage variables, we can't write to that variable safely. If a user tries to write to a packed slot, the execution throws an error, unless it is uninitialized (`bytes32(0)`). This works by recording all `SLOAD`s and `SSTORE`s during a function call. If there is a single slot read or written to, it immediately returns the slot. Otherwise, behind the scenes, we iterate through and check each one (assuming the user passed in a `depth` parameter). If the variable is a struct, you can pass in a `depth` parameter which is basically the field depth. I.e.: + ```solidity struct T { // depth 0 @@ -167,11 +169,11 @@ contract Storage { This is a wrapper over miscellaneous cheatcodes that need wrappers to be more dev friendly. Currently there are only functions related to `prank`. In general, users may expect ETH to be put into an address on `prank`, but this is not the case for safety reasons. Explicitly this `hoax` function should only be used for addresses that have expected balances as it will get overwritten. If an address already has ETH, you should just use `prank`. If you want to change that balance explicitly, just use `deal`. If you want to do both, `hoax` is also right for you. - #### Example usage: + ```solidity -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity ^0.8.0; import "forge-std/Test.sol"; @@ -255,9 +257,9 @@ First, see if the answer to your question can be found in [book](https://getfoun If the answer is not there: -- Join the [support Telegram](https://t.me/foundry_support) to get help, or -- Open a [discussion](https://github.com/foundry-rs/foundry/discussions/new/choose) with your question, or -- Open an issue with [the bug](https://github.com/foundry-rs/foundry/issues/new/choose) +- Join the [support Telegram](https://t.me/foundry_support) to get help, or +- Open a [discussion](https://github.com/foundry-rs/foundry/discussions/new/choose) with your question, or +- Open an issue with [the bug](https://github.com/foundry-rs/foundry/issues/new/choose) If you want to contribute, or follow along with contributor discussion, you can use our [main telegram](https://t.me/foundry_rs) to chat with us about the development of Foundry! diff --git a/src/Base.sol b/src/Base.sol index 52a508210..1e3cbaffa 100644 --- a/src/Base.sol +++ b/src/Base.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; import {StdStorage} from "./StdStorage.sol"; diff --git a/src/Config.sol b/src/Config.sol index 1c63c8721..3d35bb583 100644 --- a/src/Config.sol +++ b/src/Config.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity ^0.8.13; import {console} from "./console.sol"; diff --git a/src/LibVariable.sol b/src/LibVariable.sol index c46b15328..453e3154b 100644 --- a/src/LibVariable.sol +++ b/src/LibVariable.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity ^0.8.13; // Enable globally. diff --git a/src/Script.sol b/src/Script.sol index a2e2aa1cd..88ede9bee 100644 --- a/src/Script.sol +++ b/src/Script.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; // 💬 ABOUT diff --git a/src/StdAssertions.sol b/src/StdAssertions.sol index 45418f2c4..fd590a443 100644 --- a/src/StdAssertions.sol +++ b/src/StdAssertions.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/src/StdChains.sol b/src/StdChains.sol index 2061ba343..775169ebd 100644 --- a/src/StdChains.sol +++ b/src/StdChains.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/src/StdCheats.sol b/src/StdCheats.sol index 59bfea8b2..af3353c80 100644 --- a/src/StdCheats.sol +++ b/src/StdCheats.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/src/StdConfig.sol b/src/StdConfig.sol index 161e31714..f208ea4de 100644 --- a/src/StdConfig.sol +++ b/src/StdConfig.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity ^0.8.13; import {VmSafe} from "./Vm.sol"; diff --git a/src/StdConstants.sol b/src/StdConstants.sol index 2047d2b33..a5a0a4ba1 100644 --- a/src/StdConstants.sol +++ b/src/StdConstants.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; import {IMulticall3} from "./interfaces/IMulticall3.sol"; diff --git a/src/StdError.sol b/src/StdError.sol index a302191fa..32753881c 100644 --- a/src/StdError.sol +++ b/src/StdError.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 // Panics work for versions >=0.8.0, but we lowered the pragma to make this compatible with Test pragma solidity >=0.6.2 <0.9.0; diff --git a/src/StdInvariant.sol b/src/StdInvariant.sol index 056db98fc..a00d90852 100644 --- a/src/StdInvariant.sol +++ b/src/StdInvariant.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/src/StdJson.sol b/src/StdJson.sol index 193f89a67..1eb569261 100644 --- a/src/StdJson.sol +++ b/src/StdJson.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.0 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/src/StdMath.sol b/src/StdMath.sol index 0fe610663..7ce287d2e 100644 --- a/src/StdMath.sol +++ b/src/StdMath.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; library stdMath { diff --git a/src/StdStorage.sol b/src/StdStorage.sol index 50b5f4c88..42883a56e 100644 --- a/src/StdStorage.sol +++ b/src/StdStorage.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; import {Vm} from "./Vm.sol"; diff --git a/src/StdStyle.sol b/src/StdStyle.sol index d371e0c60..5920adb0c 100644 --- a/src/StdStyle.sol +++ b/src/StdStyle.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.4.22 <0.9.0; import {VmSafe} from "./Vm.sol"; diff --git a/src/StdToml.sol b/src/StdToml.sol index 7ea92e26b..e7c4b17e0 100644 --- a/src/StdToml.sol +++ b/src/StdToml.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.0 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/src/StdUtils.sol b/src/StdUtils.sol index e4b3135ec..e822c1736 100644 --- a/src/StdUtils.sol +++ b/src/StdUtils.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/src/Test.sol b/src/Test.sol index 11b18f29f..70a392aba 100644 --- a/src/Test.sol +++ b/src/Test.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/src/console.sol b/src/console.sol index 4fdb6679e..321553180 100644 --- a/src/console.sol +++ b/src/console.sol @@ -1,30 +1,22 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.4.22 <0.9.0; library console { - address constant CONSOLE_ADDRESS = - 0x000000000000000000636F6e736F6c652e6c6f67; + address constant CONSOLE_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; function _sendLogPayloadImplementation(bytes memory payload) internal view { address consoleAddress = CONSOLE_ADDRESS; /// @solidity memory-safe-assembly assembly { - pop( - staticcall( - gas(), - consoleAddress, - add(payload, 32), - mload(payload), - 0, - 0 - ) - ) + pop(staticcall(gas(), consoleAddress, add(payload, 32), mload(payload), 0, 0)) } } - function _castToPure( - function(bytes memory) internal view fnIn - ) internal pure returns (function(bytes memory) pure fnOut) { + function _castToPure(function(bytes memory) internal view fnIn) + internal + pure + returns (function(bytes memory) pure fnOut) + { assembly { fnOut := fnIn } diff --git a/src/console2.sol b/src/console2.sol index 03531d91d..ebf935f6e 100644 --- a/src/console2.sol +++ b/src/console2.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.4.22 <0.9.0; import {console as console2} from "./console.sol"; diff --git a/src/interfaces/IERC1155.sol b/src/interfaces/IERC1155.sol index ffc82984a..11ae47e67 100644 --- a/src/interfaces/IERC1155.sol +++ b/src/interfaces/IERC1155.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2; import {IERC165} from "./IERC165.sol"; diff --git a/src/interfaces/IERC165.sol b/src/interfaces/IERC165.sol index 9af4bf800..391366310 100644 --- a/src/interfaces/IERC165.sol +++ b/src/interfaces/IERC165.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2; interface IERC165 { diff --git a/src/interfaces/IERC20.sol b/src/interfaces/IERC20.sol index ba40806c3..52190e413 100644 --- a/src/interfaces/IERC20.sol +++ b/src/interfaces/IERC20.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2; /// @dev Interface of the ERC20 standard as defined in the EIP. diff --git a/src/interfaces/IERC4626.sol b/src/interfaces/IERC4626.sol index c645a0fec..0e51cf33b 100644 --- a/src/interfaces/IERC4626.sol +++ b/src/interfaces/IERC4626.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2; import {IERC20} from "./IERC20.sol"; diff --git a/src/interfaces/IERC6909.sol b/src/interfaces/IERC6909.sol index 6e11cb460..4e6a16b30 100644 --- a/src/interfaces/IERC6909.sol +++ b/src/interfaces/IERC6909.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2; import {IERC165} from "./IERC165.sol"; diff --git a/src/interfaces/IERC721.sol b/src/interfaces/IERC721.sol index 21a4a94de..120222d23 100644 --- a/src/interfaces/IERC721.sol +++ b/src/interfaces/IERC721.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2; import {IERC165} from "./IERC165.sol"; diff --git a/src/interfaces/IERC7540.sol b/src/interfaces/IERC7540.sol index 9b3ca08bd..578e27988 100644 --- a/src/interfaces/IERC7540.sol +++ b/src/interfaces/IERC7540.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2; import {IERC7575} from "./IERC7575.sol"; diff --git a/src/interfaces/IERC7575.sol b/src/interfaces/IERC7575.sol index 207e3e7fe..10ae25aff 100644 --- a/src/interfaces/IERC7575.sol +++ b/src/interfaces/IERC7575.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2; import {IERC165} from "./IERC165.sol"; diff --git a/src/interfaces/IMulticall3.sol b/src/interfaces/IMulticall3.sol index 3b79851b4..9da2a9add 100644 --- a/src/interfaces/IMulticall3.sol +++ b/src/interfaces/IMulticall3.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/src/safeconsole.sol b/src/safeconsole.sol index 87c475a5b..7b7b192e6 100644 --- a/src/safeconsole.sol +++ b/src/safeconsole.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; /// @author philogy diff --git a/test/CommonBase.t.sol b/test/CommonBase.t.sol index 4a6eb34fd..7e94a0b74 100644 --- a/test/CommonBase.t.sol +++ b/test/CommonBase.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.7.0 <0.9.0; import {CommonBase} from "../src/Base.sol"; diff --git a/test/Config.t.sol b/test/Config.t.sol index bc240b44c..df77d719b 100644 --- a/test/Config.t.sol +++ b/test/Config.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity ^0.8.13; import {Test} from "../src/Test.sol"; diff --git a/test/LibVariable.t.sol b/test/LibVariable.t.sol index 2fc00a91a..c57969472 100644 --- a/test/LibVariable.t.sol +++ b/test/LibVariable.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity ^0.8.13; import {Test} from "../src/Test.sol"; diff --git a/test/StdAssertions.t.sol b/test/StdAssertions.t.sol index acc0c1e81..bc7c9fef2 100644 --- a/test/StdAssertions.t.sol +++ b/test/StdAssertions.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.7.0 <0.9.0; import {StdAssertions} from "../src/StdAssertions.sol"; diff --git a/test/StdChains.t.sol b/test/StdChains.t.sol index 6d9f8be5c..b0e967f1c 100644 --- a/test/StdChains.t.sol +++ b/test/StdChains.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.7.0 <0.9.0; import {Test} from "../src/Test.sol"; diff --git a/test/StdCheats.t.sol b/test/StdCheats.t.sol index b1d9aa128..d1980e560 100644 --- a/test/StdCheats.t.sol +++ b/test/StdCheats.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.7.0 <0.9.0; import {StdCheats} from "../src/StdCheats.sol"; diff --git a/test/StdConstants.t.sol b/test/StdConstants.t.sol index 7a00530f4..5b73b9145 100644 --- a/test/StdConstants.t.sol +++ b/test/StdConstants.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.7.0 <0.9.0; import {StdConstants} from "../src/StdConstants.sol"; diff --git a/test/StdError.t.sol b/test/StdError.t.sol index 29803d5d5..f269d4cae 100644 --- a/test/StdError.t.sol +++ b/test/StdError.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.8.0 <0.9.0; import {stdError} from "../src/StdError.sol"; diff --git a/test/StdJson.t.sol b/test/StdJson.t.sol index 6bedfcc9a..558ec0d5e 100644 --- a/test/StdJson.t.sol +++ b/test/StdJson.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.7.0 <0.9.0; import {Test, stdJson} from "../src/Test.sol"; diff --git a/test/StdMath.t.sol b/test/StdMath.t.sol index 96a42a094..6bc7f6b9b 100644 --- a/test/StdMath.t.sol +++ b/test/StdMath.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.8.0 <0.9.0; import {stdMath} from "../src/StdMath.sol"; diff --git a/test/StdStorage.t.sol b/test/StdStorage.t.sol index d59465b5a..b6e88add9 100644 --- a/test/StdStorage.t.sol +++ b/test/StdStorage.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.7.0 <0.9.0; import {stdStorage, StdStorage} from "../src/StdStorage.sol"; diff --git a/test/StdStyle.t.sol b/test/StdStyle.t.sol index 974e756fe..4e60a4e47 100644 --- a/test/StdStyle.t.sol +++ b/test/StdStyle.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.7.0 <0.9.0; import {Test, console2, StdStyle} from "../src/Test.sol"; diff --git a/test/StdToml.t.sol b/test/StdToml.t.sol index 5a45f4f5c..554320336 100644 --- a/test/StdToml.t.sol +++ b/test/StdToml.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.7.0 <0.9.0; import {Test, stdToml} from "../src/Test.sol"; diff --git a/test/StdUtils.t.sol b/test/StdUtils.t.sol index bbb7fca18..12342aacf 100644 --- a/test/StdUtils.t.sol +++ b/test/StdUtils.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.7.0 <0.9.0; import {Test, StdUtils} from "../src/Test.sol"; diff --git a/test/Vm.t.sol b/test/Vm.t.sol index 4b6e48a47..93816c2e5 100644 --- a/test/Vm.t.sol +++ b/test/Vm.t.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.8.0 <0.9.0; import {Test} from "../src/Test.sol"; diff --git a/test/compilation/CompilationScript.sol b/test/compilation/CompilationScript.sol index d3d88a0b5..eed777700 100644 --- a/test/compilation/CompilationScript.sol +++ b/test/compilation/CompilationScript.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/test/compilation/CompilationScriptBase.sol b/test/compilation/CompilationScriptBase.sol index 65b5bedbe..651861209 100644 --- a/test/compilation/CompilationScriptBase.sol +++ b/test/compilation/CompilationScriptBase.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/test/compilation/CompilationTest.sol b/test/compilation/CompilationTest.sol index 2a9dec57f..ff09c60bb 100644 --- a/test/compilation/CompilationTest.sol +++ b/test/compilation/CompilationTest.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2; diff --git a/test/compilation/CompilationTestBase.sol b/test/compilation/CompilationTestBase.sol index 32b3fc5be..84a920258 100644 --- a/test/compilation/CompilationTestBase.sol +++ b/test/compilation/CompilationTestBase.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.2 <0.9.0; pragma experimental ABIEncoderV2;