Test for Bug 460465 [search] references in workspace of enum type not
found when statically importing enum constant
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java
index 5adcc7d..8a6bcb1 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -83,6 +83,7 @@
import org.eclipse.jdt.internal.core.search.matching.MethodPattern;
import org.eclipse.jdt.internal.core.search.matching.PatternLocator;
import org.eclipse.jdt.internal.core.search.matching.TypeDeclarationPattern;
+import org.eclipse.jdt.internal.core.search.matching.TypeReferencePattern;
/**
* Non-regression tests for bugs fixed in Java Search engine.
@@ -14227,5 +14228,51 @@
deleteFolder(folder);
}
}
+public void testBug460465_since_5() throws CoreException {
+ this.workingCopies = new ICompilationUnit[3];
+ this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/test/TestE.java",
+ "package test;\n" +
+ "public enum TestE {\n" +
+ " TEST1,\n" +
+ " TEST2;\n" +
+ "}\n" );
+ this.workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/test/ClassWithoutStaticImports.java",
+ "package test;\n" +
+ "public class ClassWithoutStaticImports {\n" +
+ " public ClassWithoutStaticImports() {\n" +
+ " System.out.println(TestE.TEST1);\n" +
+ " System.out.println(TestE.TEST2);\n" +
+ " }\n" +
+ "}\n" );
+ this.workingCopies[2] = getWorkingCopy("/JavaSearchBugs/src/test/ClassWithStaticImports.java",
+ "package test;\n" +
+ "\n" +
+ "import static test.TestE.TEST1;\n" +
+ "import static test.TestE.TEST2;\n" +
+ "\n" +
+ "public class ClassWithStaticImports {\n" +
+ "\n" +
+ " public ClassWithStaticImports() {\n" +
+ "\n" +
+ " System.out.println(TEST1);\n" +
+ " System.out.println(TEST2);\n" +
+ " }\n" +
+ "}\n");
+
+
+ IType type = this.workingCopies[0].getTypes()[0];
+ TypeReferencePattern pattern = (TypeReferencePattern) SearchPattern.createPattern(type, REFERENCES, EXACT_RULE | ERASURE_RULE);
+
+ new SearchEngine(this.workingCopies).search(pattern,
+ new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
+ getJavaSearchWorkingCopiesScope(),
+ this.resultCollector,
+ null);
+ assertSearchResults(
+ "src/test/ClassWithStaticImports.java [test.TestE] EXACT_MATCH\n" +
+ "src/test/ClassWithStaticImports.java [test.TestE] EXACT_MATCH\n" +
+ "src/test/ClassWithoutStaticImports.java test.ClassWithoutStaticImports() [TestE] EXACT_MATCH\n" +
+ "src/test/ClassWithoutStaticImports.java test.ClassWithoutStaticImports() [TestE] EXACT_MATCH");
+}
}
\ No newline at end of file