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

Unified Diff: runtime/vm/parser.cc

Issue 260713008: Add support for javascript incompatibility warnings. (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
Index: runtime/vm/parser.cc
===================================================================
--- runtime/vm/parser.cc (revision 36000)
+++ runtime/vm/parser.cc (working copy)
@@ -810,7 +810,7 @@
if (!func.IsImplicitConstructor()) {
parser.SkipFunctionPreamble();
}
- node_sequence = parser.ParseFunc(func, default_parameter_values);
+ node_sequence = parser.ParseFunc(func, &default_parameter_values);
break;
case RawFunction::kImplicitGetter:
ASSERT(!func.is_static());
@@ -833,11 +833,11 @@
break;
case RawFunction::kNoSuchMethodDispatcher:
node_sequence =
- parser.ParseNoSuchMethodDispatcher(func, default_parameter_values);
+ parser.ParseNoSuchMethodDispatcher(func, &default_parameter_values);
break;
case RawFunction::kInvokeFieldDispatcher:
node_sequence =
- parser.ParseInvokeFieldDispatcher(func, default_parameter_values);
+ parser.ParseInvokeFieldDispatcher(func, &default_parameter_values);
break;
default:
UNREACHABLE();
@@ -1301,7 +1301,7 @@
void Parser::BuildDispatcherScope(const Function& func,
const ArgumentsDescriptor& desc,
- Array& default_values) {
+ Array* default_values) {
ParamList params;
// Receiver first.
intptr_t token_pos = func.token_pos();
@@ -1340,7 +1340,7 @@
}
SequenceNode* Parser::ParseNoSuchMethodDispatcher(const Function& func,
- Array& default_values) {
+ Array* default_values) {
TRACE_PARSER("ParseNoSuchMethodDispatcher");
ASSERT(func.IsNoSuchMethodDispatcher());
@@ -1385,7 +1385,7 @@
SequenceNode* Parser::ParseInvokeFieldDispatcher(const Function& func,
- Array& default_values) {
+ Array* default_values) {
TRACE_PARSER("ParseInvokeFieldDispatcher");
ASSERT(func.IsInvokeFieldDispatcher());
@@ -2561,7 +2561,7 @@
// Parser is at the opening parenthesis of the formal parameter declaration
// of function. Parse the formal parameters, initializers and code.
SequenceNode* Parser::ParseConstructor(const Function& func,
- Array& default_parameter_values) {
+ Array* default_parameter_values) {
TRACE_PARSER("ParseConstructor");
ASSERT(func.IsConstructor());
ASSERT(!func.IsFactory());
@@ -2853,7 +2853,7 @@
// declaration of the function or constructor.
// Parse the formal parameters and code.
SequenceNode* Parser::ParseFunc(const Function& func,
- Array& default_parameter_values) {
+ Array* default_parameter_values) {
TRACE_PARSER("ParseFunc");
Function& saved_innermost_function =
Function::Handle(innermost_function().raw());
@@ -5332,15 +5332,15 @@
// Set up default values for all optional parameters to the function.
void Parser::SetupDefaultsForOptionalParams(const ParamList* params,
- Array& default_values) {
+ Array* default_values) {
if (params->num_optional_parameters > 0) {
// Build array of default parameter values.
ParamDesc* param =
params->parameters->data() + params->num_fixed_parameters;
- default_values = Array::New(params->num_optional_parameters);
+ *default_values = Array::New(params->num_optional_parameters);
for (int i = 0; i < params->num_optional_parameters; i++) {
ASSERT(param->default_value != NULL);
- default_values.SetAt(i, *param->default_value);
+ default_values->SetAt(i, *param->default_value);
param++;
}
}
@@ -5766,7 +5766,7 @@
// Parse the local function.
Array& default_parameter_values = Array::Handle();
SequenceNode* statements = Parser::ParseFunc(function,
- default_parameter_values);
+ &default_parameter_values);
// Now that the local function has formal parameters, lookup the signature
// class in the current library (but not in its imports) and only create a new
@@ -8997,6 +8997,7 @@
String::Handle(field.name()).ToCString());
} else {
isolate()->long_jump_base()->Jump(1, error);
+ UNREACHABLE();
}
}
ASSERT(const_value.IsNull() || const_value.IsInstance());
@@ -9493,7 +9494,7 @@
void Parser::CheckConstructorCallTypeArguments(
- intptr_t pos, Function& constructor,
+ intptr_t pos, const Function& constructor,
const TypeArguments& type_arguments) {
if (!type_arguments.IsNull()) {
const Class& constructor_class = Class::Handle(constructor.Owner());
@@ -10292,14 +10293,16 @@
interpolate_arg.SetAt(0, value_arr);
// Call interpolation function.
- String& concatenated = String::ZoneHandle(isolate());
+ Object& result = Object::Handle(isolate());
{
PAUSETIMERSCOPE(isolate(), time_compilation);
- concatenated ^= DartEntry::InvokeFunction(func, interpolate_arg);
+ result = DartEntry::InvokeFunction(func, interpolate_arg);
}
- if (concatenated.IsUnhandledException()) {
- ErrorMsg("Exception thrown in Parser::Interpolate");
+ if (result.IsUnhandledException()) {
+ ErrorMsg("%s", Error::Cast(result).ToErrorCString());
}
+ String& concatenated = String::ZoneHandle(isolate());
+ concatenated ^= result.raw();
concatenated = Symbols::New(concatenated);
return concatenated;
}
« no previous file with comments | « runtime/vm/parser.h ('k') | runtime/vm/symbols.h » ('j') | runtime/vm/symbols.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698