From 43dc3bdb76e14cdfd9b83143d24dd7269b5bcd9d Mon Sep 17 00:00:00 2001 From: Simone Date: Thu, 20 Feb 2025 13:27:15 +0100 Subject: [PATCH] Move checking for function scoped variables after yul scoped --- slither/solc_parsing/yul/parse_yul.py | 29 +++++++++--------- .../test_data/assembly-functions.sol | 10 ++++++ .../assembly-functions.sol-0.6.9-compact.zip | Bin 1607 -> 2022 bytes .../assembly-functions.sol-0.6.9-legacy.zip | Bin 1433 -> 1788 bytes .../assembly-functions.sol-0.7.6-compact.zip | Bin 1588 -> 1993 bytes .../assembly-functions.sol-0.7.6-legacy.zip | Bin 1414 -> 1763 bytes .../assembly-functions.sol-0.8.16-compact.zip | Bin 1605 -> 2036 bytes .../assembly-functions.sol-0.6.9-compact.json | 5 +++ .../assembly-functions.sol-0.6.9-legacy.json | 3 ++ .../assembly-functions.sol-0.7.6-compact.json | 5 +++ .../assembly-functions.sol-0.7.6-legacy.json | 3 ++ ...assembly-functions.sol-0.8.16-compact.json | 5 +++ 12 files changed, 45 insertions(+), 15 deletions(-) diff --git a/slither/solc_parsing/yul/parse_yul.py b/slither/solc_parsing/yul/parse_yul.py index 5dcc33a9a4..666a3510ac 100644 --- a/slither/solc_parsing/yul/parse_yul.py +++ b/slither/solc_parsing/yul/parse_yul.py @@ -798,27 +798,12 @@ def parse_yul_identifier(root: YulScope, _node: YulNode, ast: Dict) -> Optional[ if name in builtins: return Identifier(YulBuiltin(name)) - # check function-scoped variables - parent_func = root.parent_func - if parent_func: - local_variable = parent_func.get_local_variable_from_name(name) - if local_variable: - return Identifier(local_variable) - - if isinstance(parent_func, FunctionContract): - # Variables must be looked from the contract declarer - assert parent_func.contract_declarer - state_variable = parent_func.contract_declarer.get_state_variable_from_name(name) - if state_variable: - return Identifier(state_variable) - # check yul-scoped variable variable = root.get_yul_local_variable_from_name(name) if variable: return Identifier(variable.underlying) # check yul-scoped function - func = root.get_yul_local_function_from_name(name) if func: return Identifier(func.underlying) @@ -840,6 +825,20 @@ def parse_yul_identifier(root: YulScope, _node: YulNode, ast: Dict) -> Optional[ if func: return Identifier(func.underlying) + # check function-scoped variables + parent_func = root.parent_func + if parent_func: + local_variable = parent_func.get_local_variable_from_name(name) + if local_variable: + return Identifier(local_variable) + + if isinstance(parent_func, FunctionContract): + # Variables must be looked from the contract declarer + assert parent_func.contract_declarer + state_variable = parent_func.contract_declarer.get_state_variable_from_name(name) + if state_variable: + return Identifier(state_variable) + magic_suffix = _parse_yul_magic_suffixes(name, root) if magic_suffix: return magic_suffix diff --git a/tests/e2e/solc_parsing/test_data/assembly-functions.sol b/tests/e2e/solc_parsing/test_data/assembly-functions.sol index 224e16bab8..a27cbf3023 100644 --- a/tests/e2e/solc_parsing/test_data/assembly-functions.sol +++ b/tests/e2e/solc_parsing/test_data/assembly-functions.sol @@ -10,3 +10,13 @@ contract A { } } } + +// Issue https://github.com/crytic/slither/issues/2655 +contract B { + function test(int256 a) internal { + assembly { + function a() {} + function b() { a() } + } + } +} \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-compact.zip index 8389eb6f593dc3d0adfaf206f8ba933852ff32db..4330e49aff40b717f1d40d7255f91e78b24d1412 100644 GIT binary patch delta 1738 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 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-legacy.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.6.9-legacy.zip index a05a1cd47d26e92672998a5c155ebf594645644a..eb515c68f9012d15b7fbbe09f8ecb6112c303256 100644 GIT binary patch delta 1495 zcmV;|1t|KN3;YcjP)h>@KL7#%4ggtcR9dD*K^{g1003Sbkr?oQ4d8r?;R9xCLA_%5 zM>gSJa_fUKr;Z|_Vf)dw)HKRcdroMw#fd#!p$ZD9WhG@<2RZjYG3;QGC`c@p0UMwg zQb7=iYIohsKAzCa=FILm9U4Mz>qbqb#RCnjB|HxPV}oiAmBVqSsXleNHTuVds@cWd z*AjWVPmWk$hswQwhr}j9xSe8nO!VPk-<+Rp<;oF;lx205*iJRQ&Lg*mX{i7n5b*0d zaw30GX1;-#-&=kz9h=;Ku^_VX_cqxp*UT6}nz0IRf##9)yne}{?*_rv<)=P6HDie9 z8Q4pue!MH4QUmTDDsoT~#Y@smd$d6arq}Pd%2*}Hl?|GIo6hR;v?6D75AAbtS_FpN zFMi7l_M`}*0Fk|#)cAAzk0)OY^W*752SS+Q1?d9Joxf#f?p6W!@lKhi7-P8L;hwCSaC5Yl~59~k&tyOHA)5E zKSJ@SeAQUE#E)Fjr*>50%n*aF{@>B9tdPgtt*XD&sNe97 zhn{%>`1K9sw38;%{B9#&`Q8* z=QX|t%@vq{vjn=elg}LM*dTSeI6q5hx|RF+9^FQtAxQB#p_(B_gyTzNd{+;x)!`VF z<0+-ETH7x(J!3bv+_j^A{68}4t5|qR`{L<_m78Qb`$V5^W~Fod$Je9yfU<3&4*fyV`kxKicOu6-}a7zr5I!yNA}_z zAcXN0*bIRu(T??tmzCD4Cv0_0|H%P=<`}jg|4@{xl7M8*lf=cfF9FO)KxdEHff(|+a{c4n{mv-rYh!AT;ce8U`PF`2b)bT2g%ngwTVDk_dlP3n|9Daf$2nQ~%_FxQwM&SG` zatT6h{dibDPvP@dIp24cXt-d1IGGZ2+XpsBFMIc%_p0K$NAR%2%iSl@o|k2;FXeck zP{bmB2@KL7#%4ghhsuU7Oje8S@d0077mkr?oQ3(rJF$!~`u+Y%y@ z;+a3=EG$ztIp|3S$j2AL@-Na(Z93HE^5o3x9|SQy=H-Lx)wd(%?`QaKFg;| zO#1E6+IoL-yFu?|bxgdg^wEMmnLf~SK+gqwYb&=5_oXQnb%(Y}KOh+0bFdk7m zbM$BkI7)`OITP?FwjR1k9)e=9@y=I-Y5us@h+s-n;a?W~7Mw!aV&m&TzB2fw0k?By zY5nH#>|2X}SRy~S_9uJZF;wJsDn*sHs#(Gk z1dk_-ZQS0@xp99d-Hy_n+?@q1&lBFN{Q=14@G9sSSR`FxCh~T`QRaPE72;**87Pd_ zzML1~gn(7;ixQvbC!#>Ix@t3)qO`i=q;LLwgM#UQaSY9hz*9g-vVHjn$6MtG*4&ND z!!Tw73b`K)6%8ADX0fidgis<^qpxTv7QLyM#d^Z>un}aFo%*1^c+A@3t$Ye?W_>`E z2gg_H@dJSfs-=?6G?`Rm4xH^OOS5;2Kv{An7s_s;Sh^QPEr05c-N=yU+4TWQ?`#)q zZ>Yq7J((qNQDpPub~=$_FE*{t%;EZO-#^ks_mvD@0Y(DS0`newjDsbK{~MQ2TY^L> zj*~50>dxyJIWTk5BX0H9va&d^ZUAz#1is9&jyFgqRtVX8)(eGl4J^|3 z1zM-zZgp-nuVE&MYNZ8PZA)P%Y;-v^AGJ}3BRCebo!SfZ1VQ)7en-C09Uy2wuWfvP z6LFga1P19Wo8b5K6bo8vW-w5(ci{p-5X0#_%8GO5tjOFm_FaK~-1|pwHha@_=5jd` z#g%6l9l=PSc~5odcr#oSo%At}PasES`YMbeC6};EbwT;rA38HhI7rXff9ki0`Uso> zrq#uOZdC46oe7NxVXGG40iLyQg84&5QchvUm03wvJ={ZJrVwmBboefw*Yx@#U=CC- ziTA5_MbVpWwh{lo-huK^O928u13v%)01g0gwy#$7GJL}01ONcY5|gL~P6jIl00000 Dpd}?6 diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.7.6-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.7.6-compact.zip index b21bdae6fcaee090d2eba382547f8ca5b262bcd6..249f6845e9d45f60cacc879a173635fa23808cc7 100644 GIT binary patch delta 1716 zcmV;l221(049O20P)h>@KL7#%4ggzeR9X!{v~3dy000Fh001hJ@dYiBNV$JE3?6k; z-8fw2ay^C)wo`=;XXQ{r6hs_+nz`bQjjI#z411LcMj(%hsy)zIen4+5p1g4`y8*xJ zg{1K+?en2Y=BXZ_g(2_X3J6TvQax@?Y9Eg`OPH2K&iTmil}M69JTk($;&1gM8UqV8 zrBPG;*Q)PpOLSDhJfB{hN9}(ywG5AW1O;tanV+kQ#G|D6z2PS(ZqR9Amr8{WXS-o3 zHY@0iKlNCa5%!h>X}5$fdTEQi&)CMy&I7?iiK*_=PZ&ZCikAn<*{}!b3rMU-!MyDk9@Y=TZghqn*#Z# zBlhIyB>#cbSyWQ`8Ge7XeOK38@&(Vgw~OwnL4udW*Iz5`9^HK&s2;N#N6(fe-%ElE z0g(&LkTAitKv2CEW+l>(CYr*mmBUmgr$wDehbM4Ey-K3z!{*UE`?V`Wn1_R|!0KZ< z#Wq}s8R=OulK_n_T%Mv>Z9YXzMJcof+L}51`o^rAMA`q*)?9y5s~7>Wm$Vpu5oe+a z>*X@d8p5N{0Xudpdh}~vLk4ua(q5SR>B5*z0xEH{&SL!(Z{4d4aoXPJ{1XCy3%{UY zg8sG+&js89hW*^iz|^VAK2E>nT%%9j0R?6R8q1}sBGvuP#r0;(d{f@4C0>%sCW9o9 zr&+m2WB5++p<{ogZ!HLKaOq$Q%?Xi0GqCfa6A5@o$(ac}A%e8mgNlh6sF5qSGD(>6 zvo@97MJEz>^vTg9)8)`qW_&{ZvIltW3OdqpE&xVdhV@FQIuk*|A$8WOCM0Mfli*Dd z4bgNwF79<@7R}~XM4ITWG<^UGaraYmyx7CoyBbn#Gn#)8CyMYXzn$7?J)r!@XFa%k z2t|k^=*a^0`XSxrTvTJjA$`(nd3S5fkv5_D3;&Tp{t500zf8?*WyW`fhST8MT*YS#4Kp9X_^Gt}F2kZEab%ym?9_a0 z6Tpf@|BrYb?65MFKo4kA>@SbzbM(l{{Jg{GQ;P37b@ zM{$4t-^FZ9#1C2s`h!+jK+NHd9gWa2yg?+i9RMkMRkG^aZ;S z9=O9?4Tc{9UmBpAX6|nE2^d#J`tWn3x>`liwaQW`EKRV`!1GCwpA4(OkkPweo|P58 znysTx%8Cw2I$L!IXHM*r%4djv3RFRJcN%{OzW$rb#3<^)-{L?)#+nPh;kFa*Goij- z36_}B?2_;&ynkZ?zam0ZXYRaeLtYFuOwS#E`ZxT0tQN{v5=05{Jg zXuJz6;QRe8D{-pfjiLBOrhOgaahZkmw+;cLI>vXG`ZQF3whYN?mYhmld&{!*Q{jJ> z*epiwnY?_&5QxXItXfu?l{DrNGtv(s_5p_&Gp(bH^^rO%@FL7z$)tvCz6HMuQtmO(7>4XmTnp2 zZNdoW0`JsnZ2!)#_lWfS|H&^Colr{w0zU&k00ICG09$EPS`9$7Z4(Co00jXili&qT K23rRJ0002w5jwX3 delta 1323 zcmV+`1=RY<53~#zP)h>@KL7#%4ghhsuT~h7v)FzG008M4kr?TJG{>G%G-v;a@Wwq^ zW|V=C)q-FzELeD;^S#y(P;;ngl6mE`fo+#9g7p{e^M^3~z*`77I7tiURNbHVt8e|5 z+RN%8Z%`C@x}}bFfRhqpy^g#$dZFC z2sqpeu3CR8h&E!lxt56VdlOTAYD_Sl(1BeBm`qb%-A&kjRwxk~`1=`(&AjavBvrrS z?leQx=HU#|Ex-si*h0|UZu`}NwPSm9=(u>H@uLCT*$i2KKqlPVHR94c5Ju)-lEw-}<+UM?z3-q-N1X)#=_UL$U@tm64`cRCnQtp`E<3*nMlO)=`1x z;JYKn1aiZx^pxw2`9&=JA?e~uz4!GZcF-XPA+y#6xTJvW@O;R(^tChO=bWHd^`e__ zzDdA;ZST+!IFL!@Z&UEAls7?l~UI8uS?+YGdW8Q zbUs5ZdW=}Puw1Dq#Oz(+3cscwqN)w0Ivso|DR^M@)*iRaF6|F6-+On`fxqmT&K_1+ z8ZgUHf0Eri^^cDZ8OFDbCni_33w(Ef$!&aSU^%5h&;XI`f>WGn%I7acINt}W#XbM< z?j8VH^e&LX(YMg>fp^B0EkpY$C$+FedDLAD$i*@?zMqHO&lF7XVK#O7V7*UElOXGv z3v~vDb$MD(+3QF6B}sucePm%n%dUN~y7aNvinD|E@*K0=r2G3~d6SRQ&H=}Nzb_an zA;Mqyd69LqqDmWU#%;e0?V(y{@KL7#%4ggzeR9drZe%LJr008V8kr?oQ-{Tud1}~9kIo>T{ z1}t9^=2v)uYCr{ds=Up}m#;oH79CZpO^;MOlFVG6%dN)artYc}?Y;Nj*|~v1dCyt; z7@by!2c!Ep!Mpe5ybtXdVK{5__RPIW_r~QWmv-btg33125OBKSC_c&8b-f5EO(aYX zE~#lj{S2qjqEIS-Hj8j`|AWE}M#X0mf!BZ^;F_+2F`9$)rE+z_y+(9RP%$?3V)uaQ7wspB&P?}-37MF3gj|{lOoanxg z4dcJnY-KSzKHQ@*LT^uY*e4Sl z6sT@5`*iP`Y@Oipt%>b}+FUz+TJ+eE&4tX2?Ou9+^U!U8#0Mi$NX~MEm2L9bU~MaR zVMteNyK3ycvfwS-rU^+Va553Yus3J9Q&*haS)s^#vI_=z?Fum#^g?uCk}Opti&>`u zbuLu~b={YQ9?r5f8K)(dipZtNzi#bFQn2jZL}f@znk^$tluI=qJ@4!J7}Ad2TdYar z9>Csz?M5iI(VEXS`|s^A0}=d!`jRLC7YU(XH5jB4xbVh0dTjhtMkU7_B;c_)-ixVs z)s{pI3ox$~nFpVqfMr0sK#PlPN3)`AOuat+)>cd2$N4D^nDXtHI!89Ta37#4(-DZP-?=rLY%8%-$Bxm+W4cKIC*Z-%!Cati-xU12qi3-!~_2$!m zkabGgGWvm(f7`^q=187DLjer)Wm{i`au*Jv{)#SVfU7^Kh|K1urJLDaz*WiTXOuD9 ze31mAx&)m(h3K-wF>_OWZ-_}tZrupH7Bg}>2|@fU)n zMa+%w^yV!C7j-!0Kr47X+u2Yl5MzP_nLB8p$#<~+mGPW~w}zFT`;#m6 z`=Qpl(u`~sf-==V*w4Y{x2h)}E?=NQNI+?)(nNI3! z-ILv#tRXUSyk=PIzT~ARIQ2i%6ueCMSnuoKdFFpX?8qa^-bKbpuBBT`gr-b`&bnV- zH*535`A{%+jY5Necrh04;e0QD4M}oLePXLUM;6_3iFm@JxTzH1TA#7|OLa~ZeJ)RS zcd8F-cl9v4^xgThD3703V;2_D?~Ug8SzJ|$SS^$`v1hg_$l|nDc&=|Foh~N91PG5E zRkQPx^w)Akko+D2@)w(mb{@NEn1aq=z=SnG8~Oi@75_|7O928u13v%~0ssyGTWM5U Yvul3XEd~Gp>>HCZ1x^Na1^@s608PT!NdN!< delta 1125 zcmV-r1e*Kf4TcLFP)h>@KL7#%4ghhsuT}?yUb@f(006lX001hJpaw0GNWg#HuRcLb zXeqVaTv_9aWT}sSA;lH|G5xdB{P9Q@{u-Zfo38L^2wps*>pac^4b4WCjeP^b!dcTM zK;NBz@S>DYQT9mx`(+qKH$bi1fJt81Q}x-3&uE^!nBy2S{)m3Z1NPK&S!tuGV6{Z& zCB$P?VaSxAadwVHjdJ*qJJYwz|& zNg?#|U90Q$x_(TLGChBuNvnS4a2l{Vj%A|YVhTMbbit1pa(7BbTU~Jv0d*g%3vRWI zxf@2!iV5*#ySd%Lr$qDW zrm*pnKc6+5jgl3lYBC*r*ot-~%fY(JINPOu9|9?HWz7g*6jkS1a(tF&x`CQ+DJw^> zstL;u4pVVn5RiZNJVxO~pEk&7>g7M~D}w4)eB~9RK_S)den-j&t|}8$Z+I^uEF)#F z?{Q)p`Gr{0cv(~Zd58!@Ni2y@_OJ?>d0qV`p=I{7G~=VOiFUl-dBOBnZ*K1y4vT#~ zPg8S{bTe~O4g|a#q7va#f53x<5LiI&ZF@Yx>w3N)z`Y*5SBk)!sl&^MzP}>;5C|3U%()uBwMEP~#6N`_LpX z-radK80&oXd6@RzN&a{LlR0gdPKe044T*3N+Y2&8!Lj?P$)5wT_y4jZbvL-5?N9&0 rZ;ZlFO928u13v%)01g0gwy#zPgkHMP1ONcJ5|fVxP6ikS00000*Xtf> diff --git a/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.8.16-compact.zip b/tests/e2e/solc_parsing/test_data/compile/assembly-functions.sol-0.8.16-compact.zip index a2b78d7b0698f3f623f5a2a37a95314adaa14197..52648f99ca74c6deaa4b9f6142a13168f5d29aa7 100644 GIT binary patch delta 1729 zcmV;y20r=44D=5eP)h>@KL7#%4gg(gR9X*rOUph7000&yu^0gXe>Izx#&V3kkreBF z1uT~TIu9ByX={O%xY(7*OQ&v-Y?F!JZVo-E^yw-4y9je{RnS^cat>sNo&YGftFPPs zqw^fxwwCm*qPorn-Q1wmt#fl7QkGkA`vZUbxrr1wk$4ys&>gOJ&FEIsoLm*_Z~nLH zc=q^lIlMLVz4N5|e|AcSu2nc-m3>*C_Xt=<+h4X>Cxe;BA}z?{iK(C^*1uRx=h!( zX9Bphvslp=;OG_ur9;rY_a(Y#u(=RA%`wIdA32Z;)YJq1-2c(d6?O^vTEA^0jczt0 zyU=DMkbaEiXvLE|a}`Dy{L$>bmb2orPmr+T#Vz<2l$s)ONCk(4p+rY~^yHjCy+e@b zBuY>9K_gz@fA%^(oUG>tsT8rEZHZ<4{V$b%j6;UAt)o7L(PM)N>Mv)6I5;qE=3Iji zbIQL%SZf)|*oRSg=ShtS0kz*EuD-6MY^UX=PvN3suf|qtx8F)&H>%d_6fPHZikSG# zLK4c|)67Lb*v^qVyJ;^S1g%tpN{!gXnu~}(ciuzhe>!0;efp;$ik2)a$lI{}R#Tqh z{3?vhJE;RUk6?#I@vtNzdVo$Z;0(8y>1t+XmEFE?Lc zxWF{D;uDgIK2lb$GFuZb)N$3wFEWh@WFRc~$60=!7-}E%d4z`5D5)K125DeEe8>yc zJ4>{de*#oe+9J*feD%LCDpOPE4V*70sT~8_12;if^TI9U(&d`fWEMe2aM!Xt!%f~R z>Q*5P2}_;<;lTr0@k@>Q1era^HR&HSJD#FYcw>@oV6Tm2={75(l(xMgHebz)wcoUR zz6Q{G6HXXd@TSXjDl8Y5F%ZtXO192_s5$JFloeMR?)xQzt7(Djk|B^cYN{QqvtNVvYBr3wbI(;@JexZ+YAy&KB$=g-m-2naOYi)}B#{RScS z;4Gbx#UrIC`pD)t36lImtZK#qog$yrz_R9aYpTI`?_b-N*oXXiH$B0=h}HF&^xQ&Y4Od9brnFML|3odh6$-P7R|7 zU^n6y1ZWj~wy>>64+l#c9=7Moe+s@Q>G1Az$fY_y^#}q?o_C)Zqq{kgj4kh9pur^% zn`u^Y_K;lTKYtDwG-PW@%T9D?#*~{SHjgP&XyUOC#STB5|mKmrOZL z_6v_(!Kr3dZAwMe)9qXHWcp|U24Nrt-}7X5N`jq+0F%4NP96kehINUWe-_NZf>ItU zqF@oSANQ%yZO}i_;`IWCBQqBr_APyV3-Uvv_G!&*M*;%S5FWn}aT{2BEgH{OClPbG zW;MmUApheIhzr+eF>tg)r+m=BQCu3XN3uNA)7Byfb`hnFD_yOeA}p`e6v_7I+wt4x zeRs;+B~8<=Iy~&UGZeyne@gk4EOW2ZV7GS_bOWM*e^U1S5he4ISX2LuoM&o8uPC+J z5Y9PyG;bKz8oWu^=<|rdxvdZOkO<64RF!>p=s|0g*-#w_Jn+*C>>#+wUliEElBEcM z*Y@h!(L&LteHt!2{{ca3V0J}L6sSGcvZ;a4%h~?iX?jpg0Rle*6h8n001g0MX;fMd XcT3AY2LJ#TCX?|6P6mbt00000=>Sh3 delta 1300 zcmV+v1?&3s55)`{P)h>@KL7#%4ghhsuU3)0TTYJ!006@o001hJu?H=YNYQ^uOsdv} zX?A7K7@VK8fF)x{CDm;X{tBQf!Z&J8{9Wb)hvlN1yJUFlYYGaBk7 zA3dloIt|B-LBKvGL_F-Eh?#p+_+W~0vK>xcmR@gbesMR$L_8BwFg1jkRtvuA{M6Ac zd!>5wi@a?m!IoyMw|>?z`S^bzz_7CQl*UB>u_r)Zlbn%(Ph?WJN4m5UDY=v87E&24 z>~DKe63iLza44p3dm<|qgPLus)qD0-))LC{XRyf6q?%Mw;DE6v;AqFDBD`g$GJmK~ zn2I)dBUew?9u4ZEj7{G%%dMvCo|A`23WLAw0RdeA6Z&w+9r1m-`FVe=VVYJSxcY2h z1SRg*Cp{3^EdM!%o+h=KK)^FzjW)i;dH}qbJF^2>GYF##3f|8HlVGq2%zjYp7yxv?(xU@Y1n--*{VqvGRKU?< zU@3goA8w#m*N+`ly7+DlOysBqqlr%RC3e(rD}2#qZ_ayE7DyGqxW#w z+f#}cB=`|jIk})i(;$25F1K)06&Yr?8emN&$Gz6bZ}I5CxZi)Ps(ddHB-P!zEqSJ-may4+tZ_f_q!l2apS7Z(^m2zZl}8JuyREs?Z{E~f3MMYI_Y_-R-s`A3(z0u zJbNcU~x>E`y1u%&ZTVIhIuH-|;ODX}7&e4>k`a`D$j zC3ZK50W}RJUZ2r{mKSlO*v#Z>Vu^%LDM#LfQ^(vmbK<}IQnVbS^RxGnN~N>o$aE#r z61-zVd|`hrM*|gn>nNn3PXD3!AOeI@RackwIPH3Ot$zA%=X5*i^Q<>dJWJu`ihN`) zoHtK_Foq=G&x;b<()4&{)n8q1GTRN5R|8Ku((*71G358zbQlzEfq#Y%?|Gr1-f;tE z(29WOUIL66c9y65E*cafyxkxl6^2?v3|oGby)J*4UTpqx8f!PG5JGJukLnHple)i8 z-+Js?33nglLD6^e^P=3HfRISn{n|M603pkkEAnI|_e6@+Z`FB<*Y9N~Rp!JGo1uYYCKs zv1DQT$w48JhX6A^A|V3(FaZ#&(~Mfk+AjtgOxX)qN@a!#;QHJ+Vu|yHL1)hhe}X!0 zm%jW0Z8FzRZ`i00rNoIw;Q#rINZ3$I0Rle*KL7#%4ghhsuU3)0TTYJ!006@olb{Dq K2G<1u00021;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n}\n", "foo.asm_0.w.b()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.g()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" + }, + "B": { + "test(int256)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: END INLINE ASM 2\n\"];\n}\n", + "test.asm_0.a()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n}\n", + "test.asm_0.b()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-legacy.json index 344d6e29cd..25a852eeea 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.6.9-legacy.json @@ -1,5 +1,8 @@ { "A": { "foo()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: END INLINE ASM 2\n\"];\n}\n" + }, + "B": { + "test(int256)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: END INLINE ASM 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json index 0c50d020c3..9cf2555b40 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-compact.json @@ -8,5 +8,10 @@ "foo.asm_0.w.a()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n}\n", "foo.asm_0.w.b()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.g()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" + }, + "B": { + "test(int256)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: END INLINE ASM 2\n\"];\n}\n", + "test.asm_0.a()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n}\n", + "test.asm_0.b()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-legacy.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-legacy.json index 344d6e29cd..25a852eeea 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-legacy.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.7.6-legacy.json @@ -1,5 +1,8 @@ { "A": { "foo()": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: END INLINE ASM 2\n\"];\n}\n" + }, + "B": { + "test(int256)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: END INLINE ASM 2\n\"];\n}\n" } } \ No newline at end of file diff --git a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json index 0c50d020c3..9cf2555b40 100644 --- a/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json +++ b/tests/e2e/solc_parsing/test_data/expected/assembly-functions.sol-0.8.16-compact.json @@ -8,5 +8,10 @@ "foo.asm_0.w.a()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n}\n", "foo.asm_0.w.b()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n", "foo.asm_0.g()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" + }, + "B": { + "test(int256)": "digraph{\n0[label=\"Node Type: ENTRY_POINT 0\n\"];\n0->1;\n1[label=\"Node Type: INLINE ASM 1\n\"];\n1->2;\n2[label=\"Node Type: END INLINE ASM 2\n\"];\n}\n", + "test.asm_0.a()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n}\n", + "test.asm_0.b()": "digraph{\n0[label=\"Node Type: INLINE ASM 0\n\"];\n0->1;\n1[label=\"Node Type: ENTRY_POINT 1\n\"];\n1->2;\n2[label=\"Node Type: EXPRESSION 2\n\"];\n}\n" } } \ No newline at end of file