@@ -7,13 +7,8 @@ import 'dart:async';
77import 'package:analysis_server/protocol/protocol_generated.dart' ;
88import 'package:analyzer/dart/analysis/results.dart' ;
99import 'package:analyzer/dart/ast/ast.dart' ;
10- import 'package:analyzer/dart/ast/ast_factory.dart' ;
11- import 'package:analyzer/dart/ast/token.dart' ;
1210import 'package:analyzer/dart/element/element.dart' ;
1311import 'package:analyzer/file_system/file_system.dart' ;
14- import 'package:analyzer/src/dart/ast/ast_factory.dart' ;
15- import 'package:analyzer/src/dart/ast/token.dart' ;
16- import 'package:analyzer/src/dart/resolver/scope.dart' ;
1712import 'package:analyzer/src/generated/source.dart' ;
1813import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Element;
1914import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart' ;
@@ -243,24 +238,12 @@ class ImportElementsComputer {
243238 /// name as in the original source.
244239 List <ImportedElements > _filterImportedElements (
245240 List <ImportedElements > originalList) {
246- var libraryElement = libraryResult.libraryElement;
247- var libraryScope = libraryElement.scope;
248- AstFactory factory = AstFactoryImpl ();
249241 var filteredList = < ImportedElements > [];
250242 for (var elements in originalList) {
251243 var originalElements = elements.elements;
252244 var filteredElements = originalElements.toList ();
253245 for (var name in originalElements) {
254- Identifier identifier = factory
255- .simpleIdentifier (StringToken (TokenType .IDENTIFIER , name, - 1 ));
256- if (elements.prefix.isNotEmpty) {
257- var prefix = factory .simpleIdentifier (
258- StringToken (TokenType .IDENTIFIER , elements.prefix, - 1 ));
259- Token period = SimpleToken (TokenType .PERIOD , - 1 );
260- identifier = factory .prefixedIdentifier (prefix, period, identifier);
261- }
262- var element = libraryScope.lookupIdentifier (identifier);
263- if (element != null ) {
246+ if (_hasElement (elements.prefix, name)) {
264247 filteredElements.remove (name);
265248 }
266249 }
@@ -340,6 +323,22 @@ class ImportElementsComputer {
340323 return context.split (relativeFile).join ('/' );
341324 }
342325
326+ bool _hasElement (String prefix, String name) {
327+ var scope = libraryResult.libraryElement.scope;
328+
329+ if (prefix.isNotEmpty) {
330+ var prefixElement = scope.lookup2 (prefix).getter;
331+ if (prefixElement is PrefixElement ) {
332+ scope = prefixElement.scope;
333+ } else {
334+ return false ;
335+ }
336+ }
337+
338+ var lookupResult = scope.lookup2 (name);
339+ return lookupResult.getter != null || lookupResult.setter != null ;
340+ }
341+
343342 /// Return `true` if the given [import] matches the given specification of
344343 /// [importedElements] . They will match if they import the same library using
345344 /// the same prefix.
0 commit comments