@@ -3750,7 +3750,7 @@ class ImportElementImpl extends UriReferencedElementImpl
37503750
37513751 PrefixElement get prefix {
37523752 if (_unlinkedImport != null ) {
3753- if (_unlinkedImport.prefixReference != 0 ) {
3753+ if (_unlinkedImport.prefixReference != 0 && _prefix == null ) {
37543754 LibraryElementImpl library = enclosingElement as LibraryElementImpl ;
37553755 _prefix = new PrefixElementImpl .forSerialized (_unlinkedImport, library);
37563756 }
@@ -3980,6 +3980,11 @@ class LibraryElementImpl extends ElementImpl implements LibraryElement {
39803980 */
39813981 int _resolutionCapabilities = 0 ;
39823982
3983+ /**
3984+ * The cached list of prefixes.
3985+ */
3986+ List <PrefixElement > _prefixes;
3987+
39833988 /**
39843989 * Initialize a newly created library element in the given [context] to have
39853990 * the given [name] and [offset] .
@@ -4168,6 +4173,7 @@ class LibraryElementImpl extends ElementImpl implements LibraryElement {
41684173 }
41694174 }
41704175 this ._imports = imports;
4176+ this ._prefixes = null ;
41714177 }
41724178
41734179 @override
@@ -4340,14 +4346,17 @@ class LibraryElementImpl extends ElementImpl implements LibraryElement {
43404346
43414347 @override
43424348 List <PrefixElement > get prefixes {
4343- HashSet <PrefixElement > prefixes = new HashSet <PrefixElement >();
4344- for (ImportElement element in _imports) {
4345- PrefixElement prefix = element.prefix;
4346- if (prefix != null ) {
4347- prefixes.add (prefix);
4349+ if (_prefixes == null ) {
4350+ HashSet <PrefixElement > prefixes = new HashSet <PrefixElement >();
4351+ for (ImportElement element in _imports) {
4352+ PrefixElement prefix = element.prefix;
4353+ if (prefix != null ) {
4354+ prefixes.add (prefix);
4355+ }
43484356 }
4357+ _prefixes = prefixes.toList ();
43494358 }
4350- return new List . from (prefixes) ;
4359+ return _prefixes ;
43514360 }
43524361
43534362 @override
0 commit comments