Index: runtime/lib/mirrors.cc |
diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc |
index 4a68c8667877c15dfb49755e136314e04e47ec3f..1dade418b20d37dcac6e91577b4a9dfe5a4c9293 100644 |
--- a/runtime/lib/mirrors.cc |
+++ b/runtime/lib/mirrors.cc |
@@ -446,7 +446,14 @@ static RawInstance* CreateLibraryDependencyMirror(Thread* thread, |
const Array& args = Array::Handle(Array::New(7)); |
args.SetAt(0, importer); |
- args.SetAt(1, importee.Loaded() ? importee_mirror : prefix); |
+ if (importee.Loaded() || prefix.IsNull()) { |
+ // A native extension is never "loaded" by the embedder. Use the fact that |
+ // it doesn't have an prefix where asa deferred import does to distinguish |
+ // it from a deferred import. It will appear like an empty library. |
+ args.SetAt(1, importee_mirror); |
+ } else { |
+ args.SetAt(1, prefix); |
+ } |
args.SetAt(2, combinators); |
args.SetAt(3, prefix.IsNull() ? Object::null_object() |
: String::Handle(prefix.name())); |