Index: pkg/serialization/lib/src/serialization_rule.dart |
=================================================================== |
--- pkg/serialization/lib/src/serialization_rule.dart (revision 30026) |
+++ pkg/serialization/lib/src/serialization_rule.dart (working copy) |
@@ -410,13 +410,18 @@ |
if (name.contains(":")) { |
var uri = Uri.parse(name); |
var libMirror = currentMirrorSystem().libraries[uri]; |
- return libMirror.classes[new Symbol(type)]; |
+ var result = libMirror.declarations[new Symbol(type)]; |
+ return result is ClassMirror ? result : null; |
} else { |
var symbol = new Symbol(name); |
var typeSymbol = new Symbol(type); |
- var libMirror = currentMirrorSystem().libraries.values.firstWhere( |
- (lib) => lib.simpleName == symbol && lib.classes[typeSymbol] != null); |
- return libMirror.classes[typeSymbol]; |
+ var libMirror = currentMirrorSystem().libraries.values.firstWhere((lib) { |
+ if (lib.simpleName != symbol) return false; |
+ var candidate = lib.declarations[typeSymbol]; |
+ return candidate != null && candidate is ClassMirror; |
+ }); |
+ var result = libMirror.declarations[typeSymbol]; |
+ return result is ClassMirror ? result : null; |
} |
} |
} |