Chromium Code Reviews| 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(); |
| } |