| 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 =
|
| + setters.putIfAbsent(type.element, () => new Set<SourceString>());
|
| + setters.add(member);
|
| + }
|
| +
|
| + bool isSetterUsed(Type type, SourceString member) {
|
| + Set<SourceString> setters = setters[type.element];
|
| + 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();
|
| + }
|
| }
|
|
|