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'; | |
11 import 'package:analysis_server/src/services/correction/status.dart'; | 10 import 'package:analysis_server/src/services/correction/status.dart'; |
12 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; | 11 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; |
13 import 'package:analysis_server/src/services/refactoring/refactoring_internal.da
rt'; | 12 import 'package:analysis_server/src/services/refactoring/refactoring_internal.da
rt'; |
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/element/element.dart'; | 16 import 'package:analyzer/dart/element/element.dart'; |
18 import 'package:analyzer/src/dart/ast/utilities.dart'; | 17 import 'package:analyzer/src/dart/ast/utilities.dart'; |
19 import 'package:analyzer/src/dart/element/ast_provider.dart'; | 18 import 'package:analyzer/src/dart/element/ast_provider.dart'; |
20 import 'package:analyzer/src/generated/source.dart'; | 19 import 'package:analyzer/src/generated/source.dart'; |
| 20 import 'package:analyzer_plugin/utilities/range_factory.dart'; |
21 | 21 |
22 /** | 22 /** |
23 * [ConvertMethodToGetterRefactoring] implementation. | 23 * [ConvertMethodToGetterRefactoring] implementation. |
24 */ | 24 */ |
25 class ConvertMethodToGetterRefactoringImpl extends RefactoringImpl | 25 class ConvertMethodToGetterRefactoringImpl extends RefactoringImpl |
26 implements ConvertMethodToGetterRefactoring { | 26 implements ConvertMethodToGetterRefactoring { |
27 final SearchEngine searchEngine; | 27 final SearchEngine searchEngine; |
28 final AstProvider astProvider; | 28 final AstProvider astProvider; |
29 final ExecutableElement element; | 29 final ExecutableElement element; |
30 | 30 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 return; | 107 return; |
108 } | 108 } |
109 } | 109 } |
110 // insert "get " | 110 // insert "get " |
111 { | 111 { |
112 SourceEdit edit = new SourceEdit(element.nameOffset, 0, 'get '); | 112 SourceEdit edit = new SourceEdit(element.nameOffset, 0, 'get '); |
113 doSourceChange_addElementEdit(change, element, edit); | 113 doSourceChange_addElementEdit(change, element, edit); |
114 } | 114 } |
115 // remove parameters | 115 // remove parameters |
116 { | 116 { |
117 SourceEdit edit = newSourceEdit_range(rangeNode(parameters), ''); | 117 SourceEdit edit = newSourceEdit_range(range.node(parameters), ''); |
118 doSourceChange_addElementEdit(change, element, edit); | 118 doSourceChange_addElementEdit(change, element, edit); |
119 } | 119 } |
120 } | 120 } |
121 | 121 |
122 Future<Null> _updateElementReferences(Element element) async { | 122 Future<Null> _updateElementReferences(Element element) async { |
123 List<SearchMatch> matches = await searchEngine.searchReferences(element); | 123 List<SearchMatch> matches = await searchEngine.searchReferences(element); |
124 List<SourceReference> references = getSourceReferences(matches); | 124 List<SourceReference> references = getSourceReferences(matches); |
125 for (SourceReference reference in references) { | 125 for (SourceReference reference in references) { |
126 Element refElement = reference.element; | 126 Element refElement = reference.element; |
127 SourceRange refRange = reference.range; | 127 SourceRange refRange = reference.range; |
128 // prepare invocation | 128 // prepare invocation |
129 MethodInvocation invocation; | 129 MethodInvocation invocation; |
130 { | 130 { |
131 CompilationUnit refUnit = | 131 CompilationUnit refUnit = |
132 await astProvider.getParsedUnitForElement(refElement); | 132 await astProvider.getParsedUnitForElement(refElement); |
133 AstNode refNode = | 133 AstNode refNode = |
134 new NodeLocator(refRange.offset).searchWithin(refUnit); | 134 new NodeLocator(refRange.offset).searchWithin(refUnit); |
135 invocation = refNode.getAncestor((node) => node is MethodInvocation); | 135 invocation = refNode.getAncestor((node) => node is MethodInvocation); |
136 } | 136 } |
137 // we need invocation | 137 // we need invocation |
138 if (invocation != null) { | 138 if (invocation != null) { |
139 SourceRange range = rangeEndEnd(refRange, invocation); | 139 SourceEdit edit = newSourceEdit_range( |
140 SourceEdit edit = newSourceEdit_range(range, ''); | 140 range.offsetEndIndex(refRange.end, invocation.end), ''); |
141 doSourceChange_addElementEdit(change, refElement, edit); | 141 doSourceChange_addElementEdit(change, refElement, edit); |
142 } | 142 } |
143 } | 143 } |
144 } | 144 } |
145 } | 145 } |
OLD | NEW |