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

Unified Diff: frog/var_member.dart

Issue 8912017: Fix missing trampolines for named arguments. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: remove comment Created 9 years 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: frog/var_member.dart
diff --git a/frog/var_member.dart b/frog/var_member.dart
index 31d053ef03f6029c5f5dbf98e5a9f7255dc2ff02..7307e95e091f487475e6f9ed68f6856742d62089 100644
--- a/frog/var_member.dart
+++ b/frog/var_member.dart
@@ -180,7 +180,7 @@ class VarMethodStub extends VarMember {
return false;
}
}
- return method.namesInOrder(args);
+ return method.namesInHomePositions(args);
} else {
return false;
}
@@ -226,7 +226,6 @@ class VarMethodSet extends VarMember {
var result = member.invoke(context, node, target, args, isDynamic:true);
var stub = new VarMethodStub(name, member, args, 'return ' + result.code);
type.varStubs[stub.name] = stub;
-
if (type.isObject) hasObjectType = true;
}
@@ -245,9 +244,17 @@ class VarMethodSet extends VarMember {
}
String _getCallStubName(String name, Arguments args) {
+ // TODO: This code needs global knowledge to ensure the stub name does not
+ // collide with any other name.
Jennifer Messerly 2011/12/14 19:15:33 Some examples would be helpful--I'm not sure what
sra1 2011/12/14 22:04:32 Done.
final nameBuilder = new StringBuffer('${name}\$${args.bareCount}');
for (int i = args.bareCount; i < args.length; i++) {
- nameBuilder.add('\$').add(args.getName(i));
+ var name = args.getName(i);
+ nameBuilder.add('\$');
+ if (name.contains('\$')) {
+ // Disambiguate "a:b:" from "a$b:"
+ nameBuilder.add('${name.length}');
Jennifer Messerly 2011/12/14 19:15:33 do you need length here, or would it be enough to
sra1 2011/12/14 22:04:32 I've kept the length. If you put '_' in there, ho
+ }
+ nameBuilder.add(name);
}
return nameBuilder.toString();
}
« frog/member.dart ('K') | « frog/minfrog ('k') | tests/language/language.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698