Index: pkg/analyzer/lib/src/generated/element_resolver.dart |
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart |
index e10f99b70b0a8ff1d4a7c9061c811dc863d33a05..04908758af4a90f6411e7cbb279efac5688eb04c 100644 |
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart |
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart |
@@ -1031,6 +1031,7 @@ class ElementResolver extends SimpleAstVisitor<Object> { |
} |
} |
node.staticElement = element; |
+ _markElementUsed(element); |
if (node.inSetterContext() && node.inGetterContext() && enclosingClass != null) { |
InterfaceType enclosingType = enclosingClass.type; |
AuxiliaryElements auxiliaryElements = new AuxiliaryElements(_lookUpGetter(null, enclosingType, node.name), null); |
@@ -1902,6 +1903,20 @@ class ElementResolver extends SimpleAstVisitor<Object> { |
} |
/** |
+ * Marks [element] as used in its defining library. |
+ */ |
+ void _markElementUsed(Element element) { |
Brian Wilkerson
2014/11/10 23:34:47
This seems overly complex. Would it be sufficient
scheglov
2014/11/11 02:57:06
Done.
|
+ if (identical(element, _resolver.enclosingClass)) { |
+ return; |
+ } |
+ if (element is ElementImpl && |
+ element.enclosingElement is CompilationUnitElement && |
+ identical(element.library, _definingLibrary)) { |
+ element.markUsed(); |
+ } |
+ } |
+ |
+ /** |
* Given some class element, this method uses [subtypeManager] to find the set of all |
* subtypes; the subtypes are then searched for a member (method, getter, or setter), that matches |
* a passed |