@@ -22,6 +22,46 @@ contract MemberAccess {
2222 }
2323}
2424
25+ contract MemberAccessIsEndOfChainCases {
26+ // break if is an ReturnStatement
27+ uint a = b .c ;
28+
29+ function () modifierCase(b .c ) {
30+ // break if is an argument of a FunctionCall
31+ a (b .c );
32+ // break if is an index of an IndexAccess
33+ a [b .c ];
34+ // break if is a part of a BinaryOperation
35+ a = b .c ;
36+ // break if is a part of a UnaryOperation
37+ ! b .c ;
38+ // break if is a condition of a IfStatement
39+ if (b .c ) {}
40+ // break if is a condition of a WhileStatement
41+ while (b .c ) {}
42+ // break if is a part of a ForStatement
43+ // for (b.c;;) {}
44+ for (;b .c ;) {}
45+ // for (;;b.c) {}
46+ // break if is a part of a VariableDeclarationStatement
47+ uint a = b .c ;
48+ // break if is an ExpressionStatement
49+ b .c ;
50+ // break if is an TupleExpression
51+ [a , b .c ];
52+ (b .c );
53+ // break if is an Conditional
54+ a .b ? c : d ;
55+ a ? b .c : d ;
56+ a ? b : c .d ;
57+ // break if is an NameValueList
58+ a .b {value : c .d }();
59+ // break if is an TryStatement
60+ try a .b () {} catch {}
61+ // break if is an ReturnStatement
62+ return b .c ;
63+ }
64+ }
2565=====================================output=====================================
2666pragma solidity ^0.5.0;
2767
@@ -59,5 +99,46 @@ contract MemberAccess {
5999 }
60100}
61101
102+ contract MemberAccessIsEndOfChainCases {
103+ // break if is an ReturnStatement
104+ uint256 a = b .c ;
105+
106+ function () modifierCase(b .c ) {
107+ // break if is an argument of a FunctionCall
108+ a (b .c );
109+ // break if is an index of an IndexAccess
110+ a [b .c ];
111+ // break if is a part of a BinaryOperation
112+ a = b .c ;
113+ // break if is a part of a UnaryOperation
114+ ! b .c ;
115+ // break if is a condition of a IfStatement
116+ if (b .c ) {}
117+ // break if is a condition of a WhileStatement
118+ while (b .c ) {}
119+ // break if is a part of a ForStatement
120+ // for (b.c;;) {}
121+ for (; b .c ; ) {}
122+ // for (;;b.c) {}
123+ // break if is a part of a VariableDeclarationStatement
124+ uint256 a = b .c ;
125+ // break if is an ExpressionStatement
126+ b .c ;
127+ // break if is an TupleExpression
128+ [a , b .c ];
129+ (b .c );
130+ // break if is an Conditional
131+ a .b ? c : d ;
132+ a ? b .c : d ;
133+ a ? b : c .d ;
134+ // break if is an NameValueList
135+ a .b {value : c .d }();
136+ // break if is an TryStatement
137+ try a .b () {} catch {}
138+ // break if is an ReturnStatement
139+ return b .c ;
140+ }
141+ }
142+
62143================================================================================
63144` ;
0 commit comments