| 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 library services.src.refactoring.convert_method_to_getter; | 5 library services.src.refactoring.convert_method_to_getter; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/protocol_server.dart' hide Element; | 9 import 'package:analysis_server/src/protocol_server.dart' hide Element; |
| 10 import 'package:analysis_server/src/services/correction/source_range.dart'; | 10 import 'package:analysis_server/src/services/correction/source_range.dart'; |
| 11 import 'package:analysis_server/src/services/correction/status.dart'; | 11 import 'package:analysis_server/src/services/correction/status.dart'; |
| 12 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; | 12 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; |
| 13 import 'package:analysis_server/src/services/refactoring/refactoring_internal.da
rt'; | 13 import 'package:analysis_server/src/services/refactoring/refactoring_internal.da
rt'; |
| 14 import 'package:analysis_server/src/services/search/hierarchy.dart'; | 14 import 'package:analysis_server/src/services/search/hierarchy.dart'; |
| 15 import 'package:analysis_server/src/services/search/search_engine.dart'; | 15 import 'package:analysis_server/src/services/search/search_engine.dart'; |
| 16 import 'package:analyzer/dart/ast/ast.dart'; | 16 import 'package:analyzer/dart/ast/ast.dart'; |
| 17 import 'package:analyzer/dart/element/element.dart'; | 17 import 'package:analyzer/dart/element/element.dart'; |
| 18 import 'package:analyzer/src/dart/ast/utilities.dart'; | 18 import 'package:analyzer/src/dart/ast/utilities.dart'; |
| 19 import 'package:analyzer/src/generated/source.dart'; | 19 import 'package:analyzer/src/generated/source.dart'; |
| 20 | 20 |
| 21 /** | 21 /** |
| 22 * [ConvertMethodToGetterRefactoring] implementation. | 22 * [ConvertMethodToGetterRefactoring] implementation. |
| 23 */ | 23 */ |
| 24 class ConvertMethodToGetterRefactoringImpl extends RefactoringImpl | 24 class ConvertMethodToGetterRefactoringImpl extends RefactoringImpl |
| 25 implements ConvertMethodToGetterRefactoring { | 25 implements ConvertMethodToGetterRefactoring { |
| 26 final SearchEngine searchEngine; | 26 final SearchEngine searchEngine; |
| 27 final GetResolvedUnit getResolvedUnit; |
| 27 final ExecutableElement element; | 28 final ExecutableElement element; |
| 28 | 29 |
| 29 SourceChange change; | 30 SourceChange change; |
| 30 | 31 |
| 31 ConvertMethodToGetterRefactoringImpl(this.searchEngine, this.element); | 32 ConvertMethodToGetterRefactoringImpl( |
| 33 this.searchEngine, this.getResolvedUnit, this.element); |
| 32 | 34 |
| 33 @override | 35 @override |
| 34 String get refactoringName => 'Convert Method To Getter'; | 36 String get refactoringName => 'Convert Method To Getter'; |
| 35 | 37 |
| 36 @override | 38 @override |
| 37 Future<RefactoringStatus> checkFinalConditions() { | 39 Future<RefactoringStatus> checkFinalConditions() { |
| 38 RefactoringStatus result = new RefactoringStatus(); | 40 RefactoringStatus result = new RefactoringStatus(); |
| 39 return new Future.value(result); | 41 return new Future.value(result); |
| 40 } | 42 } |
| 41 | 43 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 SourceEdit edit = new SourceEdit(element.nameOffset, 0, 'get '); | 109 SourceEdit edit = new SourceEdit(element.nameOffset, 0, 'get '); |
| 108 doSourceChange_addElementEdit(change, element, edit); | 110 doSourceChange_addElementEdit(change, element, edit); |
| 109 } | 111 } |
| 110 // remove parameters | 112 // remove parameters |
| 111 { | 113 { |
| 112 SourceEdit edit = newSourceEdit_range(rangeNode(parameters), ''); | 114 SourceEdit edit = newSourceEdit_range(rangeNode(parameters), ''); |
| 113 doSourceChange_addElementEdit(change, element, edit); | 115 doSourceChange_addElementEdit(change, element, edit); |
| 114 } | 116 } |
| 115 } | 117 } |
| 116 | 118 |
| 117 Future _updateElementReferences(Element element) async { | 119 Future<Null> _updateElementReferences(Element element) async { |
| 118 List<SearchMatch> matches = await searchEngine.searchReferences(element); | 120 List<SearchMatch> matches = await searchEngine.searchReferences(element); |
| 119 List<SourceReference> references = getSourceReferences(matches); | 121 List<SourceReference> references = getSourceReferences(matches); |
| 120 for (SourceReference reference in references) { | 122 for (SourceReference reference in references) { |
| 121 Element refElement = reference.element; | 123 Element refElement = reference.element; |
| 122 SourceRange refRange = reference.range; | 124 SourceRange refRange = reference.range; |
| 123 // prepare invocation | 125 // prepare invocation |
| 124 MethodInvocation invocation; | 126 MethodInvocation invocation; |
| 125 { | 127 { |
| 126 CompilationUnit refUnit = refElement.unit; | 128 CompilationUnit refUnit = await getResolvedUnit(refElement); |
| 127 AstNode refNode = | 129 AstNode refNode = |
| 128 new NodeLocator(refRange.offset).searchWithin(refUnit); | 130 new NodeLocator(refRange.offset).searchWithin(refUnit); |
| 129 invocation = refNode.getAncestor((node) => node is MethodInvocation); | 131 invocation = refNode.getAncestor((node) => node is MethodInvocation); |
| 130 } | 132 } |
| 131 // we need invocation | 133 // we need invocation |
| 132 if (invocation != null) { | 134 if (invocation != null) { |
| 133 SourceRange range = rangeEndEnd(refRange, invocation); | 135 SourceRange range = rangeEndEnd(refRange, invocation); |
| 134 SourceEdit edit = newSourceEdit_range(range, ''); | 136 SourceEdit edit = newSourceEdit_range(range, ''); |
| 135 doSourceChange_addElementEdit(change, refElement, edit); | 137 doSourceChange_addElementEdit(change, refElement, edit); |
| 136 } | 138 } |
| 137 } | 139 } |
| 138 } | 140 } |
| 139 } | 141 } |
| OLD | NEW |