View | Details | Raw Unified | Return to bug 176831
Collapse All | Expand All

(-)search/org/eclipse/jdt/internal/core/search/JavaSearchScope.java (-1 / +7 lines)
Lines 121-127 Link Here
121
		if (referringEntry != null) {
121
		if (referringEntry != null) {
122
			// Add only exported entries.
122
			// Add only exported entries.
123
			// Source folder are implicitly exported.
123
			// Source folder are implicitly exported.
124
			if (!entry.isExported() && entry.getEntryKind() != IClasspathEntry.CPE_SOURCE) continue;
124
			if (!entry.isExported() && entry.getEntryKind() != IClasspathEntry.CPE_SOURCE) {
125
				// Need to remove the project from visited projects list to be sure
126
				// not to skip library when the project will be added as a top level.
127
				// see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=176831
128
				visitedProjects.remove(project);
129
				continue;
130
			}
125
			cpEntry = cpEntry.combineWith((ClasspathEntry)referringEntry);
131
			cpEntry = cpEntry.combineWith((ClasspathEntry)referringEntry);
126
//				cpEntry = ((ClasspathEntry)referringEntry).combineWith(cpEntry);
132
//				cpEntry = ((ClasspathEntry)referringEntry).combineWith(cpEntry);
127
		}
133
		}
(-)src/org/eclipse/jdt/core/tests/model/JavaSearchMultipleProjectsTests.java (+62 lines)
Lines 924-929 Link Here
924
}
924
}
925
925
926
/**
926
/**
927
 * @bug 176831: [search] No search results due to malformed search scope
928
 * @test Verify that type are found in rt.jar even if it's added as a library on the classpath
929
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=176831"
930
 */
931
public void testBug176831() throws CoreException {
932
	try {
933
		// Create projects and files
934
		final IJavaProject p1 = createJavaProject("P1", new String[] {"src"}, null, new String[] {"/P2"}, "bin");
935
		final IJavaProject p2 = createJavaProject("P2", new String[] {"src"}, new String[] { getExternalJCLPathString() }, "bin");
936
		
937
		// Create scope and search
938
		IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { p1, p2 }, IJavaSearchScope.SOURCES | IJavaSearchScope.APPLICATION_LIBRARIES | IJavaSearchScope.REFERENCED_PROJECTS);
939
		JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
940
		resultCollector.showProject = true;
941
		resultCollector.showAccuracy = true;
942
		new SearchEngine().search(
943
			SearchPattern.createPattern("toString", IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH),
944
			new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
945
			scope,
946
			resultCollector,
947
			null
948
		);
949
		assertSearchResults(
950
			"Unexpected references to /P1/p/A.java",
951
			""+ getExternalJCLPathString() + " [in P2] java.lang.String java.lang.Object.toString() EXACT_MATCH",
952
			resultCollector);
953
	} finally {
954
		deleteProject("P1");
955
		deleteProject("P2");
956
	}
957
}
958
public void testBug176831b() throws CoreException {
959
	try {
960
		// Create projects and files
961
		final IJavaProject p1 = createJavaProject("P1", new String[] {"src"}, null, new String[] {"/P2"}, "bin");
962
		final IJavaProject p2 = createJavaProject("P2", new String[] {"src"}, null, new String[] {"/P3"}, "bin");
963
		final IJavaProject p3 = createJavaProject("P3", new String[] {"src"}, new String[] { getExternalJCLPathString() }, "bin");
964
		
965
		// Create scope and search
966
		IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { p1, p2, p3 }, IJavaSearchScope.SOURCES | IJavaSearchScope.APPLICATION_LIBRARIES | IJavaSearchScope.REFERENCED_PROJECTS);
967
		JavaSearchResultCollector resultCollector = new JavaSearchResultCollector();
968
		resultCollector.showProject = true;
969
		resultCollector.showAccuracy = true;
970
		new SearchEngine().search(
971
			SearchPattern.createPattern("toString", IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH),
972
			new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
973
			scope,
974
			resultCollector,
975
			null
976
		);
977
		assertSearchResults(
978
			"Unexpected references to /P1/p/A.java",
979
			""+ getExternalJCLPathString() + " [in P3] java.lang.String java.lang.Object.toString() EXACT_MATCH",
980
			resultCollector);
981
	} finally {
982
		deleteProject("P1");
983
		deleteProject("P2");
984
		deleteProject("P3");
985
	}
986
}
987
988
/**
927
 * @bug 195228: [search] Invalid path in open type dialog
989
 * @bug 195228: [search] Invalid path in open type dialog
928
 * @test Verify that correct types are found even with project and source folders in the classpath
990
 * @test Verify that correct types are found even with project and source folders in the classpath
929
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=195228"
991
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=195228"

Return to bug 176831