| 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();
 | 
| 
 |