Index: runtime/vm/dart_api_impl.cc |
=================================================================== |
--- runtime/vm/dart_api_impl.cc (revision 33504) |
+++ runtime/vm/dart_api_impl.cc (working copy) |
@@ -3139,7 +3139,9 @@ |
if (type_obj.IsNull()) { |
RETURN_TYPE_ERROR(isolate, type, Type); |
} |
- const Class& cls = Class::Handle(isolate, type_obj.type_class()); |
+ REUSABLE_CLASS_HANDLESCOPE(isolate); |
+ Class& cls = isolate->ClassHandle(); |
+ cls = type_obj.type_class(); |
if (!cls.is_fields_marked_nullable()) { |
// Mark all fields as nullable. |
@@ -3160,6 +3162,13 @@ |
} |
} |
+ REUSABLE_ERROR_HANDLESCOPE(isolate); |
+ Error& error = isolate->ErrorHandle(); |
+ error = 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)); |
} |