solang-parser 0.2.1

Solang Solidity Parser
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
Optimized IR:
/// @use-src 0:"yul_optimizer_steps_nested_brackets/input.sol"
object "C_6" {
    code {
        {
            /// @src 0:60:103  "contract C..."
            mstore(64, memoryguard(0x80))
            if callvalue()
            {
                revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb()
            }
            constructor_C()
            let _1 := allocate_unbounded()
            codecopy(_1, dataoffset("C_6_deployed"), datasize("C_6_deployed"))
            return(_1, datasize("C_6_deployed"))
        }
        function allocate_unbounded() -> memPtr
        {
            let memPtr_1 := mload(64)
            let memPtr_2 := memPtr_1
            let memPtr_3 := memPtr_1
            let memPtr_4 := memPtr_1
            let memPtr_5 := memPtr_1
            let memPtr_6 := memPtr_1
            let memPtr_7 := memPtr_1
            let memPtr_8 := memPtr_1
            let memPtr_9 := memPtr_1
            let memPtr_10 := memPtr_1
            let memPtr_11 := memPtr_1
            let memPtr_12 := memPtr_1
            let memPtr_13 := memPtr_1
            let memPtr_14 := memPtr_1
            let memPtr_15 := memPtr_1
            let memPtr_16 := memPtr_1
            let memPtr_17 := memPtr_1
            let memPtr_18 := memPtr_1
            let memPtr_19 := memPtr_1
            let memPtr_20 := memPtr_1
            let memPtr_21 := memPtr_1
            let memPtr_22 := memPtr_1
            let memPtr_23 := memPtr_1
            let memPtr_24 := memPtr_1
            let memPtr_25 := memPtr_1
            let memPtr_26 := memPtr_1
            let memPtr_27 := memPtr_1
            let memPtr_28 := memPtr_1
            let memPtr_29 := memPtr_1
            let memPtr_30 := memPtr_1
            let memPtr_31 := memPtr_1
            let memPtr_32 := memPtr_1
            let memPtr_33 := memPtr_1
            let memPtr_34 := memPtr_1
            let memPtr_35 := memPtr_1
            let memPtr_36 := memPtr_1
            let memPtr_37 := memPtr_1
            let memPtr_38 := memPtr_1
            let memPtr_39 := memPtr_1
            let memPtr_40 := memPtr_1
            let memPtr_41 := memPtr_1
            let memPtr_42 := memPtr_1
            let memPtr_43 := memPtr_1
            let memPtr_44 := memPtr_1
            let memPtr_45 := memPtr_1
            let memPtr_46 := memPtr_1
            let memPtr_47 := memPtr_1
            let memPtr_48 := memPtr_1
            let memPtr_49 := memPtr_1
            let memPtr_50 := memPtr_1
            let memPtr_51 := memPtr_1
            let memPtr_52 := memPtr_1
            let memPtr_53 := memPtr_1
            let memPtr_54 := memPtr_1
            let memPtr_55 := memPtr_1
            let memPtr_56 := memPtr_1
            let memPtr_57 := memPtr_1
            let memPtr_58 := memPtr_1
            let memPtr_59 := memPtr_1
            let memPtr_60 := memPtr_1
            let memPtr_61 := memPtr_1
            let memPtr_62 := memPtr_1
            let memPtr_63 := memPtr_1
            let memPtr_64 := memPtr_1
            let memPtr_65 := memPtr_1
            let memPtr_66 := memPtr_1
            let memPtr_67 := memPtr_1
            let memPtr_68 := memPtr_1
            let memPtr_69 := memPtr_1
            let memPtr_70 := memPtr_1
            let memPtr_71 := memPtr_1
            let memPtr_72 := memPtr_1
            let memPtr_73 := memPtr_1
            let memPtr_74 := memPtr_1
            let memPtr_75 := memPtr_1
            let memPtr_76 := memPtr_1
            let memPtr_77 := memPtr_1
            let memPtr_78 := memPtr_1
            let memPtr_79 := memPtr_1
            let memPtr_80 := memPtr_1
            let memPtr_81 := memPtr_1
            let memPtr_82 := memPtr_1
            let memPtr_83 := memPtr_1
            let memPtr_84 := memPtr_1
            let memPtr_85 := memPtr_1
            let memPtr_86 := memPtr_1
            memPtr := memPtr_1
        }
        function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb()
        { revert(0, 0) }
        function constructor_C()
        { }
    }
    /// @use-src 0:"yul_optimizer_steps_nested_brackets/input.sol"
    object "C_6_deployed" {
        code {
            {
                /// @src 0:60:103  "contract C..."
                mstore(64, memoryguard(0x80))
                if iszero(lt(calldatasize(), 4))
                {
                    let selector := shift_right_unsigned(calldataload(0))
                    if eq(0x26121ff0, selector) { external_fun_f() }
                }
                revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
            }
            function shift_right_unsigned(value) -> newValue
            {
                let newValue_1 := shr(224, value)
                let newValue_2 := newValue_1
                let newValue_3 := newValue_1
                let newValue_4 := newValue_1
                let newValue_5 := newValue_1
                let newValue_6 := newValue_1
                let newValue_7 := newValue_1
                let newValue_8 := newValue_1
                let newValue_9 := newValue_1
                let newValue_10 := newValue_1
                let newValue_11 := newValue_1
                let newValue_12 := newValue_1
                let newValue_13 := newValue_1
                let newValue_14 := newValue_1
                let newValue_15 := newValue_1
                let newValue_16 := newValue_1
                let newValue_17 := newValue_1
                let newValue_18 := newValue_1
                let newValue_19 := newValue_1
                let newValue_20 := newValue_1
                let newValue_21 := newValue_1
                let newValue_22 := newValue_1
                let newValue_23 := newValue_1
                let newValue_24 := newValue_1
                let newValue_25 := newValue_1
                let newValue_26 := newValue_1
                let newValue_27 := newValue_1
                let newValue_28 := newValue_1
                let newValue_29 := newValue_1
                let newValue_30 := newValue_1
                let newValue_31 := newValue_1
                let newValue_32 := newValue_1
                let newValue_33 := newValue_1
                let newValue_34 := newValue_1
                let newValue_35 := newValue_1
                let newValue_36 := newValue_1
                let newValue_37 := newValue_1
                let newValue_38 := newValue_1
                let newValue_39 := newValue_1
                let newValue_40 := newValue_1
                let newValue_41 := newValue_1
                let newValue_42 := newValue_1
                let newValue_43 := newValue_1
                let newValue_44 := newValue_1
                let newValue_45 := newValue_1
                let newValue_46 := newValue_1
                let newValue_47 := newValue_1
                let newValue_48 := newValue_1
                let newValue_49 := newValue_1
                let newValue_50 := newValue_1
                let newValue_51 := newValue_1
                let newValue_52 := newValue_1
                let newValue_53 := newValue_1
                let newValue_54 := newValue_1
                let newValue_55 := newValue_1
                let newValue_56 := newValue_1
                let newValue_57 := newValue_1
                let newValue_58 := newValue_1
                let newValue_59 := newValue_1
                let newValue_60 := newValue_1
                let newValue_61 := newValue_1
                let newValue_62 := newValue_1
                let newValue_63 := newValue_1
                let newValue_64 := newValue_1
                let newValue_65 := newValue_1
                let newValue_66 := newValue_1
                let newValue_67 := newValue_1
                let newValue_68 := newValue_1
                let newValue_69 := newValue_1
                let newValue_70 := newValue_1
                let newValue_71 := newValue_1
                let newValue_72 := newValue_1
                let newValue_73 := newValue_1
                let newValue_74 := newValue_1
                let newValue_75 := newValue_1
                let newValue_76 := newValue_1
                let newValue_77 := newValue_1
                let newValue_78 := newValue_1
                let newValue_79 := newValue_1
                let newValue_80 := newValue_1
                let newValue_81 := newValue_1
                let newValue_82 := newValue_1
                let newValue_83 := newValue_1
                let newValue_84 := newValue_1
                let newValue_85 := newValue_1
                let newValue_86 := newValue_1
                newValue := newValue_1
            }
            function allocate_unbounded() -> memPtr
            {
                let memPtr_1 := mload(64)
                let memPtr_2 := memPtr_1
                let memPtr_3 := memPtr_1
                let memPtr_4 := memPtr_1
                let memPtr_5 := memPtr_1
                let memPtr_6 := memPtr_1
                let memPtr_7 := memPtr_1
                let memPtr_8 := memPtr_1
                let memPtr_9 := memPtr_1
                let memPtr_10 := memPtr_1
                let memPtr_11 := memPtr_1
                let memPtr_12 := memPtr_1
                let memPtr_13 := memPtr_1
                let memPtr_14 := memPtr_1
                let memPtr_15 := memPtr_1
                let memPtr_16 := memPtr_1
                let memPtr_17 := memPtr_1
                let memPtr_18 := memPtr_1
                let memPtr_19 := memPtr_1
                let memPtr_20 := memPtr_1
                let memPtr_21 := memPtr_1
                let memPtr_22 := memPtr_1
                let memPtr_23 := memPtr_1
                let memPtr_24 := memPtr_1
                let memPtr_25 := memPtr_1
                let memPtr_26 := memPtr_1
                let memPtr_27 := memPtr_1
                let memPtr_28 := memPtr_1
                let memPtr_29 := memPtr_1
                let memPtr_30 := memPtr_1
                let memPtr_31 := memPtr_1
                let memPtr_32 := memPtr_1
                let memPtr_33 := memPtr_1
                let memPtr_34 := memPtr_1
                let memPtr_35 := memPtr_1
                let memPtr_36 := memPtr_1
                let memPtr_37 := memPtr_1
                let memPtr_38 := memPtr_1
                let memPtr_39 := memPtr_1
                let memPtr_40 := memPtr_1
                let memPtr_41 := memPtr_1
                let memPtr_42 := memPtr_1
                let memPtr_43 := memPtr_1
                let memPtr_44 := memPtr_1
                let memPtr_45 := memPtr_1
                let memPtr_46 := memPtr_1
                let memPtr_47 := memPtr_1
                let memPtr_48 := memPtr_1
                let memPtr_49 := memPtr_1
                let memPtr_50 := memPtr_1
                let memPtr_51 := memPtr_1
                let memPtr_52 := memPtr_1
                let memPtr_53 := memPtr_1
                let memPtr_54 := memPtr_1
                let memPtr_55 := memPtr_1
                let memPtr_56 := memPtr_1
                let memPtr_57 := memPtr_1
                let memPtr_58 := memPtr_1
                let memPtr_59 := memPtr_1
                let memPtr_60 := memPtr_1
                let memPtr_61 := memPtr_1
                let memPtr_62 := memPtr_1
                let memPtr_63 := memPtr_1
                let memPtr_64 := memPtr_1
                let memPtr_65 := memPtr_1
                let memPtr_66 := memPtr_1
                let memPtr_67 := memPtr_1
                let memPtr_68 := memPtr_1
                let memPtr_69 := memPtr_1
                let memPtr_70 := memPtr_1
                let memPtr_71 := memPtr_1
                let memPtr_72 := memPtr_1
                let memPtr_73 := memPtr_1
                let memPtr_74 := memPtr_1
                let memPtr_75 := memPtr_1
                let memPtr_76 := memPtr_1
                let memPtr_77 := memPtr_1
                let memPtr_78 := memPtr_1
                let memPtr_79 := memPtr_1
                let memPtr_80 := memPtr_1
                let memPtr_81 := memPtr_1
                let memPtr_82 := memPtr_1
                let memPtr_83 := memPtr_1
                let memPtr_84 := memPtr_1
                let memPtr_85 := memPtr_1
                let memPtr_86 := memPtr_1
                memPtr := memPtr_1
            }
            function revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb()
            { revert(0, 0) }
            function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b()
            { revert(0, 0) }
            function abi_decode(headStart, dataEnd)
            {
                if slt(sub(dataEnd, headStart), 0)
                {
                    revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b()
                }
            }
            function abi_encode_tuple(headStart) -> tail
            {
                let tail_1 := add(headStart, 0)
                let tail_2 := tail_1
                let tail_3 := tail_1
                let tail_4 := tail_1
                let tail_5 := tail_1
                let tail_6 := tail_1
                let tail_7 := tail_1
                let tail_8 := tail_1
                let tail_9 := tail_1
                let tail_10 := tail_1
                let tail_11 := tail_1
                let tail_12 := tail_1
                let tail_13 := tail_1
                let tail_14 := tail_1
                let tail_15 := tail_1
                let tail_16 := tail_1
                let tail_17 := tail_1
                let tail_18 := tail_1
                let tail_19 := tail_1
                let tail_20 := tail_1
                let tail_21 := tail_1
                let tail_22 := tail_1
                let tail_23 := tail_1
                let tail_24 := tail_1
                let tail_25 := tail_1
                let tail_26 := tail_1
                let tail_27 := tail_1
                let tail_28 := tail_1
                let tail_29 := tail_1
                let tail_30 := tail_1
                let tail_31 := tail_1
                let tail_32 := tail_1
                let tail_33 := tail_1
                let tail_34 := tail_1
                let tail_35 := tail_1
                let tail_36 := tail_1
                let tail_37 := tail_1
                let tail_38 := tail_1
                let tail_39 := tail_1
                let tail_40 := tail_1
                let tail_41 := tail_1
                let tail_42 := tail_1
                let tail_43 := tail_1
                let tail_44 := tail_1
                let tail_45 := tail_1
                let tail_46 := tail_1
                let tail_47 := tail_1
                let tail_48 := tail_1
                let tail_49 := tail_1
                let tail_50 := tail_1
                let tail_51 := tail_1
                let tail_52 := tail_1
                let tail_53 := tail_1
                let tail_54 := tail_1
                let tail_55 := tail_1
                let tail_56 := tail_1
                let tail_57 := tail_1
                let tail_58 := tail_1
                let tail_59 := tail_1
                let tail_60 := tail_1
                let tail_61 := tail_1
                let tail_62 := tail_1
                let tail_63 := tail_1
                let tail_64 := tail_1
                let tail_65 := tail_1
                let tail_66 := tail_1
                let tail_67 := tail_1
                let tail_68 := tail_1
                let tail_69 := tail_1
                let tail_70 := tail_1
                let tail_71 := tail_1
                let tail_72 := tail_1
                let tail_73 := tail_1
                let tail_74 := tail_1
                let tail_75 := tail_1
                let tail_76 := tail_1
                let tail_77 := tail_1
                let tail_78 := tail_1
                let tail_79 := tail_1
                let tail_80 := tail_1
                let tail_81 := tail_1
                let tail_82 := tail_1
                let tail_83 := tail_1
                let tail_84 := tail_1
                let tail_85 := tail_1
                let tail_86 := tail_1
                tail := tail_1
            }
            function external_fun_f()
            {
                if callvalue()
                {
                    revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb()
                }
                abi_decode(4, calldatasize())
                fun_f()
                let memPos := allocate_unbounded()
                let memEnd := abi_encode_tuple(memPos)
                return(memPos, sub(memEnd, memPos))
            }
            function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
            { revert(0, 0) }
            /// @ast-id 5 @src 0:74:101  "function f() public pure {}"
            function fun_f()
            { }
        }
        data ".metadata" hex"<BYTECODE REMOVED>"
    }
}