Version 0.7.6.1 .

svn merge -c 28009 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 28013 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 28027 https://dart.googlecode.com/svn/branches/bleeding_edge trunk

git-svn-id: http://dart.googlecode.com/svn/trunk@28029 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkg/analyzer_experimental/lib/src/generated/engine.dart b/pkg/analyzer_experimental/lib/src/generated/engine.dart
index 44685da..1d8b5f8 100644
--- a/pkg/analyzer_experimental/lib/src/generated/engine.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/engine.dart
@@ -4102,7 +4102,7 @@
    */
   DartEntry recordGenerateDartHintsTask(GenerateDartHintsTask task) {
     Source librarySource = task.libraryElement.source;
-    AnalysisException thrownException = task.exception;
+    AnalysisException thrownException = task.thrownException;
     DartEntry libraryEntry = null;
     Map<Source, TimestampedData<List<AnalysisError>>> hintMap = task.hintMap;
     if (hintMap == null) {
@@ -4186,7 +4186,7 @@
    */
   DartEntry recordParseDartTaskResults(ParseDartTask task) {
     Source source = task.source;
-    AnalysisException thrownException = task.exception;
+    AnalysisException thrownException = task.thrownException;
     DartEntry dartEntry = null;
     {
       SourceEntry sourceEntry = _cache.get(source);
@@ -4253,7 +4253,7 @@
    */
   HtmlEntry recordParseHtmlTaskResults(ParseHtmlTask task) {
     Source source = task.source;
-    AnalysisException thrownException = task.exception;
+    AnalysisException thrownException = task.thrownException;
     HtmlEntry htmlEntry = null;
     {
       SourceEntry sourceEntry = _cache.get(source);
@@ -4327,7 +4327,7 @@
    */
   DartEntry recordResolveDartLibraryTaskResults(ResolveDartLibraryTask task) {
     LibraryResolver resolver = task.libraryResolver;
-    AnalysisException thrownException = task.exception;
+    AnalysisException thrownException = task.thrownException;
     DartEntry unitEntry = null;
     Source unitSource = task.unitSource;
     if (resolver != null) {
@@ -4419,7 +4419,7 @@
   SourceEntry recordResolveDartUnitTaskResults(ResolveDartUnitTask task) {
     Source unitSource = task.source;
     Source librarySource = task.librarySource;
-    AnalysisException thrownException = task.exception;
+    AnalysisException thrownException = task.thrownException;
     DartEntry dartEntry = null;
     {
       SourceEntry sourceEntry = _cache.get(unitSource);
@@ -4477,7 +4477,7 @@
    */
   SourceEntry recordResolveHtmlTaskResults(ResolveHtmlTask task) {
     Source source = task.source;
-    AnalysisException thrownException = task.exception;
+    AnalysisException thrownException = task.thrownException;
     HtmlEntry htmlEntry = null;
     {
       SourceEntry sourceEntry = _cache.get(source);
@@ -5927,7 +5927,7 @@
    * The exception that was thrown while performing this task, or `null` if the task completed
    * successfully.
    */
-  AnalysisException exception;
+  AnalysisException thrownException;
 
   /**
    * Initialize a newly created task to perform analysis within the given context.
@@ -5958,7 +5958,7 @@
     try {
       safelyPerform();
     } on AnalysisException catch (exception) {
-      exception = exception;
+      thrownException = exception;
       AnalysisEngine.instance.logger.logInformation2("Task failed: ${taskDescription}", exception);
     }
     return accept(visitor);
diff --git a/pkg/analyzer_experimental/lib/src/generated/resolver.dart b/pkg/analyzer_experimental/lib/src/generated/resolver.dart
index c38a954..3860b21 100644
--- a/pkg/analyzer_experimental/lib/src/generated/resolver.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/resolver.dart
@@ -10884,7 +10884,7 @@
       if (enclosingLibrary != null) {
         libName2 = enclosingLibrary.definingCompilationUnit.displayName;
       }
-      _errorListener.onError(new AnalysisError.con2(source, identifier.offset, identifier.length, StaticWarningCode.AMBIGUOUS_IMPORT, [foundEltName, libName1, libName2]));
+      _errorListener.onError(new AnalysisError.con2(source2, identifier.offset, identifier.length, StaticWarningCode.AMBIGUOUS_IMPORT, [foundEltName, libName1, libName2]));
       return foundElement;
     }
     if (foundElement != null) {
@@ -10959,7 +10959,7 @@
           offset = accessor.variable.nameOffset;
         }
       }
-      return new AnalysisError.con2(source, offset, duplicate.displayName.length, CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER, [existing.displayName]);
+      return new AnalysisError.con2(source2, offset, duplicate.displayName.length, CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER, [existing.displayName]);
     }
     return super.getErrorForDuplicate(existing, duplicate);
   }
@@ -11379,7 +11379,7 @@
   AnalysisError getErrorForDuplicate(Element existing, Element duplicate) {
     Source source = duplicate.source;
     if (source == null) {
-      source = source;
+      source = source2;
     }
     return new AnalysisError.con2(source, duplicate.nameOffset, duplicate.displayName.length, CompileTimeErrorCode.DUPLICATE_DEFINITION, [existing.displayName]);
   }
@@ -11397,7 +11397,7 @@
    *
    * @return the source object with which errors should be associated
    */
-  Source get source => definingLibrary.definingCompilationUnit.source;
+  Source get source2 => definingLibrary.definingCompilationUnit.source;
 
   /**
    * Return the element with which the given name is associated, or `null` if the name is not
diff --git a/tools/VERSION b/tools/VERSION
index fd38c45..0c31b96 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -1,4 +1,4 @@
 MAJOR 0
 MINOR 7
 BUILD 6
-PATCH 0
+PATCH 1
diff --git a/tools/testing/dart/test_runner.dart b/tools/testing/dart/test_runner.dart
index 2151352..b93c3de 100644
--- a/tools/testing/dart/test_runner.dart
+++ b/tools/testing/dart/test_runner.dart
@@ -1362,9 +1362,10 @@
               process.kill();
             }
           }
-          process.exitCode.then(_commandComplete);
-          _drainStream(process.stdout, stdout);
-          _drainStream(process.stderr, stderr);
+          Future.wait([process.exitCode,
+                       _drainStream(process.stdout, stdout),
+                       _drainStream(process.stderr, stderr)])
+              .then((values) => _commandComplete(values[0]));
           timeoutTimer = new Timer(new Duration(seconds: timeout),
                                    timeoutHandler);
         }).catchError((e) {
@@ -1399,8 +1400,8 @@
     return commandOutput;
   }
 
-  void _drainStream(Stream<List<int>> source, List<int> destination) {
-    source.listen(destination.addAll);
+  Future _drainStream(Stream<List<int>> source, List<int> destination) {
+    return source.listen(destination.addAll).asFuture();
   }
 
   Map<String, String> _createProcessEnvironment() {