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

Unified Diff: runtime/lib/errors_patch.dart

Issue 23486007: Change the field and constructor parameter types of NoSuchMethodError to Symbol. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments Created 7 years, 3 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 | « pkg/unittest/test/matchers_unminified_test.dart ('k') | runtime/vm/object.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/lib/errors_patch.dart
diff --git a/runtime/lib/errors_patch.dart b/runtime/lib/errors_patch.dart
index f8412402dd159030f4547b2d21385c5526a9815c..3cfab550b570180cf01fe534dea7f28607cacbd7 100644
--- a/runtime/lib/errors_patch.dart
+++ b/runtime/lib/errors_patch.dart
@@ -148,13 +148,13 @@ patch class NoSuchMethodError {
} else {
positionalArguments = arguments.sublist(0, numPositionalArguments);
}
- Map<String, dynamic> namedArguments = new Map<String, dynamic>();
+ Map<Symbol, dynamic> namedArguments = new Map<Symbol, dynamic>();
for (int i = 0; i < numNamedArguments; i++) {
var arg_value = arguments[numPositionalArguments + i];
- namedArguments[argumentNames[i]] = arg_value;
+ namedArguments[new Symbol(argumentNames[i])] = arg_value;
}
throw new NoSuchMethodError._withType(receiver,
- memberName,
+ new Symbol(memberName),
invocation_type,
positionalArguments,
namedArguments,
@@ -167,20 +167,31 @@ patch class NoSuchMethodError {
final int _invocation_type;
NoSuchMethodError(Object this._receiver,
- String this._memberName,
+ Symbol this._memberName,
List this._arguments,
- Map<String,dynamic> this._namedArguments,
+ Map<Symbol, dynamic> this._namedArguments,
[List existingArgumentNames = null])
: this._existingArgumentNames = existingArgumentNames,
this._invocation_type = -1;
+ // This constructor seems to be called with either strings or
+ // values read from another NoSuchMethodError.
NoSuchMethodError._withType(Object this._receiver,
- String this._memberName,
+ /*String|Symbol*/ memberName,
this._invocation_type,
List this._arguments,
- Map<String,dynamic> this._namedArguments,
+ Map<dynamic, dynamic> namedArguments,
[List existingArgumentNames = null])
- : this._existingArgumentNames = existingArgumentNames;
+ : this._memberName =
+ (memberName is String) ? new Symbol(memberName) : memberName,
+ this._namedArguments =
+ (namedArguments == null)
+ ? null
+ : new Map<Symbol, dynamic>.fromIterable(
+ namedArguments.keys,
+ key: (k) => (k is String) ? new Symbol(k) : k,
+ value: (k) => namedArguments[k]),
+ this._existingArgumentNames = existingArgumentNames;
String _developerMessage(args_mismatch) {
@@ -194,33 +205,35 @@ patch class NoSuchMethodError {
(const ["method", "getter", "setter", "getter or setter"])[type];
var args_message = args_mismatch ? " with matching arguments" : "";
var msg;
+ var memberName =
+ (_memberName == null) ? "" :_collection_dev.Symbol.getName(_memberName);
switch (level) {
case _InvocationMirror._DYNAMIC: {
if (_receiver == null) {
- msg = "The null object does not have a $type_str '$_memberName'"
+ msg = "The null object does not have a $type_str '$memberName'"
"$args_message.";
} else {
if (_receiver is Function) {
msg = "Closure call with mismatched arguments: "
- "function '$_memberName'";
+ "function '$memberName'";
} else {
msg = "Class '${_receiver.runtimeType}' has no instance $type_str "
- "'$_memberName'$args_message.";
+ "'$memberName'$args_message.";
}
}
break;
}
case _InvocationMirror._STATIC: {
- msg = "No static $type_str '$_memberName' declared in class "
+ msg = "No static $type_str '$memberName' declared in class "
"'$_receiver'.";
break;
}
case _InvocationMirror._CONSTRUCTOR: {
- msg = "No constructor '$_memberName' declared in class '$_receiver'.";
+ msg = "No constructor '$memberName' declared in class '$_receiver'.";
break;
}
case _InvocationMirror._TOP_LEVEL: {
- msg = "No top-level $type_str '$_memberName'$args_message declared.";
+ msg = "No top-level $type_str '$memberName'$args_message declared.";
break;
}
}
@@ -244,11 +257,11 @@ patch class NoSuchMethodError {
}
}
if (_namedArguments != null) {
- _namedArguments.forEach((String key, var value) {
+ _namedArguments.forEach((Symbol key, var value) {
if (i > 0) {
actual_buf.write(", ");
}
- actual_buf.write(key);
+ actual_buf.write(_collection_dev.Symbol.getName(key));
actual_buf.write(": ");
actual_buf.write(Error.safeToString(value));
i++;
@@ -264,9 +277,11 @@ patch class NoSuchMethodError {
} else {
receiver_str = Error.safeToString(_receiver);
}
+ var memberName =
+ (_memberName == null) ? "" :_collection_dev.Symbol.getName(_memberName);
if (!args_mismatch) {
msg_buf.write(
- "NoSuchMethodError : method not found: '$_memberName'\n"
+ "NoSuchMethodError : method not found: '$memberName'\n"
"Receiver: $receiver_str\n"
"Arguments: [$actual_buf]");
} else {
@@ -281,7 +296,7 @@ patch class NoSuchMethodError {
String formalParameters = formal_buf.toString();
msg_buf.write(
"NoSuchMethodError: incorrect number of arguments passed to "
- "method named '$_memberName'\n"
+ "method named '$memberName'\n"
"Receiver: $receiver_str\n"
"Tried calling: $_memberName($actualParameters)\n"
"Found: $_memberName($formalParameters)");
« no previous file with comments | « pkg/unittest/test/matchers_unminified_test.dart ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698