From 0684264b3a82dd96c86fac422a1a033eef2fe9d0 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 13 Jan 2017 17:57:21 +0300 Subject: [PATCH] IDEA-166073 Extended Width (long, double) constructors cause issues with anonymous classes --- .../main/rels/NestedClassProcessor.java | 4 +- .../modules/decompiler/exps/NewExprent.java | 24 +- .../java/decompiler/SingleClassesTest.java | 2 + .../pkg/TestAnonymousClassConstructor$1.class | Bin 0 -> 786 bytes .../TestAnonymousClassConstructor$10.class | Bin 0 -> 682 bytes .../TestAnonymousClassConstructor$11.class | Bin 0 -> 596 bytes .../TestAnonymousClassConstructor$12.class | Bin 0 -> 564 bytes .../pkg/TestAnonymousClassConstructor$2.class | Bin 0 -> 788 bytes .../pkg/TestAnonymousClassConstructor$3.class | Bin 0 -> 817 bytes .../pkg/TestAnonymousClassConstructor$4.class | Bin 0 -> 770 bytes .../pkg/TestAnonymousClassConstructor$5.class | Bin 0 -> 708 bytes .../pkg/TestAnonymousClassConstructor$6.class | Bin 0 -> 660 bytes .../pkg/TestAnonymousClassConstructor$7.class | Bin 0 -> 686 bytes .../pkg/TestAnonymousClassConstructor$8.class | Bin 0 -> 655 bytes .../pkg/TestAnonymousClassConstructor$9.class | Bin 0 -> 727 bytes ...onymousClassConstructor$InnerPrivate.class | Bin 0 -> 1201 bytes ...sClassConstructor$InnerPrivateString.class | Bin 0 -> 976 bytes ...nonymousClassConstructor$InnerPublic.class | Bin 0 -> 894 bytes ...usClassConstructor$InnerPublicString.class | Bin 0 -> 670 bytes ...sClassConstructor$InnerStaticPrivate.class | Bin 0 -> 1051 bytes ...Constructor$InnerStaticPrivateString.class | Bin 0 -> 804 bytes ...usClassConstructor$InnerStaticPublic.class | Bin 0 -> 796 bytes ...sConstructor$InnerStaticPublicString.class | Bin 0 -> 549 bytes .../pkg/TestAnonymousClassConstructor.class | Bin 0 -> 3315 bytes .../pkg/TestAnonymousParamNames$1.class | Bin 0 -> 586 bytes .../pkg/TestAnonymousParamNames$Clazz.class | Bin 0 -> 537 bytes .../classes/pkg/TestAnonymousParamNames.class | Bin 0 -> 556 bytes .../results/TestAnonymousClassConstructor.dec | 308 ++++++++++++++++++ testData/results/TestAnonymousParamNames.dec | 22 ++ .../pkg/TestAnonymousClassConstructor.java | 103 ++++++ testData/src/pkg/TestAnonymousParamNames.java | 27 ++ 31 files changed, 471 insertions(+), 19 deletions(-) create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$1.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$10.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$11.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$12.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$2.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$3.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$4.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$5.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$6.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$7.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$8.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$9.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$InnerPrivate.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$InnerPrivateString.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$InnerPublic.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$InnerPublicString.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPrivate.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPrivateString.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPublic.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPublicString.class create mode 100644 testData/classes/pkg/TestAnonymousClassConstructor.class create mode 100644 testData/classes/pkg/TestAnonymousParamNames$1.class create mode 100644 testData/classes/pkg/TestAnonymousParamNames$Clazz.class create mode 100644 testData/classes/pkg/TestAnonymousParamNames.class create mode 100644 testData/results/TestAnonymousClassConstructor.dec create mode 100644 testData/results/TestAnonymousParamNames.dec create mode 100644 testData/src/pkg/TestAnonymousClassConstructor.java create mode 100644 testData/src/pkg/TestAnonymousParamNames.java diff --git a/src/org/jetbrains/java/decompiler/main/rels/NestedClassProcessor.java b/src/org/jetbrains/java/decompiler/main/rels/NestedClassProcessor.java index ef64f2c..b456cc8 100644 --- a/src/org/jetbrains/java/decompiler/main/rels/NestedClassProcessor.java +++ b/src/org/jetbrains/java/decompiler/main/rels/NestedClassProcessor.java @@ -393,7 +393,7 @@ public class NestedClassProcessor { mergeListSignatures(interPairMask, interMask, true); for (VarFieldPair pair : interPairMask) { - if (pair != null && pair.fieldKey.length() > 0) { + if (pair != null && !pair.fieldKey.isEmpty()) { nestedNode.mapFieldsToVars.put(pair.fieldKey, pair.varPair); } } @@ -406,7 +406,7 @@ public class NestedClassProcessor { method.signatureFields = new ArrayList<>(); for (VarFieldPair pair : entry.getValue()) { - method.signatureFields.add(pair == null ? null : pair.varPair); + method.signatureFields.add(pair == null || pair.fieldKey.isEmpty() ? null : pair.varPair); } } } diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java index 2db188f..f31f3a8 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java @@ -210,8 +210,8 @@ public class NewExprent extends Exprent { ClassNode newNode = DecompilerContext.getClassProcessor().getMapRootClasses().get(invSuper.getClassname()); - List sigFields = null; - if (newNode != null) { // own class + List sigFields = child.getWrapper().getMethodWrapper(CodeConstants.INIT_NAME, constructor.getStringDescriptor()).signatureFields; + if (sigFields == null && newNode != null) { // own class if (newNode.getWrapper() != null) { sigFields = newNode.getWrapper().getMethodWrapper(CodeConstants.INIT_NAME, invSuper.getStringDescriptor()).signatureFields; } @@ -224,27 +224,17 @@ public class NewExprent extends Exprent { } } + List lstParameters = constructor.getLstParameters(); + + int start = enumConst ? 2 : 0; boolean firstParam = true; - int start = 0, end = invSuper.getLstParameters().size(); - if (enumConst) { - start += 2; - end -= 1; - } - for (int i = start; i < end; i++) { + for (int i = start; i < lstParameters.size(); i++) { if (sigFields == null || sigFields.get(i) == null) { if (!firstParam) { buf.append(", "); } - Exprent param = invSuper.getLstParameters().get(i); - if (param.type == Exprent.EXPRENT_VAR) { - int varIndex = ((VarExprent)param).getIndex(); - if (varIndex > 0 && varIndex <= constructor.getLstParameters().size()) { - param = constructor.getLstParameters().get(varIndex - 1); - } - } - - ExprProcessor.getCastedExprent(param, invSuper.getDescriptor().params[i], buf, indent, true, tracer); + ExprProcessor.getCastedExprent(lstParameters.get(i), constructor.getDescriptor().params[i], buf, indent, true, tracer); firstParam = false; } diff --git a/test/org/jetbrains/java/decompiler/SingleClassesTest.java b/test/org/jetbrains/java/decompiler/SingleClassesTest.java index 6bcf941..7c1cc33 100644 --- a/test/org/jetbrains/java/decompiler/SingleClassesTest.java +++ b/test/org/jetbrains/java/decompiler/SingleClassesTest.java @@ -62,6 +62,7 @@ public class SingleClassesTest { @Test public void testEnum() { doTest("pkg/TestEnum"); } @Test public void testDebugSymbols() { doTest("pkg/TestDebugSymbols"); } @Test public void testInvalidMethodSignature() { doTest("InvalidMethodSignature"); } + @Test public void testAnonymousClassConstructor() { doTest("pkg/TestAnonymousClassConstructor"); } @Test public void testInnerClassConstructor() { doTest("pkg/TestInnerClassConstructor"); } @Test public void testInnerClassConstructor11() { doTest("v11/TestInnerClassConstructor"); } @Test public void testTryCatchFinally() { doTest("pkg/TestTryCatchFinally"); } @@ -94,6 +95,7 @@ public class SingleClassesTest { @Test public void testKotlinConstructor() { doTest("pkg/TestKotlinConstructorKt"); } @Test public void testAsserts() { doTest("pkg/TestAsserts"); } @Test public void testLocalsNames() { doTest("pkg/TestLocalsNames"); } + @Test public void testAnonymousParamNames() { doTest("pkg/TestAnonymousParamNames"); } private void doTest(String testFile, String... companionFiles) { ConsoleDecompiler decompiler = fixture.getDecompiler(); diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$1.class b/testData/classes/pkg/TestAnonymousClassConstructor$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5c42a2c56ec8ee956af92bcf01739e5107a0a354 GIT binary patch literal 786 zcmbVKTT22#7(Jt_o3^Ie{eCm>5}DvbPy`_bkwu{R*2B6EI8UvX{UuPEsUUe5`XcSP`GAw_V)aF`tfU%j*YcG0zEyI2c6A=^i}27^&iEzXdv z3dyf~-6r?ycGIOyx~d%8ZP=dB@mJE&12R|_QgUxF5vOo>^y!%r&C3Xz{y7Fiyrz1d z!_S32c>7P<`TDx!E!dZP6xBt7wvDD8suu1RDpr^-DDXo(BXqlKG8zb+Ms$sH; zeBl`^U)W_`#Ww z;&CEFzvY^~-;%-)ywDD$cTDsXE_iUtP^EtimD zSK6jKFg>pPZ%|VWF&J$j953p?A$Mo`Y1M-!HONeo4v9t5X2|qp=-JK%R|jtWIo{r_ z`9RsZb78yE=VEl}1YW1NPIxQNr7nlLJuS3h_HbdbT ztTMF{<#BaoKWoKnY6FRy+62n9eT^Oh%jeZB$|BK`BAq7dhN215*~acOSfgChUJ!dC zAchS6lM%g+8L}Hup)3r{l1C{~K~*k`9P*T*tOAO}i(`(w80JwTtziL+6a&R#6#M!V Hx`xyzvQMd0 literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$11.class b/testData/classes/pkg/TestAnonymousClassConstructor$11.class new file mode 100644 index 0000000000000000000000000000000000000000..4cc1fb9b1800a7e384d2278b8dbde240af2bf272 GIT binary patch literal 596 zcma)3(MrQG6g_F{I%joS-KK&MipZwu9QdLWL56}*McCMT)|D;VCDNvXpXHO_gCF2W zi8q^XLuVk|d(OEzxi|Uzdj9}$g3SVKth!ipQDVrQ3n}ykL#Y}(@Mm6+xg6BnIuUZv ztaTZjmg+|g#X!jDE*tftq{DkLF@B&z9(Q>n4E`Y2Xl+ zM5(@%O1_L#mX5WSlBrIzP^)CO(P%O-D)y)QU?{XzmW0u@FgNe~>2zeqpoXtx7^{@V zxQ+Bs^<7jvtYgE2gE@xX|8&G~I=gH2Q2P1AWJ8$01yxrM-|9E`^aEi@5Of1`2u~BBoo(n1T1w*FRY1an~R#Oc*L!m1q zzlkRv5Bshc5L4)N&zA%GXs}FDlgMKJk zjEu%0pC!~HY>~J3x3^xvo(USTY0svG4de({(pDQYn5Bq{;b1P!+n7gzvL+UYH&8^0 VyoE(9Ay248oIxI>V-mZH+$UZDiWvX^ literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$2.class b/testData/classes/pkg/TestAnonymousClassConstructor$2.class new file mode 100644 index 0000000000000000000000000000000000000000..fb671b11eb6b4db812e816cfdd8fcd8e4bb87fad GIT binary patch literal 788 zcma)4+fKqj5IqZp3Ra6KUhu}vgiC@#e8ZR+q6q|yi3FbuG_VT0rY$6XmJi0n2S31% zGR{`Rqp+Ll%$d%aotfRQ?~hLa=g3A7#BLNC_H-n5>@$SD5qEQE4B6K6)9|!oyWW+M z;$gI0-NB;;?r_fs*hPDO_Cl-gCTk^r%vC#;p)81zulD| ztr@Y+YtbJ|my2QB_C|7`0-*oG(*bV$f&T%uu^-tYgMj9WR8?p zkN3JARRbPHRjncuwtb_+eWD*oCCwqjZm|b`?Ur|VCE%)6shd!$)_$qM;8b-}FbvnE z5*O|JYY|@Y>ws2rHSP1D!9!{D??uN7WbjUv5@D=JP`cW^dtsaOGUDcb%3#RUbvyLM ziL{NE{~de7PC(X&)ef+g@vRG=kSR#GJpN{q5_g4IOd$3>&OLPw%x{@rLweDF& zuZw<)X+meTpQPxO*Pg-3>+A)IC(0AZ&^Hyc2Qfg{Rw5ofLliBt^=vf{!^qN!Bt|Gp aAcs+k4#qH!K|(X%JqX6DGt_;-Ccr08bl?U6 literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$4.class b/testData/classes/pkg/TestAnonymousClassConstructor$4.class new file mode 100644 index 0000000000000000000000000000000000000000..74820acdeed679038981bd12419950d1314bc138 GIT binary patch literal 770 zcma)4TT22_5dMy?ZrbLp>|!@>ff`hTZ$=POpjZTk@9VngDLp54k3v7IhX{J;2lS(& zIZICw>B8*HeEZFunQzbM*ZT*621+r6u^oqj9TPbdy9`k^=6?B%q11hP9G%{~zPc1r zJWu7!Z%u69Z%N@RZ{{fJHHm)C1y>ggmC6$QPP^J?Fj{ixG9NZS&vCE0KCk%ib|(+^ zoT`&o!kI{)i_wj%#&T$4-@*Y7EkqEtV4^@;EtIOYC Xz$Uh^Mp2HwgvskiqkA+-KFIJ5DGbLN literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$5.class b/testData/classes/pkg/TestAnonymousClassConstructor$5.class new file mode 100644 index 0000000000000000000000000000000000000000..c32a742c0732fffdf98b7230aa7b6f1d1b9cba0d GIT binary patch literal 708 zcma)4TT22#6#mBD+%n6uG_wnI11-peddUbv3W6;H#rJU?bZVW6-BIXg^%V5b59mil zXIJ04=)lZ5=R4n=IhXnTdj9}$imenZtTG$R2~X>B*2GeXEoR>OK!cLFR$`{M4;9 zMQE;+Rxf=$2xDJetIz}k&*)(Ptj55IoBf#vL#m+%fhTTc^ziP#fsUgpDBo-4`8uR3 z?u6;-j)S!{3Rq9W#syD#tg|MX*EI3WRY-M-;f)^D*ylh literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$6.class b/testData/classes/pkg/TestAnonymousClassConstructor$6.class new file mode 100644 index 0000000000000000000000000000000000000000..2dde5175e4c2ee33081bf9db238cda9691302818 GIT binary patch literal 660 zcma)3-Alqy6#rc}-LjQsUuv0sg8EPi(u)yo$q=U2H$2sS2_neQRI-yxD71=A;3-JUDdZ*&bJWS$yaj%I5ERv#X nSXhelCYF(*tcDfx6Iex-P{$h9ktSB4OoA}#(a6ma?!+2jN^z+! literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$7.class b/testData/classes/pkg/TestAnonymousClassConstructor$7.class new file mode 100644 index 0000000000000000000000000000000000000000..6f08d90d5ead067f7d06644b5ce93123fd7da270 GIT binary patch literal 686 zcma)4+e*Vg5Ix((#@1-tc)wJIWv29_MBng-d|n;>|-?p4RcxOm^ZLsV38pm4R~1EW!SXuZu|AN7e>cI ziie?$!1D*Ve#&6TUduRe zy;H6Z-uTn@j&ebIPlW5skX&4N(LnYLESp$C(Zm?iCJczIM?NTK2%XcqM$xR+p1`WL?PsJO zDNi9w|8&AGVuG;hL_B(@C@Q4-sct56$kPrD1pKtE~j#17aiIpr2teRLevCfbVCc>{CG3@pp?#G9H?g!^m z$)~9b{kCiSep^XD@Ioh0-U*eT3Mqm!hFa|(_1#W=z+kl1h%*#=Lh|cyI^rTG+z2g%r{jOw7=(VpmmdG3>`zMVGt@hpuoKa=%z5)=dtf zm-ORL*6IV4>4gn?Y*sAlfiXMizmcRlQDH~YAGG+;tNJ~=IpH?@3FBsyWe*gdg literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$9.class b/testData/classes/pkg/TestAnonymousClassConstructor$9.class new file mode 100644 index 0000000000000000000000000000000000000000..ab22f7bda022e3c1564cef3d20d8c26f22d29b7c GIT binary patch literal 727 zcma)4%TB^T6g>l#@~DFKf$t|KfJR)nkYG#<(S!tz35IJS*O|qa4NE ztElI5_sc(q;;&ye$Ewn4u3h{|H(A!dX0H6*t4bFebZrc}L99^F%W6cAi8RFwp%xOv z0CLscXRzwt3ldM1CXl6fDkkqBM_3CH4Hl*-YNX|~SPppl6?bJ4_Y|x`laNs$LgOMEL5|P& zx!C0*ub_aUgpz~@3}Nr1>86SdJI%qTUg6kqy?x8JKA+mYTkGqtTeB_KbNr5HI~6kD zGcD7rGHBWo_KkX`#UR$~uEDV0G%e%6KW!V%vEJ^}PONEn^nOcsOun9OikuLGTDL62 zdFPmCx<{syWkATF)8gXbseb{8In!x0XtZh6B|Kz!yIc-S#41&IqQa2sC=5$nP-%rB z#YivZ&7d6FzSA+@n7lCCbK8(V(a&@hQCwEBhIOu$88-QDp|4xL!jb2gR`0cM_Pd6o z;t?KG$~mq);o_-^XLv55qGAs(81f4nf3B7c(OIa&_KDH)=<8XGL1hVPyi8$zFfgnx zLqcn0nlr3(w5eme+J(c)Jo|)JpLZPb>`4TM4eg>K1>9Pg1l7@Ei2sjR3rV_wt8^h* zG|Kxznm{kL3G}Jc%0~z*G^ew_&@~0bS7tW$+$QM zn}rDn?$rRk9PpI?!ppcbg_kMI3A~Ig4$r}`jUDn3h#t>5jZKg>|3YOP)WM4BmMm}>Ls;qkR-K8Cu!Vkr%_xb{6nb2bWgBT8UbHF3C@E` zH_)BRQ5uK3Q(bEcvbE@|5=_=Ztv>ZmTPkh@tu8HvdejcO%^(hq-Zy4Vg7kgVTE(B^ z@H|M>Et$Z#Mw_N0=H2j=ii0$)O3VR+$+}n;e7RqtBc!rrZ^OCZh=gPdFqxOP^a_-?)U_QRi&Pj-@Q$ oLjF>^nCVlxm^GA!08cSTG6&D7Id~49g94>7{-=|ar?~k10q*hk?EnA( literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$InnerPublic.class b/testData/classes/pkg/TestAnonymousClassConstructor$InnerPublic.class new file mode 100644 index 0000000000000000000000000000000000000000..b984943441530396685c2a2d23857208bdde7afc GIT binary patch literal 894 zcma)5Yi|-k6g?NVEG%n5EY=5F+Cp7Gx>ftF#zaX>AVf{tp#8YJOz76_EZK*NKg$nN zqlrJjA7#9QCatLfvzc=rb7t?En>#;#e*F$$ANvIqao>Q64IOm@S!^iS%wtR0Z3PVl zO#?f4pu^J9BIJ@2KW^+1wujUA6Z=TS$#WUXk7r>T_W~!5d!dYzDD{#sI$-)!U;4>2 zf@S>&f6#A@2wE>33qon=OYtf_b47IIxB+J>!_aerkrVkU{*%;{AVRS(rHJ07Zs2JyB^FpWI%(pNgR7T$XI)cN3;xQ0~|CA10aDq#nX zoY;p+n}Zg?XGoY^I#FbX7v|s=acYv1;UzjmBrWQ@N}ft~~xqC^KH?DCPNGVcTqXK7-ol$b3Wg_#9e&hLuWg2ED4yke{LO1;!^P zW>8^V5tYMw4@>D^Zd$(|#PpaG<++|({HI6d4hns8-W)=Aj GRe@jN?%+EB literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$InnerPublicString.class b/testData/classes/pkg/TestAnonymousClassConstructor$InnerPublicString.class new file mode 100644 index 0000000000000000000000000000000000000000..e96ecf433a49c078201bc02d4eed2d3d0cdbd649 GIT binary patch literal 670 zcma)4+e*Vg5IviwO&epIR_pyzwGV9-E2tn;1StqY@Yd4zB!-%rZX_4M&+Nk7m;|dB53-0+;t&^&W%V z_HP}Ag5h%KA|6^!&^0ZOn3Cb!rq?qASKuE~76uuL=bSsiRcv{#J*vf^C0ydtA<5xn zN7b<^)DxrJ(zsOywd2Qu?VP#7+~%L7*%h5?$UxDM#j=7G4XapV*q=DnaZe2T@8B-2 zfn!GushXJG#>8^e4`(RX#v7{lP@yGA(>^d=7hXj~CyN~2DxoeUr0C5zwqL*+uaI`$ zka{LY!j#~X-)qv}U>Y50#8pNagmpqfBPz2bDxyT05@rZVm_>nJmHuQ}!94H{1*fij literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPrivate.class b/testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPrivate.class new file mode 100644 index 0000000000000000000000000000000000000000..9e7f68865684b5753547dd34dd0cd40ff970d6c7 GIT binary patch literal 1051 zcmbVL>uwT36#j=hyE54)D~(9M(-(C>hu=kwi(0%`EQe{k|5q z7G)C^Y#Df9V4ETH%$2Ts&XBg7jdGhIRrh;>;i}_G@g_R!h~R{GJhJ2*zstQg4_vK} zjVbls4awJ#QUoo_MU`Pi8>$|c{c1}EuI#^zT(2hr3%ej5Y)c>ZwRmXJ+dVRHXyGxQFdY2P zB{3{c3LbY(MOQJDE=D3MNn2l0h7Sfp_89VZv+PW;{vuCLv29N|YqR3>c4L-1tNh;; z7?$kmKq|O)VH0$ll41E@#M)S;nXqU)fCT;NeL!C}X@ce;MSHO_LgE{e??y-!he+o# zLl}i2vO`??0`qg6xJYt=5`b5fH1q?&`u>b%7 literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPrivateString.class b/testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPrivateString.class new file mode 100644 index 0000000000000000000000000000000000000000..9352fd7392b93dfb2c181bd59368156fd90e2376 GIT binary patch literal 804 zcmbVL+fExX5IwV5cF8tC2&B+*X}C#TB+^Jc6;!DTP$5MvQX<}+trZ*+FWPlb_$;1+ zc<2Z4QHb#d!9$@Sypm_fbLM!?*uK5H`3qnN%K==>1{lGo0G~1EW8TLC!P`?>neT++ zdaW%kM7bk$t6Vp+(yiT%6M|cf{z$?^O=C0}^OVU_1(us+Cp^4(v zm&kSr#1w^p3-_@|`1XvVH|$nPWjp<^1gBpiti36R5Y(ey9Lhswo3s31MccO1Ie75x z^u#)sk4&ZEEBXgBPvOJF?lLA~EGV~_`_C5~5_`p#+vY0>~lm}B59w_%2V>7+YtpVtX s&*M0-pYoK3h({g|Q}H5lx3gh)R`6%} zl8S;qz#k=^i9(S`1P9J{Zr{1gFyDWC`3B$&Pdvht;}=6T+nGZ`h;RD8A!rnS84e=zYb-3A;Op=m2MJ=xGz#={olc&d8abM za$9Se_KYwpdYgx_iU|HB)`~@zNv1sQj@}QO7cw(1bfQ0ACwVr>wGy3~G>=S@?oV|& zCy-$2u!Jmag4av(G?K5B-D!7bzmqHRLHO|Th_G($W-Rou*)yrq!fPgz6 zS)*a$(8m!TyEyi7f+pegKlUap-OhUxUdhN13W0s!k{FGo9uTTQr_sG-{jn9_`#6|N zp3mY}gZ8X+*(ARv5LSa}A`jg8=RNtEG-2&;i}g{5{d@K>jo+d8 literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPublicString.class b/testData/classes/pkg/TestAnonymousClassConstructor$InnerStaticPublicString.class new file mode 100644 index 0000000000000000000000000000000000000000..8eec4e1ecd2f61463863fe5f1b42e30fd35d4241 GIT binary patch literal 549 zcmbV~!Ab)$5QhJ3YqwojTdQr=lZuC`U@u;zB1lmX78P20Q^~HOP2DDv%?du2C&hyg z;6sVCt>8gaFozkw$;{8pByaC8uK@P2>LHJ+hea&8sJW;!6b_`4_K>003`YE(w_>ga zt*$jv4cc3MhI~ig2!?VXl{ibsp)frj#uTXrI^uDk8=3KEFmH!4VQ8ExB}~_HE2E1v zjAb-cWbh|9otP(ypu~1?cROhHL}HJWRu5yHCX>64R*5xfWVPA+L95NcNTK?@Z3eHa zQxl03nKioctNd;@wT~GzTrB%oL4jfa-%T-8zP5NCjznY`a?Na!>wk*UKniQf(IaJt zklHGcb%~D2JLF5-PhdOGa2^R96v@t032;eeSH#yS5!I*3@GwV2Wt3H(NK}X%EWju4 LQ6xv-VHU*?tG|v3 literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousClassConstructor.class b/testData/classes/pkg/TestAnonymousClassConstructor.class new file mode 100644 index 0000000000000000000000000000000000000000..7c692b8115bf9f88cbead56bd6376f7acd690eb9 GIT binary patch literal 3315 zcmbVP>sH%F5dIcp%a(-+28RHJ0&yDKEjU~gE=`-zrXisTttqLS-ejW^5hJ;_Oha$! zv-AzxA8<~6P9LBT)zewsyjY>=WY3XCnw|Ofo0;9Q{LjCC{S9Cdzsb0UZ3&;m@u`d+ zlqBp#X@-x8j3_>nuqz|MC!WYi^7qeW^r0-_3mN@*D&b2R1AP7~8H0TOYZ)2-{*8=b z{{F3u5pJ)_7{k*9DyT}>lQDtqI5aN5)QR_9Yk$Nqf?9mSB3Aj>5C6Go(e3hJK`4nuPBet_1a- zSHmN-?b$ay99QF5GQ`$(L$_`-L~{9EhTaWxPh;rc(hcoV>#(9VcGOCZH0dp~s@8VZ zhR)wzWv}&2C*Z4F_2>J=9j$5IF-+t5&}=pBBy5;Q(`vM;mf2V%1f6HBYk5UfQb_iz zn^lLpN7QjYGsQ4*p1ost4j``?W!qWWuAR3?QqWQLMD#Ouj;~9`t^W8q)*h8tp*c(# zZH7#4>p(qHi#65QFFJJActIF1TyTm(E}5-HRlBG2>P-J{@@F}+f}6NSwYsoW**V$< zmiEHp9#$xid2ZSYWx5c`YB7}65?}UVDAQ$bdKAj^W+mhDi90aAs7PFlh4< zeo*iN$FzgH_tf2%Ufa{CJw%OMesxm8kN8Q!&-g{cuL@rBY))NBnBh_f_i^PwtI{@E zxX>-T8Ely=ui@n#)|rsLUV9G9P;9^qiy>F(>P)MzCaL5S=^N ze0X2Vg>ikb$xWj{bIz_dR;U27-nA8 z90R=Ey-kjB%k)w?l*nt@4V>C=Oc6kXIf!LUM4MUsqUv~UXc z2R-y)mF_WH8NnJoD~Eyl%Ve*SwKqpNbmbd0;7b(NDkoi5u=oV(_wVS#}ODMJw{3Z zX@D4|1tgDA9Cv-B>xkG{OSaKh<|#_qFw9P~lcEfTbs2GN_)d9B8y|gb^p~A{Tnf02 zP-RBR=mXzPhrL1(2pF`e^~liypY=BMFQ$4x`Hf zoNL7BEdi&)=p!FTU^MJ8x)MOj6QhEF;5J9~m?yUfcu1#$AFlgUdw#e^|HOD36XjF9nVvksRDrG&OrPLt_i0(8Z}(*( zf>CVYV?yY`Bm4dsIg-C)h%%PNby_V?vOw}}lJC&m49QuNMUpp2KSz?YS|GVd`X!Rf rB**9i=|@~SY)jC831PJZT9+HI!O}_6wKVhX4Qo literal 0 HcmV?d00001 diff --git a/testData/classes/pkg/TestAnonymousParamNames$Clazz.class b/testData/classes/pkg/TestAnonymousParamNames$Clazz.class new file mode 100644 index 0000000000000000000000000000000000000000..9e4c76a529c6e681fdbf61f60b9464bc43bf66b1 GIT binary patch literal 537 zcmaJ;O;5r=5Pee$m0G3ZCjyBd91s)n;7wzqBqovuO(Yz+Ex5sAKS*0ld|JC-Fa`{?3ll+FAs8_yQI_7QjMc;!a~iNK7;YO(Z0`8|sL~c50@@ME=T!A<@JS z@S}`(z^$FdedV5W?%ezR^YI1X7 (JI)V' { + f 69 + 18 69 + 1b 69 + 1e 70 + } +} + +class 'pkg/TestAnonymousClassConstructor$InnerStaticPublicString' { + method ' (Ljava/lang/String;)V' { + 5 75 + 8 76 + } +} + +class 'pkg/TestAnonymousClassConstructor$InnerPublic' { + method ' (Lpkg/TestAnonymousClassConstructor;JI)V' { + 14 81 + 1e 81 + 21 81 + 24 82 + } +} + +class 'pkg/TestAnonymousClassConstructor$InnerPublicString' { + method ' (Lpkg/TestAnonymousClassConstructor;Ljava/lang/String;)V' { + a 87 + d 88 + } +} + +class 'pkg/TestAnonymousClassConstructor$InnerStaticPrivate' { + method ' (JI)V' { + f 93 + 18 93 + 1b 93 + 1e 94 + } +} + +class 'pkg/TestAnonymousClassConstructor$InnerStaticPrivateString' { + method ' (Ljava/lang/String;)V' { + 5 99 + 8 100 + } +} + +class 'pkg/TestAnonymousClassConstructor$InnerPrivate' { + method ' (Lpkg/TestAnonymousClassConstructor;JI)V' { + 14 105 + 1e 105 + 21 105 + 24 106 + } +} + +class 'pkg/TestAnonymousClassConstructor$InnerPrivateString' { + method ' (Lpkg/TestAnonymousClassConstructor;Ljava/lang/String;)V' { + a 111 + d 112 + } +} + +Lines mapping: +5 <-> 5 +6 <-> 7 +9 <-> 10 +10 <-> 12 +13 <-> 15 +14 <-> 17 +17 <-> 20 +18 <-> 22 +21 <-> 25 +22 <-> 27 +25 <-> 30 +26 <-> 32 +29 <-> 35 +30 <-> 37 +33 <-> 40 +34 <-> 42 +37 <-> 45 +38 <-> 47 +41 <-> 50 +42 <-> 52 +45 <-> 55 +46 <-> 57 +49 <-> 60 +50 <-> 62 +53 <-> 65 +54 <-> 66 +58 <-> 112 +59 <-> 113 +64 <-> 106 +65 <-> 107 +70 <-> 100 +71 <-> 101 +76 <-> 94 +77 <-> 95 +82 <-> 88 +83 <-> 89 +88 <-> 82 +89 <-> 83 +94 <-> 76 +95 <-> 77 +100 <-> 70 +101 <-> 71 +Not mapped: +57 +63 +69 +75 +81 +87 +93 +99 diff --git a/testData/results/TestAnonymousParamNames.dec b/testData/results/TestAnonymousParamNames.dec new file mode 100644 index 0000000..810799c --- /dev/null +++ b/testData/results/TestAnonymousParamNames.dec @@ -0,0 +1,22 @@ +package pkg; + +public class TestAnonymousParamNames { + private final TestAnonymousParamNames.Clazz reference = new TestAnonymousParamNames.Clazz(0L, false) { + }; + + private class Clazz { + public Clazz(long paramL, boolean paramB) { + }// 25 + } +} + +class 'pkg/TestAnonymousParamNames$Clazz' { + method ' (Lpkg/TestAnonymousParamNames;JZ)V' { + 9 8 + } +} + +Lines mapping: +25 <-> 9 +Not mapped: +24 diff --git a/testData/src/pkg/TestAnonymousClassConstructor.java b/testData/src/pkg/TestAnonymousClassConstructor.java new file mode 100644 index 0000000..5104b50 --- /dev/null +++ b/testData/src/pkg/TestAnonymousClassConstructor.java @@ -0,0 +1,103 @@ +package pkg; + +class TestAnonymousClassConstructor { + void innerPrivateString() { + new InnerPrivateString("text"){}; + } + + void innerPrivate() { + new InnerPrivate(3, 4){}; + } + + void innerStaticPrivateString() { + new InnerStaticPrivateString("text"){}; + } + + void innerStaticPrivate() { + new InnerStaticPrivate(3, 4){}; + } + + static void innerStaticPrivateStringStatic() { + new InnerStaticPrivateString("text"){}; + } + + static void innerStaticPrivateStatic() { + new InnerStaticPrivate(3, 4){}; + } + + void innerPublicString() { + new InnerPublicString("text"){}; + } + + void innerPublic() { + new InnerPublic(3, 4){}; + } + + void innerStaticPublicString() { + new InnerStaticPublicString("text"){}; + } + + void innerStaticPublic() { + new InnerStaticPublic(3, 4){}; + } + + static void innerStaticPublicStringStatic() { + new InnerStaticPublicString("text"){}; + } + + static void innerStaticPublicStatic() { + new InnerStaticPublic(3, 4){}; + } + + static void n(String s) { + System.out.println("n(): " + s); + } + + class InnerPrivateString { + private InnerPrivateString(String s) { + n(s); + } + } + + class InnerPrivate { + private InnerPrivate(long a, int b) { + n(a + "+" + b); + } + } + + static class InnerStaticPrivateString { + private InnerStaticPrivateString(String s) { + n(s); + } + } + + static class InnerStaticPrivate { + private InnerStaticPrivate(long a, int b) { + n(a + "+" + b); + } + } + + class InnerPublicString { + public InnerPublicString(String s) { + n(s); + } + } + + class InnerPublic { + public InnerPublic(long a, int b) { + n(a + "+" + b); + } + } + + static class InnerStaticPublicString { + public InnerStaticPublicString(String s) { + n(s); + } + } + + static class InnerStaticPublic { + public InnerStaticPublic(long a, int b) { + n(a + "+" + b); + } + } +} diff --git a/testData/src/pkg/TestAnonymousParamNames.java b/testData/src/pkg/TestAnonymousParamNames.java new file mode 100644 index 0000000..5c83de9 --- /dev/null +++ b/testData/src/pkg/TestAnonymousParamNames.java @@ -0,0 +1,27 @@ +/* + * Copyright 2000-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package pkg; + +import java.io.File; + +public class TestAnonymousParamNames { + private final Clazz reference = new Clazz(0, false) {}; + + private class Clazz { + public Clazz(long paramL, boolean paramB) { + } + } +}