Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(198)

Side by Side Diff: pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart

Issue 2541873002: Stop using Element.unit directly. (Closed)
Patch Set: tweak Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698