Chromium Code Reviews| Index: lib/compiler/implementation/world.dart |
| diff --git a/lib/compiler/implementation/world.dart b/lib/compiler/implementation/world.dart |
| index f616c5aa4c892251aa2f5984e0c03e6980e8324a..b6b37e7c5315ebdbbcb78f585d7d56ad51ac9356 100644 |
| --- a/lib/compiler/implementation/world.dart |
| +++ b/lib/compiler/implementation/world.dart |
| @@ -4,8 +4,10 @@ |
| class World { |
| final Map<ClassElement, Set<ClassElement>> subtypes; |
| + final Map<ClassElement, Set<SourceString>> setters; |
| - World() : subtypes = new Map<ClassElement, Set<ClassElement>>(); |
| + World() : subtypes = new Map<ClassElement, Set<ClassElement>>(), |
| + setters = new Map<ClassElement, Set<SourceString>>(); |
| void populate(Compiler compiler, Collection<LibraryElement> libraries) { |
| void addSubtypes(ClassElement cls) { |
| @@ -69,6 +71,18 @@ class World { |
| }); |
| return (fieldCount == 1 && nonFieldCount == 0) ? field : null; |
| } |
| + |
| + void setterUsed(Type type, SourceString member) { |
| + Set<SourceString> setters = |
|
Mads Ager (google)
2012/06/07 07:56:21
I find the name clash cofusing here. Call this set
Søren Gjesse
2012/06/07 08:06:12
Done.
|
| + setters.putIfAbsent(type.element, () => new Set<SourceString>()); |
| + setters.add(member); |
| + } |
| + |
| + bool isSetterUsed(Type type, SourceString member) { |
| + Set<SourceString> setters = setters[type.element]; |
|
Mads Ager (google)
2012/06/07 07:56:21
Ditto.
Søren Gjesse
2012/06/07 08:06:12
Done.
|
| + if (setters === null) return false; |
| + return setters.contains(member); |
| + } |
| } |
| /** |
| @@ -85,4 +99,12 @@ class MemberSet { |
| } |
| bool isEmpty() => elements.isEmpty(); |
| + |
| + String toString() { |
| + StringBuffer sb = new StringBuffer(); |
| + sb.add("MemberSet: {"); |
| + elements.every((Element element) => sb.add("${element.name}, ")); |
| + sb.add("}"); |
| + return sb.toString(); |
| + } |
| } |