Version 1.7.0-dev.3.1 .

svn merge -c 40422 https://dart.googlecode.com/svn/branches/bleeding_edge/dart
dart

Review URL: https://codereview.chromium.org//583663002

git-svn-id: http://dart.googlecode.com/svn/trunk@40436 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index f677aa3..0047e18 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -8718,19 +8718,46 @@
 }
 
 
+// Traits for looking up Libraries by url in a hash set.
+class LibraryUrlTraits {
+ public:
+  // Called when growing the table.
+  static bool IsMatch(const Object& a, const Object& b) {
+    ASSERT(a.IsLibrary() && b.IsLibrary());
+    // Library objects are always canonical.
+    return a.raw() == b.raw();
+  }
+  static uword Hash(const Object& key) {
+    return Library::Cast(key).UrlHash();
+  }
+};
+
+
+typedef UnorderedHashSet<LibraryUrlTraits> LibraryLoadErrorSet;
+
+
 RawInstance* Library::TransitiveLoadError() const {
   if (LoadError() != Instance::null()) {
     return LoadError();
   }
+  Isolate* isolate = Isolate::Current();
+  ObjectStore* object_store = isolate->object_store();
+  LibraryLoadErrorSet set(object_store->library_load_error_table());
+  bool present = false;
+  if (set.GetOrNull(*this, &present) != Object::null()) {
+    object_store->set_library_load_error_table(set.Release());
+    return Instance::null();
+  }
+  // Ensure we don't repeatedly visit the same library again.
+  set.Insert(*this);
+  object_store->set_library_load_error_table(set.Release());
   intptr_t num_imp = num_imports();
-  Library& lib = Library::Handle();
-  Instance& error = Instance::Handle();
+  Library& lib = Library::Handle(isolate);
+  Instance& error = Instance::Handle(isolate);
   for (intptr_t i = 0; i < num_imp; i++) {
+    HANDLESCOPE(isolate);
     lib = ImportLibraryAt(i);
-    // Break potential import cycles while recursing through imports.
-    set_num_imports(0);
     error = lib.TransitiveLoadError();
-    set_num_imports(num_imp);
     if (!error.IsNull()) {
       break;
     }
@@ -9914,17 +9941,26 @@
 
 
 RawInstance* LibraryPrefix::LoadError() const {
-  Library& lib = Library::Handle();
-  Instance& error = Instance::Handle();
+  Isolate* isolate = Isolate::Current();
+  ObjectStore* object_store = isolate->object_store();
+  GrowableObjectArray& libs =
+      GrowableObjectArray::Handle(isolate, object_store->libraries());
+  ASSERT(!libs.IsNull());
+  LibraryLoadErrorSet set(HashTables::New<LibraryLoadErrorSet>(libs.Length()));
+  object_store->set_library_load_error_table(set.Release());
+  Library& lib = Library::Handle(isolate);
+  Instance& error = Instance::Handle(isolate);
   for (int32_t i = 0; i < num_imports(); i++) {
     lib = GetLibrary(i);
     ASSERT(!lib.IsNull());
+    HANDLESCOPE(isolate);
     error = lib.TransitiveLoadError();
     if (!error.IsNull()) {
-      return error.raw();
+      break;
     }
   }
-  return Instance::null();
+  object_store->set_library_load_error_table(Object::empty_array());
+  return error.raw();
 }
 
 
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 6b88da2..38f058b 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -2878,6 +2878,8 @@
     return raw() == CoreLibrary();
   }
 
+  inline intptr_t UrlHash() const;
+
   static RawLibrary* LookupLibrary(const String& url);
   static RawLibrary* GetLibrary(intptr_t index);
 
@@ -7437,6 +7439,13 @@
 }
 
 
+intptr_t Library::UrlHash() const {
+  intptr_t result = Smi::Value(url()->ptr()->hash_);
+  ASSERT(result != 0);
+  return result;
+}
+
+
 void MegamorphicCache::SetEntry(const Array& array,
                                 intptr_t index,
                                 const Smi& class_id,
diff --git a/runtime/vm/object_store.cc b/runtime/vm/object_store.cc
index 80b07f7..c451de3 100644
--- a/runtime/vm/object_store.cc
+++ b/runtime/vm/object_store.cc
@@ -74,6 +74,7 @@
     preallocated_stack_trace_(Stacktrace::null()),
     lookup_port_handler_(Function::null()),
     handle_message_function_(Function::null()),
+    library_load_error_table_(Array::null()),
     default_tag_(UserTag::null()) {
 }
 
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index 36bcc01..a9bcff2 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -435,6 +435,16 @@
     return OFFSET_OF(ObjectStore, default_tag_);
   }
 
+  RawArray* library_load_error_table() const {
+    return library_load_error_table_;
+  }
+  void set_library_load_error_table(const Array& table) {
+    library_load_error_table_ = table.raw();
+  }
+  static intptr_t library_load_error_table_offset() {
+    return OFFSET_OF(ObjectStore, library_load_error_table_);
+  }
+
   // Visit all object pointers.
   void VisitObjectPointers(ObjectPointerVisitor* visitor);
 
@@ -522,9 +532,10 @@
   RawStacktrace* preallocated_stack_trace_;
   RawFunction* lookup_port_handler_;
   RawFunction* handle_message_function_;
+  RawArray* library_load_error_table_;
   RawUserTag* default_tag_;
   RawObject** to() {
-    return reinterpret_cast<RawObject**>(&handle_message_function_);
+    return reinterpret_cast<RawObject**>(&library_load_error_table_);
   }
 
   friend class SnapshotReader;
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index bf13fcb..87c4062 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -1490,6 +1490,8 @@
   RawSmi* length_;
   RawSmi* hash_;
   RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->hash_); }
+
+  friend class Library;
 };
 
 
diff --git a/tests/language/issue_1751477.dart b/tests/language/issue_1751477.dart
new file mode 100644
index 0000000..2a0d5c4
--- /dev/null
+++ b/tests/language/issue_1751477.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'issue_1751477_lib1.dart' deferred as lib1;
+import 'issue_1751477_lib2.dart' deferred as lib2;
+import 'issue_1751477_lib3.dart' deferred as lib3;
+import 'issue_1751477_lib4.dart' deferred as lib4;
+import 'issue_1751477_lib5.dart' deferred as lib5;
+import 'issue_1751477_lib6.dart' deferred as lib6;
+import 'issue_1751477_lib7.dart' deferred as lib7;
+import 'issue_1751477_lib8.dart' deferred as lib8;
+import 'issue_1751477_lib9.dart' deferred as lib9;
+
+main() {
+  lib1.loadLibrary().then((_) {
+    lib2.loadLibrary().then((_) {
+      lib3.loadLibrary().then((_) {
+        lib4.loadLibrary().then((_) {
+          lib5.loadLibrary().then((_) {
+            lib6.loadLibrary().then((_) {
+              lib7.loadLibrary().then((_) {
+                lib8.loadLibrary().then((_) {
+                  lib9.loadLibrary().then((_) {
+                  });
+                });
+              });
+            });
+          });
+        });
+      });
+    });
+  });
+}
diff --git a/tests/language/issue_1751477_lib1.dart b/tests/language/issue_1751477_lib1.dart
new file mode 100644
index 0000000..407a526
--- /dev/null
+++ b/tests/language/issue_1751477_lib1.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib1;
+
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib1_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib11.dart b/tests/language/issue_1751477_lib11.dart
new file mode 100644
index 0000000..1749230
--- /dev/null
+++ b/tests/language/issue_1751477_lib11.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib11;
+
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib11_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib2.dart b/tests/language/issue_1751477_lib2.dart
new file mode 100644
index 0000000..027736f
--- /dev/null
+++ b/tests/language/issue_1751477_lib2.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib2;
+
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib2_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib21.dart b/tests/language/issue_1751477_lib21.dart
new file mode 100644
index 0000000..bd6cc75
--- /dev/null
+++ b/tests/language/issue_1751477_lib21.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib21;
+
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib21_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib3.dart b/tests/language/issue_1751477_lib3.dart
new file mode 100644
index 0000000..a3be75b
--- /dev/null
+++ b/tests/language/issue_1751477_lib3.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib3;
+
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib3_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib31.dart b/tests/language/issue_1751477_lib31.dart
new file mode 100644
index 0000000..99aa068
--- /dev/null
+++ b/tests/language/issue_1751477_lib31.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib31;
+
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib31_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib4.dart b/tests/language/issue_1751477_lib4.dart
new file mode 100644
index 0000000..6668510
--- /dev/null
+++ b/tests/language/issue_1751477_lib4.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib4;
+
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib4_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib41.dart b/tests/language/issue_1751477_lib41.dart
new file mode 100644
index 0000000..a0569c7
--- /dev/null
+++ b/tests/language/issue_1751477_lib41.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib41;
+
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib41_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib5.dart b/tests/language/issue_1751477_lib5.dart
new file mode 100644
index 0000000..0e5dc82
--- /dev/null
+++ b/tests/language/issue_1751477_lib5.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib5;
+
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib5_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib51.dart b/tests/language/issue_1751477_lib51.dart
new file mode 100644
index 0000000..b7a93fa
--- /dev/null
+++ b/tests/language/issue_1751477_lib51.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib51;
+
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib51_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib6.dart b/tests/language/issue_1751477_lib6.dart
new file mode 100644
index 0000000..1fbe878
--- /dev/null
+++ b/tests/language/issue_1751477_lib6.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib6;
+
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib6_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib61.dart b/tests/language/issue_1751477_lib61.dart
new file mode 100644
index 0000000..4e4e063
--- /dev/null
+++ b/tests/language/issue_1751477_lib61.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib61;
+
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib61_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib7.dart b/tests/language/issue_1751477_lib7.dart
new file mode 100644
index 0000000..1a74d1a
--- /dev/null
+++ b/tests/language/issue_1751477_lib7.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib7;
+
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib7_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib71.dart b/tests/language/issue_1751477_lib71.dart
new file mode 100644
index 0000000..ba546f5
--- /dev/null
+++ b/tests/language/issue_1751477_lib71.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib71;
+
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib71_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib8.dart b/tests/language/issue_1751477_lib8.dart
new file mode 100644
index 0000000..1793d3c
--- /dev/null
+++ b/tests/language/issue_1751477_lib8.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib8;
+
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib8_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib81.dart b/tests/language/issue_1751477_lib81.dart
new file mode 100644
index 0000000..bf43a86
--- /dev/null
+++ b/tests/language/issue_1751477_lib81.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib81;
+
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib91.dart';
+
+lib81_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib9.dart b/tests/language/issue_1751477_lib9.dart
new file mode 100644
index 0000000..3d99989
--- /dev/null
+++ b/tests/language/issue_1751477_lib9.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib9;
+
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib1.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+import 'issue_1751477_lib91.dart';
+
+lib9_func()
+{
+}
diff --git a/tests/language/issue_1751477_lib91.dart b/tests/language/issue_1751477_lib91.dart
new file mode 100644
index 0000000..fea8105
--- /dev/null
+++ b/tests/language/issue_1751477_lib91.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library lib91;
+
+import 'issue_1751477_lib1.dart';
+import 'issue_1751477_lib2.dart';
+import 'issue_1751477_lib3.dart';
+import 'issue_1751477_lib4.dart';
+import 'issue_1751477_lib5.dart';
+import 'issue_1751477_lib6.dart';
+import 'issue_1751477_lib7.dart';
+import 'issue_1751477_lib8.dart';
+import 'issue_1751477_lib9.dart';
+
+import 'issue_1751477_lib11.dart';
+import 'issue_1751477_lib21.dart';
+import 'issue_1751477_lib31.dart';
+import 'issue_1751477_lib41.dart';
+import 'issue_1751477_lib51.dart';
+import 'issue_1751477_lib61.dart';
+import 'issue_1751477_lib71.dart';
+import 'issue_1751477_lib81.dart';
+
+lib91_func()
+{
+}
diff --git a/tools/VERSION b/tools/VERSION
index 1395a04..76378ea 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
 MINOR 7
 PATCH 0
 PRERELEASE 3
-PRERELEASE_PATCH 0
+PRERELEASE_PATCH 1