pragma solidity ^0.5.2;
// forgefmt: disable-next-line
pragma solidity ^0.5.2;
import {
symbol1 as alias1,
symbol2 as alias2,
symbol3 as alias3,
symbol4
} from "File2.sol";
// forgefmt: disable-next-line
import {symbol1 as alias1, symbol2 as alias2, symbol3 as alias3, symbol4} from 'File2.sol';
enum States {
State1,
State2,
State3,
State4,
State5,
State6,
State7,
State8,
State9
}
// forgefmt: disable-next-line
enum States { State1, State2, State3, State4, State5, State6, State7, State8, State9 }
// forgefmt: disable-next-line
bytes32 constant private BYTES = 0x035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d4749;
// forgefmt: disable-start
// comment1
// comment2
/* comment 3 */ /*
comment4
*/ // comment 5
/// Doccomment 1
/// Doccomment 2
/**
* docccoment 3
*/
// forgefmt: disable-end
// forgefmt: disable-start
function test1() {}
function test2() {}
// forgefmt: disable-end
contract Constructors is Ownable, Changeable {
//forgefmt: disable-next-item
function Constructors(variable1) public Changeable(variable1) Ownable() onlyOwner {
}
//forgefmt: disable-next-item
constructor(variable1, variable2, variable3, variable4, variable5, variable6, variable7) public Changeable(variable1, variable2, variable3, variable4, variable5, variable6, variable7) Ownable() onlyOwner {}
}
function test() {
uint256 pi_approx = 666 / 212;
uint256 pi_approx = /* forgefmt: disable-start */ 666 / 212; /* forgefmt: disable-end */
// forgefmt: disable-next-item
uint256 pi_approx = 666 /
212;
uint256 test_postfix = 1; // forgefmt: disable-start
// comment1
// comment2
// comment3
// forgefmt: disable-end
}
// forgefmt: disable-next-item
function testFunc(uint256 num, bytes32 data , address receiver)
public payable attr1 Cool( "hello" ) {}
function testAttrs(uint256 num, bytes32 data, address receiver)
// forgefmt: disable-next-line
public payable attr1 Cool( "hello" )
{}
// forgefmt: disable-next-line
function testParams(uint256 num, bytes32 data , address receiver)
public
payable
attr1
Cool("hello")
{}
function testDoWhile() external {
//forgefmt: disable-start
uint256 i;
do { "test"; } while (i != 0);
do
{}
while
(
i != 0);
bool someVeryVeryLongCondition;
do { "test"; } while(
someVeryVeryLongCondition && !someVeryVeryLongCondition &&
!someVeryVeryLongCondition &&
someVeryVeryLongCondition);
do i++; while(i < 10);
do do i++; while (i < 30); while(i < 20);
//forgefmt: disable-end
}
function forStatement() {
//forgefmt: disable-start
for
(uint256 i1
; i1 < 10; i1++)
{
i1++;
}
uint256 i2;
for(++i2;i2<10;i2++)
{}
uint256 veryLongVariableName = 1000;
for ( uint256 i3; i3 < 10
&& veryLongVariableName>999 && veryLongVariableName< 1001
; i3++)
{ i3 ++ ; }
for (type(uint256).min;;) {}
for (;;) { "test" ; }
for (uint256 i4; i4< 10; i4++) i4++;
for (uint256 i5; ;)
for (uint256 i6 = 10; i6 > i5; i6--)
i5++;
//forgefmt: disable-end
}
function callArgTest() {
//forgefmt: disable-start
target.run{ gas: gasleft(), value: 1 wei };
target.run{gas:1,value:0x00}();
target.run{
gas : 1000,
value: 1 ether
} ();
target.run{ gas: estimate(),
value: value(1) }();
target.run { value:
value(1 ether), gas: veryAndVeryLongNameOfSomeGasEstimateFunction() } ();
target.run /* comment 1 */ { value: /* comment2 */ 1 };
target.run { /* comment3 */ value: 1, // comment4
gas: gasleft()};
target.run {
// comment5
value: 1,
// comment6
gas: gasleft()};
//forgefmt: disable-end
}
function ifTest() {
// forgefmt: disable-start
if (condition)
execute();
else
executeElse();
// forgefmt: disable-end
/* forgefmt: disable-next-line */
if (condition && anotherLongCondition ) {
execute();
}
}
function yulTest() {
// forgefmt: disable-start
assembly {
let payloadSize := sub(calldatasize(), 4)
calldatacopy(0, 4, payloadSize)
mstore(payloadSize, shl(96, caller()))
let result :=
delegatecall(gas(), moduleImpl, 0, add(payloadSize, 20), 0, 0)
returndatacopy(0, 0, returndatasize())
switch result
case 0 { revert(0, returndatasize()) }
default { return(0, returndatasize()) }
}
// forgefmt: disable-end
}
function literalTest() {
// forgefmt: disable-start
true;
0x123_456;
.1;
"foobar";
hex"001122FF";
0xc02aaa39b223Fe8D0A0e5C4F27ead9083c756Cc2;
// forgefmt: disable-end
// forgefmt: disable-next-line
bytes memory bytecode = hex"ff";
}
function returnTest() {
// forgefmt: disable-start
if (val == 0) {
return // return single 1
0x00;
}
if (val == 1) { return
1; }
if (val == 2) {
return 3
-
1;
}
if (val == 4) {
/* return single 2 */ return 2** // return single 3
3 // return single 4
;
}
return value(); // return single 5
return ;
return /* return mul 4 */
(
987654321, 1234567890,/* return mul 5 */ false);
// forgefmt: disable-end
}
function namedFuncCall() {
// forgefmt: disable-start
SimpleStruct memory simple = SimpleStruct({ val: 0 });
ComplexStruct memory complex = ComplexStruct({ val: 1, anotherVal: 2, flag: true, timestamp: block.timestamp });
StructWithAVeryLongNameThatExceedsMaximumLengthThatIsAllowedForFormatting memory long = StructWithAVeryLongNameThatExceedsMaximumLengthThatIsAllowedForFormatting({ whyNameSoLong: "dunno" });
SimpleStruct memory simple2 = SimpleStruct(
{ // comment1
/* comment2 */ val : /* comment3 */ 0
}
);
// forgefmt: disable-end
}
function revertTest() {
// forgefmt: disable-start
revert ({ });
revert EmptyError({});
revert SimpleError({ val: 0 });
revert ComplexError(
{
val: 0,
ts: block.timestamp,
message: "some reason"
});
revert SomeVeryVeryVeryLongErrorNameWithNamedArgumentsThatExceedsMaximumLength({ val: 0, ts: 0x00, message: "something unpredictable happened that caused execution to revert"});
revert // comment1
({});
// forgefmt: disable-end
}
function testTernary() {
// forgefmt: disable-start
bool condition;
bool someVeryVeryLongConditionUsedInTheTernaryExpression;
condition ? 0 : 1;
someVeryVeryLongConditionUsedInTheTernaryExpression ? 1234567890 : 987654321;
condition /* comment1 */ ? /* comment2 */ 1001 /* comment3 */ : /* comment4 */ 2002;
// comment5
someVeryVeryLongConditionUsedInTheTernaryExpression ? 1
// comment6
:
// comment7
0; // comment8
// forgefmt: disable-end
}
function thisTest() {
// forgefmt: disable-start
this.someFunc();
this.someVeryVeryVeryLongVariableNameThatWillBeAccessedByThisKeyword();
this // comment1
.someVeryVeryVeryLongVariableNameThatWillBeAccessedByThisKeyword();
address(this).balance;
address thisAddress = address(
// comment2
/* comment3 */ this // comment 4
);
// forgefmt: disable-end
}
function tryTest() {
// forgefmt: disable-start
try unknown.empty() {} catch {}
try unknown.lookup() returns (uint256) {} catch Error(string memory) {}
try unknown.lookup() returns (uint256) {} catch Error(string memory) {} catch (bytes memory) {}
try unknown
.lookup() returns (uint256
) {
} catch ( bytes memory ){}
try unknown.empty() {
unknown.doSomething();
} catch {
unknown.handleError();
}
try unknown.empty() {
unknown.doSomething();
} catch Error(string memory) {}
catch Panic(uint) {}
catch {
unknown.handleError();
}
try unknown.lookupMultipleValues() returns (uint256, uint256, uint256, uint256, uint256) {} catch Error(string memory) {} catch {}
try unknown.lookupMultipleValues() returns (uint256, uint256, uint256, uint256, uint256) {
unknown.doSomething();
}
catch Error(string memory) {
unknown.handleError();
}
catch {}
// forgefmt: disable-end
}
function testArray() {
// forgefmt: disable-start
msg.data[
// comment1
4:];
msg.data[
: /* comment2 */ msg.data.length // comment3
];
msg.data[
// comment4
4 // comment5
:msg.data.length /* comment6 */];
// forgefmt: disable-end
}
function testUnit() {
// forgefmt: disable-start
uint256 timestamp;
timestamp = 1 seconds;
timestamp = 1 minutes;
timestamp = 1 hours;
timestamp = 1 days;
timestamp = 1 weeks;
uint256 value;
value = 1 wei;
value = 1 gwei;
value = 1 ether;
uint256 someVeryVeryVeryLongVaribleNameForTheMultiplierForEtherValue;
value = someVeryVeryVeryLongVaribleNameForTheMultiplierForEtherValue * 1 /* comment1 */ ether; // comment2
value = 1 // comment3
// comment4
ether; // comment5
// forgefmt: disable-end
}
contract UsingExampleContract {
// forgefmt: disable-start
using UsingExampleLibrary for * ;
using UsingExampleLibrary for uint;
using Example.UsingExampleLibrary for uint;
using { M.g, M.f} for uint;
using UsingExampleLibrary for uint global;
using { These, Are, MultipleLibraries, ThatNeedToBePut, OnSeparateLines } for uint;
using { This.isareally.longmember.access.expression.that.needs.to.besplit.into.lines } for uint;
// forgefmt: disable-end
}
function testAssignment() {
// forgefmt: disable-start
(, uint256 second) = (1, 2);
(uint256 listItem001) = 1;
(uint256 listItem002, uint256 listItem003) = (10, 20);
(uint256 listItem004, uint256 listItem005, uint256 listItem006) =
(10, 20, 30);
// forgefmt: disable-end
}
function testWhile() {
// forgefmt: disable-start
uint256 i1;
while ( i1 < 10 ) {
i1++;
}
while (i1<10) i1++;
while (i1<10)
while (i1<10)
i1++;
uint256 i2;
while ( i2 < 10) { i2++; }
uint256 i3; while (
i3 < 10
) { i3++; }
uint256 i4; while (i4 < 10)
{ i4 ++ ;}
uint256 someLongVariableName;
while (
someLongVariableName < 10 && someLongVariableName < 11 && someLongVariableName < 12
) { someLongVariableName ++; } someLongVariableName++;
// forgefmt: disable-end
}
function testLine() {}
function /* forgefmt: disable-line */ testLine( ) { }
function testLine() {}
function testLine( ) { } // forgefmt: disable-line
// forgefmt: disable-start
type Hello is uint256;
error
TopLevelCustomError();
error TopLevelCustomErrorWithArg(uint x) ;
error TopLevelCustomErrorArgWithoutName (string);
event Event1(uint256 indexed a, uint256 indexed a, uint256 indexed a, uint256 indexed a, uint256 indexed a, uint256 indexed a, uint256 indexed a, uint256 indexed a, uint256 indexed a, uint256 indexed a);
// forgefmt: disable-stop