OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:analysis_server/src/protocol_server.dart' hide Element; | 7 import 'package:analysis_server/src/protocol_server.dart' hide Element; |
8 import 'package:analysis_server/src/services/correction/status.dart'; | 8 import 'package:analysis_server/src/services/correction/status.dart'; |
9 import 'package:analysis_server/src/services/correction/strings.dart'; | 9 import 'package:analysis_server/src/services/correction/strings.dart'; |
10 import 'package:analysis_server/src/services/correction/util.dart'; | 10 import 'package:analysis_server/src/services/correction/util.dart'; |
11 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; | 11 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; |
12 import 'package:analysis_server/src/services/refactoring/refactoring_internal.da
rt'; | 12 import 'package:analysis_server/src/services/refactoring/refactoring_internal.da
rt'; |
13 import 'package:analysis_server/src/services/search/element_visitors.dart'; | |
14 import 'package:analysis_server/src/services/search/hierarchy.dart'; | 13 import 'package:analysis_server/src/services/search/hierarchy.dart'; |
15 import 'package:analysis_server/src/services/search/search_engine.dart'; | 14 import 'package:analysis_server/src/services/search/search_engine.dart'; |
16 import 'package:analyzer/dart/ast/ast.dart'; | 15 import 'package:analyzer/dart/ast/ast.dart'; |
17 import 'package:analyzer/dart/ast/visitor.dart'; | 16 import 'package:analyzer/dart/ast/visitor.dart'; |
18 import 'package:analyzer/dart/element/element.dart'; | 17 import 'package:analyzer/dart/element/element.dart'; |
19 import 'package:analyzer/src/dart/ast/utilities.dart'; | 18 import 'package:analyzer/src/dart/ast/utilities.dart'; |
20 import 'package:analyzer/src/dart/element/ast_provider.dart'; | 19 import 'package:analyzer/src/dart/element/ast_provider.dart'; |
21 import 'package:analyzer/src/generated/source.dart'; | 20 import 'package:analyzer/src/generated/source.dart'; |
22 import 'package:analyzer/src/generated/utilities_dart.dart'; | 21 import 'package:analyzer/src/generated/utilities_dart.dart'; |
23 import 'package:analyzer_plugin/utilities/range_factory.dart'; | 22 import 'package:analyzer_plugin/utilities/range_factory.dart'; |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 | 147 |
149 /** | 148 /** |
150 * Returns the names which will shadow or will be shadowed by any declaration | 149 * Returns the names which will shadow or will be shadowed by any declaration |
151 * at [node]. | 150 * at [node]. |
152 */ | 151 */ |
153 Set<String> _getNamesConflictingAt(AstNode node) { | 152 Set<String> _getNamesConflictingAt(AstNode node) { |
154 Set<String> result = new Set<String>(); | 153 Set<String> result = new Set<String>(); |
155 // local variables and functions | 154 // local variables and functions |
156 { | 155 { |
157 SourceRange localsRange = _getLocalsConflictingRange(node); | 156 SourceRange localsRange = _getLocalsConflictingRange(node); |
158 ExecutableElement enclosingExecutable = getEnclosingExecutableElement(node); | 157 AstNode enclosingExecutable = getEnclosingExecutableNode(node); |
159 if (enclosingExecutable != null) { | 158 List<LocalElement> elements = getDefinedLocalElements(enclosingExecutable); |
160 visitChildren(enclosingExecutable, (element) { | 159 for (LocalElement element in elements) { |
161 if (element is LocalElement) { | 160 SourceRange elementRange = element.visibleRange; |
162 SourceRange elementRange = element.visibleRange; | 161 if (elementRange != null && elementRange.intersects(localsRange)) { |
163 if (elementRange != null && elementRange.intersects(localsRange)) { | 162 result.add(element.displayName); |
164 result.add(element.displayName); | 163 } |
165 } | |
166 } | |
167 return true; | |
168 }); | |
169 } | 164 } |
170 } | 165 } |
171 // fields | 166 // fields |
172 { | 167 { |
173 ClassElement enclosingClassElement = getEnclosingClassElement(node); | 168 ClassElement enclosingClassElement = getEnclosingClassElement(node); |
174 if (enclosingClassElement != null) { | 169 if (enclosingClassElement != null) { |
175 Set<ClassElement> elements = new Set<ClassElement>(); | 170 Set<ClassElement> elements = new Set<ClassElement>(); |
176 elements.add(enclosingClassElement); | 171 elements.add(enclosingClassElement); |
177 elements.addAll(getSuperClasses(enclosingClassElement)); | 172 elements.addAll(getSuperClasses(enclosingClassElement)); |
178 for (ClassElement classElement in elements) { | 173 for (ClassElement classElement in elements) { |
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
876 } | 871 } |
877 | 872 |
878 void _addVariable(SimpleIdentifier node) { | 873 void _addVariable(SimpleIdentifier node) { |
879 VariableElement variableElement = getLocalVariableElement(node); | 874 VariableElement variableElement = getLocalVariableElement(node); |
880 if (variableElement != null) { | 875 if (variableElement != null) { |
881 SourceRange nodeRange = range.node(node); | 876 SourceRange nodeRange = range.node(node); |
882 result.addVariable(variableElement, nodeRange); | 877 result.addVariable(variableElement, nodeRange); |
883 } | 878 } |
884 } | 879 } |
885 } | 880 } |
OLD | NEW |