Index: runtime/vm/dart_api_impl.cc |
=================================================================== |
--- runtime/vm/dart_api_impl.cc (revision 36338) |
+++ runtime/vm/dart_api_impl.cc (working copy) |
@@ -3269,12 +3269,19 @@ |
RETURN_TYPE_ERROR(isolate, type, Type); |
} |
const Class& cls = Class::Handle(isolate, type_obj.type_class()); |
+ const Error& error = Error::Handle(isolate, cls.EnsureIsFinalized(isolate)); |
+ if (!error.IsNull()) { |
+ // An error occurred, return error object. |
+ return Api::NewHandle(isolate, error.raw()); |
+ } |
+ |
if (!cls.is_fields_marked_nullable()) { |
// Mark all fields as nullable. |
Class& iterate_cls = Class::Handle(isolate, cls.raw()); |
Field& field = Field::Handle(isolate); |
Array& fields = Array::Handle(isolate); |
while (!iterate_cls.IsNull()) { |
+ ASSERT(iterate_cls.is_finalized()); |
srdjan
2014/05/19 23:39:10
Strictly, this is not necessary since all super cl
siva
2014/05/19 23:42:16
Agreed but I was just being extra careful.
On 201
|
iterate_cls.set_is_fields_marked_nullable(); |
fields = iterate_cls.fields(); |
iterate_cls = iterate_cls.SuperClass(); |
@@ -3288,11 +3295,6 @@ |
} |
} |
- const Error& error = Error::Handle(isolate, cls.EnsureIsFinalized(isolate)); |
- if (!error.IsNull()) { |
- // An error occurred, return error object. |
- return Api::NewHandle(isolate, error.raw()); |
- } |
// Allocate an object for the given class. |
return Api::NewHandle(isolate, Instance::New(cls)); |
} |