### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java,v retrieving revision 1.323 diff -u -r1.323 MatchLocator.java --- search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java 3 Mar 2009 12:24:38 -0000 1.323 +++ search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java 19 Jun 2009 15:15:47 -0000 @@ -1706,21 +1706,23 @@ } catch (Exception e) { // it's just for debug purposes... ignore all exceptions in this area } - if (match instanceof TypeReferenceMatch) { + if (match instanceof ReferenceMatch) { try { - TypeReferenceMatch typeRefMatch = (TypeReferenceMatch) match; - JavaElement local = (JavaElement) typeRefMatch.getLocalElement(); + ReferenceMatch refMatch = (ReferenceMatch) match; + JavaElement local = (JavaElement) refMatch.getLocalElement(); if (local != null) { System.out.println("\tLocal element: "+ local.toStringWithAncestors()); //$NON-NLS-1$ } - IJavaElement[] others = typeRefMatch.getOtherElements(); - if (others != null) { - int length = others.length; - if (length > 0) { - System.out.println("\tOther elements:"); //$NON-NLS-1$ - for (int i=0; i 0) { + System.out.println("\tOther elements:"); //$NON-NLS-1$ + for (int i=0; i 0) { + otherAnnotations = new IJavaElement[length]; + for (int o=0; o 0) { + otherAnnotations = new IJavaElement[length]; + for (int o=0; o 0) { + otherAnnotations = new IJavaElement[length]; + for (int o=0; o * will return one match whose other elements is an array of two fields: * {@link IField test2} and {@link IField test3}. + *

* *
  • searching for the references to the type Test in *
    @@ -69,6 +70,21 @@
      *         
    * will return one match whose other elements is an array of two local * variables: {@link ILocalVariable local2} and {@link ILocalVariable local3}. + *

    + *
  • + *
  • since 3.6, searching for the references to the type + * Test in + *
    + *         public class Test {
    + *                 void testB(int testKind) {
    + *                         @Annot int test1, test2;
    + *                 }
    + *         }
    + *         @interface Annot {}
    + *         
    + * will return one match whose other elements is an array of one annotation: + * {@link IAnnotation Annot} which parent is the local variable + * {@link ILocalVariable test2}. *
  • * * @@ -76,10 +92,7 @@ * @since 3.2 */ public final IJavaElement[] getOtherElements() { - if (this.localElement == null || this.localElement.getElementType() != IJavaElement.ANNOTATION) { - return this.otherElements; - } - return null; + return this.otherElements; } /** #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java,v retrieving revision 1.173 diff -u -r1.173 JavaSearchBugsTests.java --- src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java 19 Jun 2009 14:43:46 -0000 1.173 +++ src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java 19 Jun 2009 15:15:50 -0000 @@ -69,16 +69,24 @@ } } class ReferenceCollector extends JavaSearchResultCollector { - protected IJavaElement getElement(SearchMatch searchMatch) { - IJavaElement element = super.getElement(searchMatch); - IJavaElement localElement = null; + protected void writeLine() throws CoreException { + super.writeLine(); ReferenceMatch refMatch = (ReferenceMatch) this.match; - localElement = refMatch.getLocalElement(); + IJavaElement localElement = refMatch.getLocalElement(); if (localElement != null) { - return localElement; + this.line.append("+["); + if (localElement.getElementType() == IJavaElement.ANNOTATION) { + this.line.append('@'); + this.line.append(localElement.getElementName()); + this.line.append(" on "); + this.line.append(localElement.getParent().getElementName()); + } else { + this.line.append(localElement.getElementName()); + } + this.line.append(']'); } - return element; } + } class TypeReferenceCollector extends ReferenceCollector { protected void writeLine() throws CoreException { @@ -91,7 +99,14 @@ for (int i=0; i0) this.line.append(','); - this.line.append(other.getElementName()); + if (other.getElementType() == IJavaElement.ANNOTATION) { + this.line.append('@'); + this.line.append(other.getElementName()); + this.line.append(" on "); + this.line.append(other.getParent().getElementName()); + } else { + this.line.append(other.getElementName()); + } } this.line.append(']'); } @@ -5908,12 +5923,12 @@ TypeReferenceCollector collector = new TypeReferenceCollector(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/b110336/Test.java void b110336.Test.method(Class).TP [Test]\n" + - "src/b110336/Test.java void b110336.Test.method(Class).clazz [Test]\n" + - "src/b110336/Test.java void b110336.Test.method(Class).localVar1 [Test]\n" + - "src/b110336/Test.java void b110336.Test.method(Class).localVar1 [Test]\n" + - "src/b110336/Test.java void b110336.Test.method(Class).localVar2 [Test]\n" + - "src/b110336/Test.java void b110336.Test.method(Class).localVar2 [Test]", + "src/b110336/Test.java void b110336.Test.method(Class) [Test]+[TP]\n" + + "src/b110336/Test.java void b110336.Test.method(Class) [Test]+[clazz]\n" + + "src/b110336/Test.java void b110336.Test.method(Class) [Test]+[localVar1]\n" + + "src/b110336/Test.java void b110336.Test.method(Class) [Test]+[localVar1]\n" + + "src/b110336/Test.java void b110336.Test.method(Class) [Test]+[localVar2]\n" + + "src/b110336/Test.java void b110336.Test.method(Class) [Test]+[localVar2]", collector ); } @@ -5936,13 +5951,13 @@ TypeReferenceCollector collector = new TypeReferenceCollector(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/b110336/Test.java void b110336.Test.method1(Test):#1 [Test]\n" + - "src/b110336/Test.java void b110336.Test.method1(Test):#1.c [Test]\n" + - "src/b110336/Test.java void void b110336.Test.method1(Test):#1.foo().TP [Test]\n" + - "src/b110336/Test.java void void b110336.Test.method1(Test):#1.foo().o [Test]\n" + - "src/b110336/Test.java void void b110336.Test.method1(Test):#1.foo().o [Test]\n" + - "src/b110336/Test.java void b110336.Test.method1(Test).methodParam [Test]\n" + - "src/b110336/Test.java void b110336.Test.method1(Test).localVar1 [Test]", + "src/b110336/Test.java void b110336.Test.method1(Test):#1 [Test]\n" + + "src/b110336/Test.java void b110336.Test.method1(Test):#1.c [Test]\n" + + "src/b110336/Test.java void void b110336.Test.method1(Test):#1.foo() [Test]+[TP]\n" + + "src/b110336/Test.java void void b110336.Test.method1(Test):#1.foo() [Test]+[o]\n" + + "src/b110336/Test.java void void b110336.Test.method1(Test):#1.foo() [Test]+[o]\n" + + "src/b110336/Test.java void b110336.Test.method1(Test) [Test]+[methodParam]\n" + + "src/b110336/Test.java void b110336.Test.method1(Test) [Test]+[localVar1]", collector ); } @@ -5960,7 +5975,7 @@ TypeReferenceCollector collector = new TypeReferenceCollector(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/b110336/Test.java b110336.Test.TP [X]\n" + + "src/b110336/Test.java b110336.Test [X]+[TP]\n" + "src/b110336/Test.java b110336.Test.x [X]", collector ); @@ -6004,12 +6019,12 @@ TypeReferenceCollector collector = new TypeReferenceCollector(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/b110336/Test.java void b110336.Test.foo().lv1 [Test]+[lv2,lv3]\n" + - "src/b110336/Test.java void b110336.Test.foo().lv2 [Test]\n" + - "src/b110336/Test.java void b110336.Test.foo().lv4 [Test]+[lv5,lv6]\n" + - "src/b110336/Test.java void b110336.Test.foo().lv4 [Test]\n" + - "src/b110336/Test.java void b110336.Test.foo().lv7 [Test]+[lv8,lv9]\n" + - "src/b110336/Test.java void b110336.Test.foo().lv9 [Test]", + "src/b110336/Test.java void b110336.Test.foo() [Test]+[lv1]+[lv2,lv3]\n" + + "src/b110336/Test.java void b110336.Test.foo() [Test]+[lv2]\n" + + "src/b110336/Test.java void b110336.Test.foo() [Test]+[lv4]+[lv5,lv6]\n" + + "src/b110336/Test.java void b110336.Test.foo() [Test]+[lv4]\n" + + "src/b110336/Test.java void b110336.Test.foo() [Test]+[lv7]+[lv8,lv9]\n" + + "src/b110336/Test.java void b110336.Test.foo() [Test]+[lv9]", collector ); } @@ -6034,11 +6049,11 @@ TypeReferenceCollector collector = new TypeReferenceCollector(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/b110336/Test.java void b110336.Test.foo(Test).test1 [Test]\n" + - "src/b110336/Test.java void b110336.Test.foo(Test).test2 [Test]\n" + - "src/b110336/Test.java void b110336.Test.foo(Test) [Test]\n" + - "src/b110336/Test.java void b110336.Test.foo(Test).test4 [Test]\n" + - "src/b110336/Test.java void b110336.Test.foo(Test).test3 [Test]", + "src/b110336/Test.java void b110336.Test.foo(Test) [Test]+[test1]\n" + + "src/b110336/Test.java void b110336.Test.foo(Test) [Test]+[test2]\n" + + "src/b110336/Test.java void b110336.Test.foo(Test) [Test]\n" + + "src/b110336/Test.java void b110336.Test.foo(Test) [Test]+[test4]\n" + + "src/b110336/Test.java void b110336.Test.foo(Test) [Test]+[test3]", collector ); } @@ -6058,12 +6073,12 @@ TypeReferenceCollector collector = new TypeReferenceCollector(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/b110336/Test.java b110336.Test.{}.lv1 [Test]+[lv2,lv3]\n" + - "src/b110336/Test.java b110336.Test.{}.lv2 [Test]\n" + - "src/b110336/Test.java b110336.Test.{}.lv4 [Test]+[lv5,lv6]\n" + - "src/b110336/Test.java b110336.Test.{}.lv4 [Test]\n" + - "src/b110336/Test.java b110336.Test.{}.lv7 [Test]+[lv8,lv9]\n" + - "src/b110336/Test.java b110336.Test.{}.lv9 [Test]", + "src/b110336/Test.java b110336.Test.{} [Test]+[lv1]+[lv2,lv3]\n" + + "src/b110336/Test.java b110336.Test.{} [Test]+[lv2]\n" + + "src/b110336/Test.java b110336.Test.{} [Test]+[lv4]+[lv5,lv6]\n" + + "src/b110336/Test.java b110336.Test.{} [Test]+[lv4]\n" + + "src/b110336/Test.java b110336.Test.{} [Test]+[lv7]+[lv8,lv9]\n" + + "src/b110336/Test.java b110336.Test.{} [Test]+[lv9]", collector ); } @@ -6083,12 +6098,12 @@ TypeReferenceCollector collector = new TypeReferenceCollector(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/b110336/Test.java b110336.Test.static {}.lv1 [Test]+[lv2,lv3]\n" + - "src/b110336/Test.java b110336.Test.static {}.lv2 [Test]\n" + - "src/b110336/Test.java b110336.Test.static {}.lv4 [Test]+[lv5,lv6]\n" + - "src/b110336/Test.java b110336.Test.static {}.lv4 [Test]\n" + - "src/b110336/Test.java b110336.Test.static {}.lv7 [Test]+[lv8,lv9]\n" + - "src/b110336/Test.java b110336.Test.static {}.lv9 [Test]", + "src/b110336/Test.java b110336.Test.static {} [Test]+[lv1]+[lv2,lv3]\n" + + "src/b110336/Test.java b110336.Test.static {} [Test]+[lv2]\n" + + "src/b110336/Test.java b110336.Test.static {} [Test]+[lv4]+[lv5,lv6]\n" + + "src/b110336/Test.java b110336.Test.static {} [Test]+[lv4]\n" + + "src/b110336/Test.java b110336.Test.static {} [Test]+[lv7]+[lv8,lv9]\n" + + "src/b110336/Test.java b110336.Test.static {} [Test]+[lv9]", collector ); } @@ -9430,8 +9445,8 @@ TypeReferenceCollector collector = new TypeReferenceCollector(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/xy/Try.java @Constants(value=Try.class) [Try]\n" + - "src/xy/Try.java @Constants(value=Try.class) [Try]", + "src/xy/Try.java xy.Try.fTryA [Try]+[@Constants on fTryA]+[@Constants on fTryB]\n" + + "src/xy/Try.java void xy.Try.tryB(int) [Try]+[@Constants on tryCopy]+[@Constants on tryCopy2]", collector ); } @@ -9459,7 +9474,7 @@ collector.showSelection(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/test/Test.java @Annot(clazz=Test.class) [ @Annot(clazz=§|Test|§.class) int x;]", + "src/test/Test.java void test.Test.method() [ @Annot(clazz=§|Test|§.class) int x;]+[@Annot on x]", collector ); } @@ -9475,7 +9490,7 @@ collector.showSelection(); search("Deprecated", TYPE, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/test/Test.java @Deprecated() [ @§|Deprecated|§ foo() {}]", + "src/test/Test.java void test.Test.foo() [ @§|Deprecated|§ foo() {}]+[@Deprecated on foo]", collector ); } @@ -9501,11 +9516,11 @@ collector.showSelection(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/comment5/Ref.java void comment5.Ref.doA(Ref).ref [ void doA(§|Ref|§ ref) {}]\n" + - "src/comment5/Ref.java void comment5.Ref.doB(List).ref [ void doB(List<§|Ref|§> ref) {}]\n" + - "src/comment5/Ref.java @Tag(value=Ref.class) [ void doC(@Tag(§|Ref|§.class) Ref ref) {}]\n" + - "src/comment5/Ref.java void comment5.Ref.doC(Ref).ref [ void doC(@Tag(Ref.class) §|Ref|§ ref) {}]\n" + - "src/comment5/Ref.java @Tag(value=Ref.class) [ void dontD(@Tag(§|Ref|§.class) Object ref) {}]", + "src/comment5/Ref.java void comment5.Ref.doA(Ref) [ void doA(§|Ref|§ ref) {}]+[ref]\n" + + "src/comment5/Ref.java void comment5.Ref.doB(List) [ void doB(List<§|Ref|§> ref) {}]+[ref]\n" + + "src/comment5/Ref.java void comment5.Ref.doC(Ref) [ void doC(@Tag(§|Ref|§.class) Ref ref) {}]+[@Tag on ref]\n" + + "src/comment5/Ref.java void comment5.Ref.doC(Ref) [ void doC(@Tag(Ref.class) §|Ref|§ ref) {}]+[ref]\n" + + "src/comment5/Ref.java void comment5.Ref.dontD(Object) [ void dontD(@Tag(§|Ref|§.class) Object ref) {}]+[@Tag on ref]", collector ); } @@ -9524,7 +9539,7 @@ collector.showSelection(); search(field, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/comment10/Ref.java @Num(number=Num.CONST) [@Num(number= Num.§|CONST|§)]", + "src/comment10/Ref.java comment10.Num [@Num(number= Num.§|CONST|§)]+[@Num on Num]", collector ); } @@ -9546,9 +9561,9 @@ collector.showSelection(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/comment22/Test.java @Tag() [ @§|Tag|§ Test test1, test2, test3;]\n" + - "src/comment22/Test.java @Tag() [ @§|Tag|§ Test local= null;]\n" + - "src/comment22/Test.java @Tag() [ @§|Tag|§ Test local1, local2, local3;]", + "src/comment22/Test.java comment22.Test.test1 [ @§|Tag|§ Test test1, test2, test3;]+[@Tag on test1]+[@Tag on test2,@Tag on test3]\n" + + "src/comment22/Test.java void comment22.Test.method() [ @§|Tag|§ Test local= null;]+[@Tag on local]\n" + + "src/comment22/Test.java void comment22.Test.method() [ @§|Tag|§ Test local1, local2, local3;]+[@Tag on local1]+[@Tag on local2,@Tag on local3]", collector ); } @@ -9568,7 +9583,7 @@ collector.showSelection(); search(type, REFERENCES, EXACT_RULE, getJavaSearchScope(), collector); assertSearchResults( - "src/test/Test.java @Annot(clazz=test.Test.class) [ @Annot(clazz = §|test.Test|§.class) int x, y;]", + "src/test/Test.java test.TestMethodReference.x [ @Annot(clazz = §|test.Test|§.class) int x, y;]+[@Annot on x]+[@Annot on y]", collector ); }