| 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 b22e69e3db1c6ae22b77c48f9d354026910effe3..c269235cc419fe0456d37c41fa5fde20e2d6dbc6 100644
|
| --- a/pkg/analysis_server/lib/src/services/correction/sort_members.dart
|
| +++ b/pkg/analysis_server/lib/src/services/correction/sort_members.dart
|
| @@ -5,6 +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:analyzer/src/generated/ast.dart';
|
|
|
|
|
| @@ -65,8 +66,13 @@ class MemberSorter {
|
| // prepare edits
|
| List<SourceEdit> edits = <SourceEdit>[];
|
| if (code != initialCode) {
|
| - // TODO(scheglov) compute diff instead of full replacement
|
| - SourceEdit edit = new SourceEdit(0, initialCode.length, code);
|
| + // TODO(scheglov) use better diff algorithm
|
| + int commonPrefix = findCommonPrefix(initialCode, code);
|
| + int commonSuffix = findCommonSuffix(initialCode, code);
|
| + SourceEdit edit = new SourceEdit(
|
| + commonPrefix,
|
| + initialCode.length - commonSuffix - commonPrefix,
|
| + code.substring(commonPrefix, code.length - commonSuffix));
|
| edits.add(edit);
|
| }
|
| return edits;
|
|
|