Index: dart/runtime/vm/parser.cc |
=================================================================== |
--- dart/runtime/vm/parser.cc (revision 31466) |
+++ dart/runtime/vm/parser.cc (working copy) |
@@ -743,7 +743,8 @@ |
*(param[i].default_value)); |
const Object* metadata = param[i].metadata; |
if ((metadata != NULL) && (*metadata).IsError()) { |
- return (*metadata).raw(); // Error evaluating the metadata. |
+ isolate->set_long_jump_base(base); |
+ return metadata->raw(); // Error evaluating the metadata. |
} |
param_descriptor.SetAt(j + kParameterMetadataOffset, |
(param[i].metadata == NULL) ? Object::null_instance() : |
@@ -864,7 +865,10 @@ |
Parser parser(script, lib, token_pos); |
parser.set_current_class(cls); |
parser.set_parsing_metadata(true); |
- return parser.EvaluateMetadata(); |
+ |
+ RawObject* metadata = parser.EvaluateMetadata(); |
+ isolate->set_long_jump_base(base); |
+ return metadata; |
} else { |
Error& error = Error::Handle(); |
error = isolate->object_store()->sticky_error(); |