| 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.rename_import; | 5 library services.src.refactoring.rename_import; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/protocol_server.dart'; | 9 import 'package:analysis_server/src/protocol_server.dart'; |
| 10 import 'package:analysis_server/src/services/correction/source_range.dart'; | 10 import 'package:analysis_server/src/services/correction/source_range.dart'; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 } | 40 } |
| 41 | 41 |
| 42 @override | 42 @override |
| 43 RefactoringStatus checkNewName() { | 43 RefactoringStatus checkNewName() { |
| 44 RefactoringStatus result = super.checkNewName(); | 44 RefactoringStatus result = super.checkNewName(); |
| 45 result.addStatus(validateImportPrefixName(newName)); | 45 result.addStatus(validateImportPrefixName(newName)); |
| 46 return result; | 46 return result; |
| 47 } | 47 } |
| 48 | 48 |
| 49 @override | 49 @override |
| 50 Future fillChange() { | 50 Future fillChange() async { |
| 51 // update declaration | 51 // update declaration |
| 52 { | 52 { |
| 53 PrefixElement prefix = element.prefix; | 53 PrefixElement prefix = element.prefix; |
| 54 SourceEdit edit = null; | 54 SourceEdit edit = null; |
| 55 if (newName.isEmpty) { | 55 if (newName.isEmpty) { |
| 56 int uriEnd = element.uriEnd; | 56 int uriEnd = element.uriEnd; |
| 57 int prefixEnd = element.prefixOffset + prefix.displayName.length; | 57 int prefixEnd = element.prefixOffset + prefix.displayName.length; |
| 58 SourceRange range = rangeStartEnd(uriEnd, prefixEnd); | 58 SourceRange range = rangeStartEnd(uriEnd, prefixEnd); |
| 59 edit = newSourceEdit_range(range, ""); | 59 edit = newSourceEdit_range(range, ""); |
| 60 } else { | 60 } else { |
| 61 if (prefix == null) { | 61 if (prefix == null) { |
| 62 SourceRange range = rangeStartLength(element.uriEnd, 0); | 62 SourceRange range = rangeStartLength(element.uriEnd, 0); |
| 63 edit = newSourceEdit_range(range, " as ${newName}"); | 63 edit = newSourceEdit_range(range, " as ${newName}"); |
| 64 } else { | 64 } else { |
| 65 int offset = element.prefixOffset; | 65 int offset = element.prefixOffset; |
| 66 int length = prefix.displayName.length; | 66 int length = prefix.displayName.length; |
| 67 SourceRange range = rangeStartLength(offset, length); | 67 SourceRange range = rangeStartLength(offset, length); |
| 68 edit = newSourceEdit_range(range, newName); | 68 edit = newSourceEdit_range(range, newName); |
| 69 } | 69 } |
| 70 } | 70 } |
| 71 if (edit != null) { | 71 if (edit != null) { |
| 72 doSourceChange_addElementEdit(change, element, edit); | 72 doSourceChange_addElementEdit(change, element, edit); |
| 73 } | 73 } |
| 74 } | 74 } |
| 75 // update references | 75 // update references |
| 76 return searchEngine.searchReferences(element).then((refMatches) { | 76 List<SearchMatch> matches = await searchEngine.searchReferences(element); |
| 77 List<SourceReference> references = getSourceReferences(refMatches); | 77 List<SourceReference> references = getSourceReferences(matches); |
| 78 for (SourceReference reference in references) { | 78 for (SourceReference reference in references) { |
| 79 if (newName.isEmpty) { | 79 if (newName.isEmpty) { |
| 80 reference.addEdit(change, newName); | 80 reference.addEdit(change, newName); |
| 81 } else { | 81 } else { |
| 82 reference.addEdit(change, "${newName}."); | 82 reference.addEdit(change, "${newName}."); |
| 83 } | |
| 84 } | 83 } |
| 85 }); | 84 } |
| 86 } | 85 } |
| 87 } | 86 } |
| OLD | NEW |