From 1fb58e86b39b19d8563c76de21edb7f62c294cdd Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Fri, 4 Mar 2016 15:32:42 +0100 Subject: [PATCH] [tests] test cases added --- .../psi/cls/mirror/MemberAnnotations.txt | 22 ++++++++++++ .../cls/mirror/pkg/MemberAnnotations$A.class | Bin 0 -> 426 bytes .../cls/mirror/pkg/MemberAnnotations.class | Bin 0 -> 603 bytes .../cls/mirror/src/pkg/MemberAnnotations.java | 13 +++++++ .../intellij/psi/ClsMirrorBuildingTest.java | 1 + .../java/decompiler/SingleClassesTest.java | 1 + .../classes/pkg/TestMemberAnnotations$A.class | Bin 0 -> 438 bytes .../classes/pkg/TestMemberAnnotations.class | Bin 0 -> 619 bytes .../results/TestMemberAnnotations.dec | 34 ++++++++++++++++++ .../src/pkg/TestMemberAnnotations.java | 13 +++++++ 10 files changed, 84 insertions(+) create mode 100644 java/java-tests/testData/psi/cls/mirror/MemberAnnotations.txt create mode 100644 java/java-tests/testData/psi/cls/mirror/pkg/MemberAnnotations$A.class create mode 100644 java/java-tests/testData/psi/cls/mirror/pkg/MemberAnnotations.class create mode 100644 java/java-tests/testData/psi/cls/mirror/src/pkg/MemberAnnotations.java create mode 100644 plugins/java-decompiler/engine/testData/classes/pkg/TestMemberAnnotations$A.class create mode 100644 plugins/java-decompiler/engine/testData/classes/pkg/TestMemberAnnotations.class create mode 100644 plugins/java-decompiler/engine/testData/results/TestMemberAnnotations.dec create mode 100644 plugins/java-decompiler/engine/testData/src/pkg/TestMemberAnnotations.java diff --git a/java/java-tests/testData/psi/cls/mirror/MemberAnnotations.txt b/java/java-tests/testData/psi/cls/mirror/MemberAnnotations.txt new file mode 100644 index 000000000000..f7f1b70e4252 --- /dev/null +++ b/java/java-tests/testData/psi/cls/mirror/MemberAnnotations.txt @@ -0,0 +1,22 @@ + + // IntelliJ API Decompiler stub source generated from a class file + // Implementation of methods is not available + +package pkg; + +class MemberAnnotations { + @pkg.MemberAnnotations.A("const") + public static final int CONST = 42; + @pkg.MemberAnnotations.A("field") + private int f; + + MemberAnnotations() { /* compiled code */ } + + @pkg.MemberAnnotations.A("return") + private int f(@pkg.MemberAnnotations.A("arg") int i) { /* compiled code */ } + + @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) + static @interface A { + java.lang.String value() default ""; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/psi/cls/mirror/pkg/MemberAnnotations$A.class b/java/java-tests/testData/psi/cls/mirror/pkg/MemberAnnotations$A.class new file mode 100644 index 0000000000000000000000000000000000000000..e2bd13c1cc4bce84964164b61c66ef92d21d3117 GIT binary patch literal 426 zcmah_yH3ME5S&dM987=&5)c&>$btqpbW{-!DG~wX0R7ootP7WOUR6;k+`04I(G`{xHC+yE(v*=ex$3p@MIwNbjxHQT+c7$#{@_jPp zRHi$urIo(w-U)+06T;JZ%U(Mn_0bq(CTP I3*E5&4ZL1+H~;_u literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/psi/cls/mirror/pkg/MemberAnnotations.class b/java/java-tests/testData/psi/cls/mirror/pkg/MemberAnnotations.class new file mode 100644 index 0000000000000000000000000000000000000000..375246510a38a37e6923532ed13eecb24bce489d GIT binary patch literal 603 zcmZutOG`pQ7(L@N^_KR|o+c9NA~)@dK!iXriwf6`I?C8}jQi+UwF!ctML(b)6`iRT zX)W&kzHiQ%bIyG4AFpo!j`O zP*Y&OF)@B1P0*2UsG=0A3goXs6X>z(XkT|-RX1i5$Uu`xtaX1ktevZIS9!mHQvI01 z4_1V=XGLi+U_a2x?F%GMw9&z-K(t)x2*etbKAG8;HmV(3u^UM%0_A3fxe}fVLeB^k zr?Xs2PmWbEP7Fuw&KSweK>Fasig;#iBHV0lVx@+^WaB&`^s JI1Lg9bDyXSb|U}) literal 0 HcmV?d00001 diff --git a/java/java-tests/testData/psi/cls/mirror/src/pkg/MemberAnnotations.java b/java/java-tests/testData/psi/cls/mirror/src/pkg/MemberAnnotations.java new file mode 100644 index 000000000000..e980db8209d2 --- /dev/null +++ b/java/java-tests/testData/psi/cls/mirror/src/pkg/MemberAnnotations.java @@ -0,0 +1,13 @@ +package pkg; + +import java.lang.annotation.*; + +class MemberAnnotations { + @Retention(RetentionPolicy.RUNTIME) + @interface A { String value() default ""; } + + @A("const") public static final int CONST = 42; + @A("field") private int f; + + @A("return") private int f(@A("arg") int i) { return i + f + CONST; } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/psi/ClsMirrorBuildingTest.java b/java/java-tests/testSrc/com/intellij/psi/ClsMirrorBuildingTest.java index 9069a30bf2c6..479bbb67b358 100644 --- a/java/java-tests/testSrc/com/intellij/psi/ClsMirrorBuildingTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/ClsMirrorBuildingTest.java @@ -45,6 +45,7 @@ public class ClsMirrorBuildingTest extends LightIdeaTestCase { public void testDeprecated() { doTest(); } public void testAnnotations() { doTest(); } public void testMoreAnnotations() { doTest(); } + public void testMemberAnnotations() { doTest(); } public void testParameterNames() { doTest(); } public void testEmptyEnum() { doTest(); } public void test$BuckClass() { doTest(); } diff --git a/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java b/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java index e3a6f56a7979..5647ab82ee6a 100644 --- a/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java +++ b/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java @@ -81,6 +81,7 @@ public class SingleClassesTest { @Test public void testJava9StringConcat() { doTest("java9/TestJava9StringConcat"); } @Test public void testMethodReferenceSameName() { doTest("pkg/TestMethodReferenceSameName"); } @Test public void testMethodReferenceLetterClass() { doTest("pkg/TestMethodReferenceLetterClass"); } + @Test public void testMemberAnnotations() { doTest("pkg/TestMemberAnnotations"); } protected void doTest(String testFile, String... companionFiles) { ConsoleDecompiler decompiler = fixture.getDecompiler(); diff --git a/plugins/java-decompiler/engine/testData/classes/pkg/TestMemberAnnotations$A.class b/plugins/java-decompiler/engine/testData/classes/pkg/TestMemberAnnotations$A.class new file mode 100644 index 0000000000000000000000000000000000000000..f7fa7905d1df87219b377e5d8ec65948f42139ea GIT binary patch literal 438 zcmah_yG{c!5S+~eha*4&p#Taf&xN}~SB zNd_EPYBDGJ@jsTw%$muY7}enEe$?yVD0B#i^Vc-_wX2gZfdtK-bDUpU?LB)!s~r7d zJmrZ@c~nX(y_NmTXn&@}%NfDRRjuGk+Hh3+B(!7U)78mSZOtx0;T5TL$BIWp*>UmjtYK( zyR{>V51kNW*9p_)j`^Kd{;fdjSQ~9m1mgSUwm_mjxFvJ8sf{|1oLEcJj=+AS%-&Lg zvQc0JcEf|D8x6@5ohO znqKvybFaFbsQ52^w}vgQKfx`=P(TJ*#@wiyg2y-oZk%T(#4I7YvzP$p2*7nmXpvco zQ7|SeuMp2n1eSQGz8^;_%QSV=9aiphu2^|N>?U8id79vRlWr?mCB<_VKaCYAvBtL; Oiby*#LP;8=_A*}twS2Px literal 0 HcmV?d00001 diff --git a/plugins/java-decompiler/engine/testData/results/TestMemberAnnotations.dec b/plugins/java-decompiler/engine/testData/results/TestMemberAnnotations.dec new file mode 100644 index 000000000000..1e3a41c0f8ac --- /dev/null +++ b/plugins/java-decompiler/engine/testData/results/TestMemberAnnotations.dec @@ -0,0 +1,34 @@ +package pkg; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +class TestMemberAnnotations { + @TestMemberAnnotations.A("const") + public static final int CONST = 42; + @TestMemberAnnotations.A("field") + private int f; + + @TestMemberAnnotations.A("return") + private int f(@TestMemberAnnotations.A("arg") int var1) { + return var1 + this.f + 42;// 12 + } + + @Retention(RetentionPolicy.RUNTIME) + @interface A { + String value() default ""; + } +} + +class 'pkg/TestMemberAnnotations' { + method 'f (I)I' { + 2 13 + 5 13 + 6 13 + 8 13 + 9 13 + } +} + +Lines mapping: +12 <-> 14 diff --git a/plugins/java-decompiler/engine/testData/src/pkg/TestMemberAnnotations.java b/plugins/java-decompiler/engine/testData/src/pkg/TestMemberAnnotations.java new file mode 100644 index 000000000000..b7c7da9bf7a2 --- /dev/null +++ b/plugins/java-decompiler/engine/testData/src/pkg/TestMemberAnnotations.java @@ -0,0 +1,13 @@ +package pkg; + +import java.lang.annotation.*; + +class TestMemberAnnotations { + @Retention(RetentionPolicy.RUNTIME) + @interface A { String value() default ""; } + + @A("const") public static final int CONST = 42; + @A("field") private int f; + + @A("return") private int f(@A("arg") int i) { return i + f + CONST; } +} \ No newline at end of file