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

(-)model/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java (-2 / +12 lines)
Lines 16-21 Link Here
16
import org.eclipse.core.resources.IResource;
16
import org.eclipse.core.resources.IResource;
17
import org.eclipse.core.runtime.IPath;
17
import org.eclipse.core.runtime.IPath;
18
import org.eclipse.core.runtime.IProgressMonitor;
18
import org.eclipse.core.runtime.IProgressMonitor;
19
import org.eclipse.core.runtime.NullProgressMonitor;
19
import org.eclipse.core.runtime.SubProgressMonitor;
20
import org.eclipse.core.runtime.SubProgressMonitor;
20
import org.eclipse.jdt.core.*;
21
import org.eclipse.jdt.core.*;
21
import org.eclipse.jdt.core.compiler.CharOperation;
22
import org.eclipse.jdt.core.compiler.CharOperation;
Lines 444-450 Link Here
444
	final Map binariesFromIndexMatches,
445
	final Map binariesFromIndexMatches,
445
	final IPathRequestor pathRequestor,
446
	final IPathRequestor pathRequestor,
446
	int waitingPolicy,	// WaitUntilReadyToSearch | ForceImmediateSearch | CancelIfNotReadyToSearch
447
	int waitingPolicy,	// WaitUntilReadyToSearch | ForceImmediateSearch | CancelIfNotReadyToSearch
447
	IProgressMonitor progressMonitor) {
448
	final IProgressMonitor progressMonitor) {
448
449
449
	/* embed constructs inside arrays so as to pass them to (inner) collector */
450
	/* embed constructs inside arrays so as to pass them to (inner) collector */
450
	final Queue queue = new Queue();
451
	final Queue queue = new Queue();
Lines 519-525 Link Here
519
520
520
			// search all index references to a given supertype
521
			// search all index references to a given supertype
521
			pattern.superSimpleName = currentTypeName;
522
			pattern.superSimpleName = currentTypeName;
522
			indexManager.performConcurrentJob(job, waitingPolicy, null); // no sub progress monitor since its too costly for deep hierarchies
523
			indexManager.performConcurrentJob(job, waitingPolicy, progressMonitor == null ? null : new NullProgressMonitor() { 
524
				// don't report progress since this is too costly for deep hierarchies
525
				// just handle isCanceled() (seehttps://bugs.eclipse.org/bugs/show_bug.cgi?id=179511)
526
				public void setCanceled(boolean value) {
527
					progressMonitor.setCanceled(value);
528
				}
529
				public boolean isCanceled() {
530
					return progressMonitor.isCanceled();
531
				}
532
			});
523
			if (progressMonitor != null && ++ticks <= MAXTICKS)
533
			if (progressMonitor != null && ++ticks <= MAXTICKS)
524
				progressMonitor.worked(1);
534
				progressMonitor.worked(1);
525
535
(-)src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java (-1 / +2 lines)
Lines 620-625 Link Here
620
		createFile("/P3/Y.java", "public class Y extends X {}");
620
		createFile("/P3/Y.java", "public class Y extends X {}");
621
		createFile("/P3/Z.java", "public class Z extends X {}");
621
		createFile("/P3/Z.java", "public class Z extends X {}");
622
		createFile("/P2/W.java", "public class W extends X {}");
622
		createFile("/P2/W.java", "public class W extends X {}");
623
		waitUntilIndexesReady();
623
		IType type = getCompilationUnit("/P1/X.java").getType("X");
624
		IType type = getCompilationUnit("/P1/X.java").getType("X");
624
		class ProgressCounter extends TestProgressMonitor {
625
		class ProgressCounter extends TestProgressMonitor {
625
			int count = 0;
626
			int count = 0;
Lines 630-636 Link Here
630
		}
631
		}
631
		ProgressCounter counter = new ProgressCounter();
632
		ProgressCounter counter = new ProgressCounter();
632
		type.newTypeHierarchy(counter);
633
		type.newTypeHierarchy(counter);
633
		assertEquals("Unexpected work count", 18, counter.count);
634
		assertEquals("Unexpected work count", 89, counter.count);
634
	} finally {
635
	} finally {
635
		deleteProjects(new String[] {"P1", "P2", "P3"});
636
		deleteProjects(new String[] {"P1", "P2", "P3"});
636
	}
637
	}

Return to bug 179699