Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/Listener.java

Issue 10809037: Fix library scan of loose files (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/Listener.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/Listener.java (revision 9776)
+++ editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/Listener.java (working copy)
@@ -33,6 +33,7 @@
private final PrintStringWriter duplicates = new PrintStringWriter();
private boolean idle;
+ private int idleCount;
private final ArrayList<AnalysisError> errors = new ArrayList<AnalysisError>();
@@ -57,6 +58,9 @@
public void idle(boolean idle) {
synchronized (lock) {
this.idle = idle;
+ if (idle) {
+ this.idleCount++;
+ }
lock.notifyAll();
}
}
@@ -206,6 +210,35 @@
}
}
+ /**
+ * Wait up to the specified number of milliseconds for the receiver to have the specified idle
+ * count. If the specified number is less than or equal to zero, then this method returns
+ * immediately.
+ *
+ * @param expectedIdleCount the expected idle count
+ * @param milliseconds the maximum number of milliseconds to wait
+ * @return <code>true</code> if the receiver has the specified idle count, else <code>false</code>
+ */
+ void waitForIdle(int expectedIdleCount, long milliseconds) {
+ synchronized (lock) {
+ long end = System.currentTimeMillis() + milliseconds;
+ while (expectedIdleCount > idleCount) {
+ long delta = end - System.currentTimeMillis();
+ if (delta <= 0) {
+ break;
+ }
+ try {
+ lock.wait(delta);
+ } catch (InterruptedException e) {
+ //$FALL-THROUGH$
+ }
+ }
+ if (expectedIdleCount != idleCount) {
+ fail("Expected idle count " + expectedIdleCount + " but found " + idleCount);
+ }
+ }
+ }
+
void waitForIdle(long milliseconds) {
synchronized (lock) {
long end = System.currentTimeMillis() + milliseconds;
@@ -222,7 +255,6 @@
}
}
}
-
}
void waitForParsed(long milliseconds, final File libraryFile, final File... dartFiles) {
@@ -321,6 +353,9 @@
private void failParsed(File libraryFile, File... dartFiles) {
PrintStringWriter psw = new PrintStringWriter();
HashSet<String> parsedInLibrary = parsed.get(libraryFile.getPath());
+ if (parsedInLibrary == null) {
+ parsedInLibrary = new HashSet<String>();
+ }
psw.println("Expected at least " + dartFiles.length + " parsed files in "
+ libraryFile.getName() + ", but found " + parsedInLibrary.size());
psw.println(" " + libraryFile.getPath());

Powered by Google App Engine
This is Rietveld 408576698