From a1eb6a365a218710f8f54274824a1d0d0bdf8282 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Wed, 25 Dec 2024 12:14:20 -0800 Subject: [PATCH] Fix rewriting static methods when converting type to interface (#31) Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com> --- .../rules/classes/ClassToInterfaceTest.java | 4 ++-- .../rules/classes/EnumToInterfaceTest.java | 2 +- .../ClassToInterfaceRedirectUser.class | Bin 2519 -> 2611 bytes .../data/classes/ClassToInterfaceUser.class | Bin 2456 -> 2543 bytes .../data/classes/EnumToInterfaceUser.class | Bin 3369 -> 3494 bytes 5 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/io/papermc/asm/rules/classes/ClassToInterfaceTest.java b/src/test/java/io/papermc/asm/rules/classes/ClassToInterfaceTest.java index 584814b..1728851 100644 --- a/src/test/java/io/papermc/asm/rules/classes/ClassToInterfaceTest.java +++ b/src/test/java/io/papermc/asm/rules/classes/ClassToInterfaceTest.java @@ -8,7 +8,7 @@ class ClassToInterfaceTest { - @TransformerTest(value = "data.classes.ClassToInterfaceUser", copyFromClassReader = false /*required until asm merges https://gitlab.ow2.org/asm/asm/-/merge_requests/403*/) + @TransformerTest("data.classes.ClassToInterfaceUser") void testWithNoReplacement(final TransformerCheck check) { final RewriteRule rule = new ClassToInterfaceRule( SomeAbstractClass.class.describeConstable().orElseThrow(), @@ -18,7 +18,7 @@ void testWithNoReplacement(final TransformerCheck check) { check.run(rule); } - @TransformerTest(value = "data.classes.ClassToInterfaceRedirectUser", copyFromClassReader = false /*required until asm merges https://gitlab.ow2.org/asm/asm/-/merge_requests/403*/) + @TransformerTest("data.classes.ClassToInterfaceRedirectUser") void testWithReplacement(final TransformerCheck check) { final RewriteRule rule = new ClassToInterfaceRule( SomeAbstractClass.class.describeConstable().orElseThrow(), diff --git a/src/test/java/io/papermc/asm/rules/classes/EnumToInterfaceTest.java b/src/test/java/io/papermc/asm/rules/classes/EnumToInterfaceTest.java index 87c4840..5070359 100644 --- a/src/test/java/io/papermc/asm/rules/classes/EnumToInterfaceTest.java +++ b/src/test/java/io/papermc/asm/rules/classes/EnumToInterfaceTest.java @@ -15,7 +15,7 @@ class EnumToInterfaceTest { private static final ClassDesc API_ENUM = desc(ApiEnum.class); private static final ClassDesc API_ENUM_IMPL = desc(ApiEnumImpl.class); - @TransformerTest(value = "data.classes.EnumToInterfaceUser", copyFromClassReader = false) + @TransformerTest("data.classes.EnumToInterfaceUser") void testEnumToInterface(final TransformerCheck check) { final RewriteRule rule = new EnumToInterfaceRule(Map.of(API_ENUM, API_ENUM_IMPL)); diff --git a/src/testData/resources/expected/data/classes/ClassToInterfaceRedirectUser.class b/src/testData/resources/expected/data/classes/ClassToInterfaceRedirectUser.class index f6bc234d9801b79ba11ac9c4144f243dbb8a11ac..bf750630e45882d2de16d15200a2ad971187bb05 100644 GIT binary patch literal 2611 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 diff --git a/src/testData/resources/expected/data/classes/EnumToInterfaceUser.class b/src/testData/resources/expected/data/classes/EnumToInterfaceUser.class index d34b2c42a9590b6ecc2f787b4d4a65b04471e370..a8b4afd59817bf1b85460c646c66e6f0f621b40e 100644 GIT binary patch literal 3494 zcmb7G`EwLS6#hEd>?E6!goSY5XR;hi1VmYggm49xAS6T(6(^e^49w0fv$JUMJ`hE` zLGeEDRs^C#f~7^3Ra#~FH(7o?Gn-6cvnBh(Z1?Ne@A%&Ly8G{cum28UJ+8%2fl37t z6;+4|)F07~Ye`eH`jWePj_4UzAiB=547Wv~vazYV2Gyuh5K~bLRbX1L=4wf|Kd0xD zTFx-CIWyUsGd5d=tbk}0n2{b^BNb-|<5bk4UZ6_L<;;G8*^NzUFNT6^n8`y0E8`lr zmD~~xQniRq=QJHtTj$!rHU@E35n66?5W{zI( z&$~Jkth5Wnr@{AO*vb32&E;lY%cf$OjX4VDs+foQ0u#JAN9zbEIl05MXe1n|??2Vl z9m7H_Qm|M>qfB=ENV0x$@&e-={aC?p^bXtVD41p(0tppMu$1BT=?pK`Sgr&m!R{=u z7KZK+?Bz%*SRoBImj=72D=@KGxiGXb@@1upRah;cGM*iJf2XUtM&@SyAm=#gxJJ6W zdrT@6J*FfV*Q!WKB8rXD(|Q#xxL2SiV`p=kqj%XvK8&m+W~!-O7N=EKW}`r)vE8Tj zCKa1KQ*F}JRu$W1&=E_^>Qb;>#SWxdGu!DkEY0-#ftIS#p<KVh=i5 zGbX)B&zPE|RGX>gS+fbFkn)5cU-rt7x^E(bUulmF)!3(EKOSID9@or*PE%}`1Lf)) z!-IH8!NW4dgGCa1t<~x{T0bo;Zah%FNrK8$qgLkCqauS|!r(=)>yW^TFu+CXmWxRN zcg^w61>%y=^X!my>9X4`S9cC+8GUbFcL;r(-Kz`Kr438(C}ewdr%UTGDT$};jAnKd zQaKNV5%;jcbmsY<%NS1au+c5o;b9{*Lg}+oU}o8KhomyKY)`L72FnP%R`i%2q|8p{jq;YLo(b{Zy_D`6a!6x6qHqGia_56agZ67Vs0 zoUe{G0(a%KobI&dvs-n>qq%zT0-4l7?_qH;cvu_^9u^BihkJ9`%PmyH;wjp$;sbmb zgN~2L=-YBDF9H>x;I!QRslck++C6-0%q|;p69fDl7o>|XBuX6uEw|;T#C4M_?=ggu ze-)|t8sEqWzGaceCRaNjdkVgf;Ro!KpB~;NeBgM|W;01GpG`Ui_E@rb7N_+-Ez>U# z0R@-FxaF9B3$E1SG6v*lxBP6CpY3R7L=}870#QD4_*&(+kFzBI1^=rO*C4KNP=UjN z5)gyIvFa<}2##`A1GBhUTqGx}Df?>x%8u)J2S_hT3}Ji)ZeY^R0ZdtX6|)li2eIJ( z>v$LFST=-ZLN2b2aCK^g%Y!(-wn|Q_IJu7Zfwj@8(P2GBE-75%e_{al4C3Rf*uV+L ziO{5N5TE&41K{|}qLMO%uLO!K${@bGiY{&+#Kl1z@a6GG2Js`sGW|*~{cbdHd)if0wFpZC#8GIVd!~x9W#Xbi)%*B(KkC&-=4o$d#1TJAI ze#J8U$>*Sia}Obl;16U8tc3VCo<=qyZomNdA7cR;*(VP2jAbRx!lf)iZ>Lb;sEYm` z!*Q-g>D9!elqr;e-YWxZ{j}!WI6;}Oe*)3^8ri*ElXag=Kavl%i5s}QWC%Z1kc9kE ziTn+eCh=dABPNxG@UtM5d>uA&X`Nq2bl8cdb*>8E7lV6ETBp|QcoT0E)W` literal 3369 zcmb7G`EwIh9RIu?*)|FEfLX!;CXJ=y{4nt<7!+xp4MyyLZJ4vI;BPp)trb9jGflvj)HQ5<|6QI5-G4D zcR@F&tVu1}r#Yvr#9`G;7+ShDW?7S&l!Ac3ZKa_KsssWao{KKs)SbNo<&n1GFhU3i zQGq1_70xL=EwDcJfA(|=RBEPUPYbMYvCedgma8dUPo|7$cS@I5DX13^-2$sThDAZ0 zVJt^OHI|`KU}GefGsJUJXWL>@Et+Y?gytO4sKN3`K4j3bb#sDTS72p`TvydpW3|Bc zNGTnPFsQ{EdLpMyHUcp&&w(t9Blx;NlSd zn-9PFLoZoM-_18a%ehB2j6vPe=*ZjA8pL{Rs0m;r3Os|UXw z^oH>uP6nyOL+n_QUN1}!%P>7ct$M;3^|X47%x_66Q%!1NjA4yr9v9ekOSdgMp_{59 zomjHfP=5{MQpAKnm1B9?7KZLc;Ebh-H8<|~z3l!9s6k*#H8L6(Y!f4;+!00wQ$aX*+^=#s-MejDoo0ox z(QJy0ztMuTLK|Fz{s<523?P@SE?zaA18~1Cwv`)|9S*g==%qLZ#&l6Ty zhkm2$D#dBBmU}rmSC`_)^J>E#GVXAzU(A9{CtJhWR=_+j#?i0ZuEi{FsD*!rT7)LG zX@5(d?kmer?#p;j-g%$x!YlC)WvN}nN6eCis^wdV>_5S$ z^5io@d#r>eP!rQltv{0-)9fL2%pj#cX2n%wnDr+2Sz==$k<&VR5bibE4_!@UIRpo- zj2+hw>XK9KKFe~_j;*G=cU>AgSc4UunLvPzoewkqU*#^!ui&?`{bwxwiHkCP&VLC4 zg7|{}5=sDSP|I&M>io;%dz7P!v_EIibYvczf!OBuIYi5F9XtAFaMzY=*wcP;7W+=j zqZjDkI)^?X4?8M&+ET&eSsd-Cl$%O!<}n0x1X=QJmR-~1}A1Qat)7i!*zS! zMx8~%L(PEeQ$DC^4wC}@Nz*K>Yp{8J7H4O1&ZE~qJ&Wf_mgbkc<`1KR>m~G99i33m z9iMyrkD!r*zX_da;W%D_!=w&iHAZk7;#i9m*5MqVH5Z7yj5d6UcKm=X_=Qi9Kd{Yp z=P|mh0>9%0S4I%OlFv(YaRX-XGR`vq5nRD5c$K>B#3j5&S_P$@$Lsu6Qr=m-!P5Yx z8hDd5g>pdY<