| Index: pkg/analysis_server/lib/src/services/refactoring/rename_local.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_local.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_local.dart
|
| index 5d8597f3f396ca68640d3ee2a1cd85caf38341dd..2b165a727fff22aa4869a7b9db734a5efb197c87 100644
|
| --- a/pkg/analysis_server/lib/src/services/refactoring/rename_local.dart
|
| +++ b/pkg/analysis_server/lib/src/services/refactoring/rename_local.dart
|
| @@ -17,6 +17,7 @@ import 'package:analysis_server/src/services/search/search_engine.dart';
|
| import 'package:analyzer/dart/ast/ast.dart';
|
| import 'package:analyzer/dart/ast/visitor.dart';
|
| import 'package:analyzer/dart/element/element.dart';
|
| +import 'package:analyzer/src/dart/element/ast_provider.dart';
|
| import 'package:analyzer/src/generated/source.dart';
|
| import 'package:analyzer/src/generated/utilities_dart.dart';
|
|
|
| @@ -24,10 +25,15 @@ import 'package:analyzer/src/generated/utilities_dart.dart';
|
| * A [Refactoring] for renaming [LocalElement]s.
|
| */
|
| class RenameLocalRefactoringImpl extends RenameRefactoringImpl {
|
| + final AstProvider astProvider;
|
| + final ResolvedUnitCache unitCache;
|
| +
|
| Set<LocalElement> elements = new Set<LocalElement>();
|
|
|
| - RenameLocalRefactoringImpl(SearchEngine searchEngine, LocalElement element)
|
| - : super(searchEngine, element);
|
| + RenameLocalRefactoringImpl(
|
| + SearchEngine searchEngine, this.astProvider, LocalElement element)
|
| + : unitCache = new ResolvedUnitCache(astProvider),
|
| + super(searchEngine, element);
|
|
|
| @override
|
| LocalElement get element => super.element as LocalElement;
|
| @@ -46,18 +52,14 @@ class RenameLocalRefactoringImpl extends RenameRefactoringImpl {
|
| @override
|
| Future<RefactoringStatus> checkFinalConditions() async {
|
| RefactoringStatus result = new RefactoringStatus();
|
| - // prepare all elements (usually one)
|
| await _prepareElements();
|
| - // checks the resolved CompilationUnit(s)
|
| for (LocalElement element in elements) {
|
| - Source unitSource = element.source;
|
| - List<Source> librarySources = context.getLibrariesContaining(unitSource);
|
| - for (Source librarySource in librarySources) {
|
| - _analyzePossibleConflicts_inLibrary(
|
| - result, unitSource, librarySource, element);
|
| + CompilationUnit unit = await unitCache.getUnit(element);
|
| + if (unit != null) {
|
| + SourceRange elementRange = element.visibleRange;
|
| + unit.accept(new _ConflictValidatorVisitor(this, result, elementRange));
|
| }
|
| }
|
| - // done
|
| return result;
|
| }
|
|
|
| @@ -82,21 +84,6 @@ class RenameLocalRefactoringImpl extends RenameRefactoringImpl {
|
| }
|
| }
|
|
|
| - void _analyzePossibleConflicts_inLibrary(RefactoringStatus result,
|
| - Source unitSource, Source librarySource, LocalElement element) {
|
| - // prepare resolved unit
|
| - CompilationUnit unit = null;
|
| - try {
|
| - unit = context.resolveCompilationUnit2(unitSource, librarySource);
|
| - } catch (e) {}
|
| - if (unit == null) {
|
| - return;
|
| - }
|
| - // check for conflicts in the unit
|
| - SourceRange elementRange = element.visibleRange;
|
| - unit.accept(new _ConflictValidatorVisitor(this, result, elementRange));
|
| - }
|
| -
|
| /**
|
| * Fills [elements] with [Element]s to rename.
|
| */
|
|
|