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

Unified Diff: pkg/analysis_server/lib/src/services/correction/sort_members.dart

Issue 626883003: Fix for the prefix/suffix diff computing. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/lib/src/services/correction/sort_members.dart
diff --git a/pkg/analysis_server/lib/src/services/correction/sort_members.dart b/pkg/analysis_server/lib/src/services/correction/sort_members.dart
index c269235cc419fe0456d37c41fa5fde20e2d6dbc6..c4166979e90da7b4760a644300ffac8547ddc5b1 100644
--- a/pkg/analysis_server/lib/src/services/correction/sort_members.dart
+++ b/pkg/analysis_server/lib/src/services/correction/sort_members.dart
@@ -5,7 +5,7 @@
library services.src.refactoring.sort_members;
import 'package:analysis_server/src/protocol.dart' hide Element;
-import 'package:analysis_server/src/services/correction/diff.dart';
+import 'package:analysis_server/src/services/correction/strings.dart';
import 'package:analyzer/src/generated/ast.dart';
@@ -66,13 +66,16 @@ class MemberSorter {
// prepare edits
List<SourceEdit> edits = <SourceEdit>[];
if (code != initialCode) {
- // TODO(scheglov) use better diff algorithm
- int commonPrefix = findCommonPrefix(initialCode, code);
- int commonSuffix = findCommonSuffix(initialCode, code);
+ int prefixLength = findCommonPrefix(initialCode, code);
+ int suffixLength = findCommonSuffix(initialCode, code);
+ String prefix = code.substring(0, prefixLength);
+ String suffix = code.substring(code.length - suffixLength, code.length);
+ int commonLength = findCommonOverlap(prefix, suffix);
+ suffixLength -= commonLength;
SourceEdit edit = new SourceEdit(
- commonPrefix,
- initialCode.length - commonSuffix - commonPrefix,
- code.substring(commonPrefix, code.length - commonSuffix));
+ prefixLength,
+ initialCode.length - suffixLength - prefixLength,
+ code.substring(prefixLength, code.length - suffixLength));
edits.add(edit);
}
return edits;

Powered by Google App Engine
This is Rietveld 408576698