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

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

Issue 592123002: Move SourceReference, extract duplicate code. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 3 months 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 | Annotate | Revision Log
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.rename_constructor; 5 library services.src.refactoring.rename_constructor;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/protocol.dart' hide Element; 9 import 'package:analysis_server/src/protocol.dart' hide Element;
10 import 'package:analysis_server/src/services/correction/status.dart'; 10 import 'package:analysis_server/src/services/correction/status.dart';
11 import 'package:analysis_server/src/services/correction/util.dart';
12 import 'package:analysis_server/src/services/refactoring/naming_conventions.dart ';
11 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; 13 import 'package:analysis_server/src/services/refactoring/refactoring.dart';
14 import 'package:analysis_server/src/services/refactoring/refactoring_internal.da rt';
15 import 'package:analysis_server/src/services/refactoring/rename.dart';
12 import 'package:analysis_server/src/services/search/hierarchy.dart'; 16 import 'package:analysis_server/src/services/search/hierarchy.dart';
13 import 'package:analysis_server/src/services/search/search_engine.dart'; 17 import 'package:analysis_server/src/services/search/search_engine.dart';
14 import 'package:analysis_server/src/services/correction/util.dart';
15 import 'package:analysis_server/src/services/refactoring/naming_conventions.dart ';
16 import 'package:analysis_server/src/services/refactoring/rename.dart';
17 import 'package:analyzer/src/generated/element.dart'; 18 import 'package:analyzer/src/generated/element.dart';
18 import 'package:analyzer/src/generated/java_core.dart'; 19 import 'package:analyzer/src/generated/java_core.dart';
19 20
20 21
21 /** 22 /**
22 * A [Refactoring] for renaming [ConstructorElement]s. 23 * A [Refactoring] for renaming [ConstructorElement]s.
23 */ 24 */
24 class RenameConstructorRefactoringImpl extends RenameRefactoringImpl { 25 class RenameConstructorRefactoringImpl extends RenameRefactoringImpl {
25 RenameConstructorRefactoringImpl(SearchEngine searchEngine, 26 RenameConstructorRefactoringImpl(SearchEngine searchEngine,
26 ConstructorElement element) 27 ConstructorElement element)
(...skipping 15 matching lines...) Expand all
42 } 43 }
43 44
44 @override 45 @override
45 RefactoringStatus checkNewName() { 46 RefactoringStatus checkNewName() {
46 RefactoringStatus result = super.checkNewName(); 47 RefactoringStatus result = super.checkNewName();
47 result.addStatus(validateConstructorName(newName)); 48 result.addStatus(validateConstructorName(newName));
48 return result; 49 return result;
49 } 50 }
50 51
51 @override 52 @override
52 Future<SourceChange> createChange() { 53 Future fillChange() {
53 SourceChange change = new SourceChange(refactoringName);
54 String replacement = newName.isEmpty ? '' : '.${newName}'; 54 String replacement = newName.isEmpty ? '' : '.${newName}';
55 // update references 55 // update references
56 return searchEngine.searchReferences(element).then((refMatches) { 56 return searchEngine.searchReferences(element).then((matches) {
57 List<SourceReference> references = getSourceReferences(refMatches); 57 List<SourceReference> references = getSourceReferences(matches);
58 if (!element.isSynthetic) { 58 if (!element.isSynthetic) {
59 for (SourceReference reference in references) { 59 for (SourceReference reference in references) {
60 SourceEdit edit = createReferenceEdit(reference, replacement); 60 reference.addEdit(change, replacement);
61 change.addElementEdit(reference.element, edit);
62 } 61 }
63 } 62 }
64 return change;
65 }); 63 });
66 } 64 }
67 65
68 void _analyzePossibleConflicts(RefactoringStatus result) { 66 void _analyzePossibleConflicts(RefactoringStatus result) {
69 // check if there are members with "newName" in the same ClassElement 67 // check if there are members with "newName" in the same ClassElement
70 ClassElement parentClass = element.enclosingElement; 68 ClassElement parentClass = element.enclosingElement;
71 for (Element newNameMember in getChildren(parentClass, newName)) { 69 for (Element newNameMember in getChildren(parentClass, newName)) {
72 String message = 70 String message =
73 format( 71 format(
74 "Class '{0}' already declares {1} with name '{2}'.", 72 "Class '{0}' already declares {1} with name '{2}'.",
75 parentClass.displayName, 73 parentClass.displayName,
76 getElementKindName(newNameMember), 74 getElementKindName(newNameMember),
77 newName); 75 newName);
78 result.addError( 76 result.addError(
79 message, 77 message,
80 new Location.fromElement(newNameMember)); 78 new Location.fromElement(newNameMember));
81 } 79 }
82 } 80 }
83 } 81 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698