| Index: pkg/analyzer/lib/src/dart/element/element.dart
|
| diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
|
| index 721918f655b3c41c20556433c6c7fbce2d5c2916..2a47fda0350bcd44a61f0190d82b9907ddbe38ba 100644
|
| --- a/pkg/analyzer/lib/src/dart/element/element.dart
|
| +++ b/pkg/analyzer/lib/src/dart/element/element.dart
|
| @@ -3750,7 +3750,7 @@ class ImportElementImpl extends UriReferencedElementImpl
|
|
|
| PrefixElement get prefix {
|
| if (_unlinkedImport != null) {
|
| - if (_unlinkedImport.prefixReference != 0) {
|
| + if (_unlinkedImport.prefixReference != 0 && _prefix == null) {
|
| LibraryElementImpl library = enclosingElement as LibraryElementImpl;
|
| _prefix = new PrefixElementImpl.forSerialized(_unlinkedImport, library);
|
| }
|
| @@ -3976,6 +3976,11 @@ class LibraryElementImpl extends ElementImpl implements LibraryElement {
|
| Namespace _publicNamespace;
|
|
|
| /**
|
| + * The cached list of prefixes.
|
| + */
|
| + List<PrefixElement> _prefixes;
|
| +
|
| + /**
|
| * Initialize a newly created library element in the given [context] to have
|
| * the given [name] and [offset].
|
| */
|
| @@ -4331,14 +4336,17 @@ class LibraryElementImpl extends ElementImpl implements LibraryElement {
|
|
|
| @override
|
| List<PrefixElement> get prefixes {
|
| - HashSet<PrefixElement> prefixes = new HashSet<PrefixElement>();
|
| - for (ImportElement element in _imports) {
|
| - PrefixElement prefix = element.prefix;
|
| - if (prefix != null) {
|
| - prefixes.add(prefix);
|
| + if (_prefixes == null) {
|
| + HashSet<PrefixElement> prefixes = new HashSet<PrefixElement>();
|
| + for (ImportElement element in _imports) {
|
| + PrefixElement prefix = element.prefix;
|
| + if (prefix != null) {
|
| + prefixes.add(prefix);
|
| + }
|
| }
|
| + _prefixes = prefixes.toList();
|
| }
|
| - return new List.from(prefixes);
|
| + return _prefixes;
|
| }
|
|
|
| @override
|
|
|