From 4eb792e7a3423cb0d5ea5776f87484bac066a174 Mon Sep 17 00:00:00 2001 From: Dmitry Boulytchev Date: Fri, 4 May 2012 19:50:09 +0400 Subject: [PATCH] Fixed bug in .class as annotation parameter (compile-server). --- .../annotations/classAsArgument.log | 12 + .../annotations/classAsArgument/.idea/.name | 1 + .../annotations/classAsArgument/.idea/ant.xml | 7 + .../classAsArgument/.idea/compiler.xml | 21 + .../.idea/copyright/profiles_settings.xml | 5 + .../classAsArgument/.idea/encodings.xml | 5 + .../classAsArgument/.idea/misc.xml | 26 ++ .../classAsArgument/.idea/modules.xml | 9 + .../.idea/scopes/scope_settings.xml | 5 + .../classAsArgument/.idea/uiDesigner.xml | 125 +++++ .../annotations/classAsArgument/.idea/vcs.xml | 7 + .../classAsArgument/.idea/workspace.xml | 431 ++++++++++++++++++ .../annotations/classAsArgument/A.java.new | 0 .../classAsArgument/classAsArgument.iml | 12 + .../annotations/classAsArgument/src/A.java | 9 + .../annotations/classAsArgument/src/Ann.java | 13 + .../classAsArgument/src/Annotated.java | 10 + .../org/jetbrains/ether/AnnotationTest.java | 4 + .../dependencyView/ClassfileAnalyzer.java | 8 + 19 files changed, 710 insertions(+) create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument.log create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/.name create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/ant.xml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/compiler.xml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/copyright/profiles_settings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/encodings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/misc.xml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/modules.xml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/scopes/scope_settings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/uiDesigner.xml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/vcs.xml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/workspace.xml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/A.java.new create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/classAsArgument.iml create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/A.java create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/Ann.java create mode 100644 java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/Annotated.java diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument.log b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument.log new file mode 100644 index 000000000000..a4e99b222775 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument.log @@ -0,0 +1,12 @@ +Cleaning output files: +out/production/classAsArgument/A.class +End of files +Compiling files: +src/A.java +End of files +Cleaning output files: +out/production/classAsArgument/Annotated.class +End of files +Compiling files: +src/Annotated.java +End of files diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/.name b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/.name new file mode 100644 index 000000000000..1ad8637be091 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/.name @@ -0,0 +1 @@ +classAsArgument \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/ant.xml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/ant.xml new file mode 100644 index 000000000000..2581ca3fe84c --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/ant.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/compiler.xml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/compiler.xml new file mode 100644 index 000000000000..a1b41c52c724 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/compiler.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/copyright/profiles_settings.xml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/copyright/profiles_settings.xml new file mode 100644 index 000000000000..3572571ad83c --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/copyright/profiles_settings.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/encodings.xml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/encodings.xml new file mode 100644 index 000000000000..e206d70d8595 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/encodings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/misc.xml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/misc.xml new file mode 100644 index 000000000000..492d8ee45ce4 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/misc.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + IDEA jdk + + + + + + + + + diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/modules.xml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/modules.xml new file mode 100644 index 000000000000..c4d3af7bae81 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/scopes/scope_settings.xml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/scopes/scope_settings.xml new file mode 100644 index 000000000000..922003b8433b --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/scopes/scope_settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/uiDesigner.xml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/uiDesigner.xml new file mode 100644 index 000000000000..3b0002030884 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/uiDesigner.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/vcs.xml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/vcs.xml new file mode 100644 index 000000000000..def6a6a18457 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/workspace.xml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/workspace.xml new file mode 100644 index 000000000000..e3892d54faff --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/.idea/workspace.xml @@ -0,0 +1,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + 1336138927353 + 1336138927353 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/A.java.new b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/A.java.new new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/classAsArgument.iml b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/classAsArgument.iml new file mode 100644 index 000000000000..60a321a1ac4d --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/classAsArgument.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/A.java b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/A.java new file mode 100644 index 000000000000..655e62ac6607 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/A.java @@ -0,0 +1,9 @@ +/** + * Created with IntelliJ IDEA. + * User: db + * Date: 04.05.12 + * Time: 17:42 + * To change this template use File | Settings | File Templates. + */ +public class A { +} diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/Ann.java b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/Ann.java new file mode 100644 index 000000000000..bec2f9e97ecd --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/Ann.java @@ -0,0 +1,13 @@ +/** + * Created with IntelliJ IDEA. + * User: db + * Date: 04.05.12 + * Time: 17:42 + * To change this template use File | Settings | File Templates. + */ +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.CLASS) public @interface Ann { + Class[] value(); +} \ No newline at end of file diff --git a/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/Annotated.java b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/Annotated.java new file mode 100644 index 000000000000..5c49f5d0ba47 --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/annotations/classAsArgument/src/Annotated.java @@ -0,0 +1,10 @@ +/** + * Created with IntelliJ IDEA. + * User: db + * Date: 04.05.12 + * Time: 17:43 + * To change this template use File | Settings | File Templates. + */ +@Ann({A.class}) +public class Annotated { +} diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/AnnotationTest.java b/jps/jps-builders/testSrc/org/jetbrains/ether/AnnotationTest.java index 638c570e7b5a..42815470cae9 100644 --- a/jps/jps-builders/testSrc/org/jetbrains/ether/AnnotationTest.java +++ b/jps/jps-builders/testSrc/org/jetbrains/ether/AnnotationTest.java @@ -56,6 +56,10 @@ public class AnnotationTest extends IncrementalTestCase { doTest(); } + public void testClassAsArgument() throws Exception { + doTest(); + } + /* Discussion is needed --- unnecessarily conservative public void testMetaAnnotationChanged() throws Exception { doTest(); diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java b/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java index fb1a9ee7eb5c..f45e8fa2e304 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java @@ -154,6 +154,14 @@ class ClassfileAnalyzer { final String methodDescr = getMethodDescr(value); final int methodName = context.get(name); + if (value instanceof Type) { + final String className = ((Type)value).getClassName(); + + if (className != null) { + usages.addUsage(residence, UsageRepr.createClassUsage(context, context.get(className))); + } + } + usages.addUsage(residence, UsageRepr.createMethodUsage(context, methodName, type.className, methodDescr)); usages.addUsage(residence, UsageRepr.createMetaMethodUsage(context, methodName, type.className, methodDescr));