Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(329)

Unified Diff: runtime/vm/dart_api_impl.cc

Issue 292023002: Ensure that the class is finalized before marking class as having (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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));
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698