| Index: pkg/analysis_services/lib/correction/change.dart
|
| diff --git a/pkg/analysis_services/lib/correction/change.dart b/pkg/analysis_services/lib/correction/change.dart
|
| deleted file mode 100644
|
| index 415165c69855849e5d31b3fde02a3f47c03b5a3a..0000000000000000000000000000000000000000
|
| --- a/pkg/analysis_services/lib/correction/change.dart
|
| +++ /dev/null
|
| @@ -1,361 +0,0 @@
|
| -// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -library services.correction.change;
|
| -
|
| -import 'package:analysis_services/constants.dart';
|
| -import 'package:analysis_services/json.dart';
|
| -import 'package:analyzer/src/generated/source.dart';
|
| -
|
| -
|
| -/**
|
| - * A description of a single change to one or more files.
|
| - */
|
| -class Change implements HasToJson {
|
| - /**
|
| - * A textual description of the change to be applied.
|
| - */
|
| - final String message;
|
| -
|
| - /**
|
| - * A list of the [FileEdit]s used to effect the change.
|
| - */
|
| - final List<FileEdit> fileEdits = <FileEdit>[];
|
| -
|
| - /**
|
| - * A list of the [LinkedEditGroup]s in the change.
|
| - */
|
| - final List<LinkedEditGroup> linkedEditGroups = <LinkedEditGroup>[];
|
| -
|
| - /**
|
| - * The position that should be selected after the edits have been applied.
|
| - */
|
| - Position selection;
|
| -
|
| - Change(this.message);
|
| -
|
| - /**
|
| - * Adds [edit] to the [FileEdit] for the given [file].
|
| - */
|
| - void addEdit(String file, Edit edit) {
|
| - FileEdit fileEdit = getFileEdit(file);
|
| - if (fileEdit == null) {
|
| - fileEdit = new FileEdit(file);
|
| - addFileEdit(fileEdit);
|
| - }
|
| - fileEdit.add(edit);
|
| - }
|
| -
|
| - /**
|
| - * Adds the given [FileEdit].
|
| - */
|
| - void addFileEdit(FileEdit edit) {
|
| - fileEdits.add(edit);
|
| - }
|
| -
|
| - /**
|
| - * Adds the given [LinkedEditGroup].
|
| - */
|
| - void addLinkedEditGroup(LinkedEditGroup linkedEditGroup) {
|
| - linkedEditGroups.add(linkedEditGroup);
|
| - }
|
| -
|
| - /**
|
| - * Returns the [FileEdit] for the given [file], maybe `null`.
|
| - */
|
| - FileEdit getFileEdit(String file) {
|
| - for (FileEdit fileEdit in fileEdits) {
|
| - if (fileEdit.file == file) {
|
| - return fileEdit;
|
| - }
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - @override
|
| - Map<String, Object> toJson() {
|
| - Map<String, Object> json = {
|
| - MESSAGE: message,
|
| - EDITS: objectToJson(fileEdits),
|
| - LINKED_EDIT_GROUPS: objectToJson(linkedEditGroups)
|
| - };
|
| - if (selection != null) {
|
| - json[SELECTION] = selection.toJson();
|
| - }
|
| - return json;
|
| - }
|
| -
|
| - @override
|
| - String toString() =>
|
| - 'Change(message=$message, edits=$fileEdits, '
|
| - 'linkedEditGroups=$linkedEditGroups, selection=$selection)';
|
| -}
|
| -
|
| -
|
| -/**
|
| - * A description of a single change to a single file.
|
| - */
|
| -class Edit implements HasToJson {
|
| - /**
|
| - * The offset of the region to be modified.
|
| - */
|
| - final int offset;
|
| -
|
| - /**
|
| - * The length of the region to be modified.
|
| - */
|
| - final int length;
|
| -
|
| - /**
|
| - * The text that is to replace the specified region in the original text.
|
| - */
|
| - final String replacement;
|
| -
|
| - /**
|
| - * An identifier that uniquely identifies this source edit from other edits in
|
| - * the same response. This field is omitted unless a containing structure
|
| - * needs to be able to identify the edit for some reason.
|
| - *
|
| - * For example, some refactoring operations can produce edits that might not
|
| - * be appropriate (referred to as potential edits). Such edits will have an id
|
| - * so that they can be referenced. Edits in the same response that do not need
|
| - * to be referenced will not have an id.
|
| - */
|
| - String id;
|
| -
|
| - Edit(this.offset, this.length, this.replacement);
|
| -
|
| - Edit.range(SourceRange range, String replacement)
|
| - : this(range.offset, range.length, replacement);
|
| -
|
| - /**
|
| - * The offset of a character immediately after the region to be modified.
|
| - */
|
| - int get end => offset + length;
|
| -
|
| - bool operator ==(other) {
|
| - if (other is Edit) {
|
| - return other.offset == offset &&
|
| - other.length == length &&
|
| - other.replacement == replacement;
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - /**
|
| - * Get the result of applying the edit to the given [code].
|
| - */
|
| - String apply(String code) {
|
| - return code.substring(0, offset) + replacement + code.substring(end);
|
| - }
|
| -
|
| - @override
|
| - Map<String, Object> toJson() {
|
| - return {
|
| - OFFSET: offset,
|
| - LENGTH: length,
|
| - REPLACEMENT: replacement
|
| - };
|
| - }
|
| -
|
| - @override
|
| - String toString() {
|
| - StringBuffer sb = new StringBuffer();
|
| - sb.write('Edit(offset=');
|
| - sb.write(offset);
|
| - sb.write(', length=');
|
| - sb.write(length);
|
| - sb.write(', replacement=:>');
|
| - sb.write(replacement);
|
| - sb.write('<:');
|
| - if (id != null) {
|
| - sb.write(', id=');
|
| - sb.write(id);
|
| - }
|
| - sb.write(')');
|
| - return sb.toString();
|
| - }
|
| -
|
| - /**
|
| - * Get the result of applying a set of [edits] to the given [code]. Edits
|
| - * are applied in the order they appear in [edits].
|
| - */
|
| - static String applySequence(String code, Iterable<Edit> edits) {
|
| - edits.forEach((Edit edit) {
|
| - code = edit.apply(code);
|
| - });
|
| - return code;
|
| - }
|
| -}
|
| -
|
| -
|
| -/**
|
| - * A description of a set of changes to a single file.
|
| - *
|
| - * [Edit]s are added in the order of decreasing offset, so they are easy to
|
| - * apply to the original file content without correcting offsets.
|
| - */
|
| -class FileEdit implements HasToJson {
|
| - /**
|
| - * The file to be modified.
|
| - */
|
| - final String file;
|
| -
|
| - /**
|
| - * A list of the [Edit]s used to effect the change.
|
| - */
|
| - final List<Edit> edits = <Edit>[];
|
| -
|
| - FileEdit(this.file);
|
| -
|
| - /**
|
| - * Adds the given [Edit] to the list.
|
| - */
|
| - void add(Edit edit) {
|
| - int index = 0;
|
| - while (index < edits.length && edits[index].offset > edit.offset) {
|
| - index++;
|
| - }
|
| - edits.insert(index, edit);
|
| - }
|
| -
|
| - /**
|
| - * Adds the given [Edit]s.
|
| - */
|
| - void addAll(Iterable<Edit> edits) {
|
| - edits.forEach(add);
|
| - }
|
| -
|
| - @override
|
| - Map<String, Object> toJson() {
|
| - return {
|
| - FILE: file,
|
| - EDITS: objectToJson(edits)
|
| - };
|
| - }
|
| -
|
| - @override
|
| - String toString() => "FileEdit(file=$file, edits=$edits)";
|
| -}
|
| -
|
| -
|
| -/**
|
| - * A group of linked [Position]s in multiple files that are simultaneously
|
| - * modified - if one gets edited, all other positions in a group are edited the
|
| - * same way. All linked positions in a group have the same content.
|
| - */
|
| -class LinkedEditGroup implements HasToJson {
|
| - final String id;
|
| - int length;
|
| - final List<Position> positions = <Position>[];
|
| - final List<LinkedEditSuggestion> suggestions = <LinkedEditSuggestion>[];
|
| -
|
| - LinkedEditGroup(this.id);
|
| -
|
| - void addPosition(Position position, int length) {
|
| - positions.add(position);
|
| - this.length = length;
|
| - }
|
| -
|
| - void addSuggestion(LinkedEditSuggestion suggestion) {
|
| - suggestions.add(suggestion);
|
| - }
|
| -
|
| - @override
|
| - Map<String, Object> toJson() {
|
| - return {
|
| - ID: id,
|
| - LENGTH: length,
|
| - POSITIONS: objectToJson(positions),
|
| - SUGGESTIONS: objectToJson(suggestions)
|
| - };
|
| - }
|
| -
|
| - @override
|
| - String toString() =>
|
| - 'LinkedEditGroup(id=$id, length=$length, '
|
| - 'positions=$positions, suggestions=$suggestions)';
|
| -}
|
| -
|
| -
|
| -/**
|
| - * A suggestion of a value that could be used to replace all of the linked edit
|
| - * regions in a [LinkedEditGroup].
|
| - */
|
| -class LinkedEditSuggestion implements HasToJson {
|
| - final LinkedEditSuggestionKind kind;
|
| - final String value;
|
| -
|
| - LinkedEditSuggestion(this.kind, this.value);
|
| -
|
| - bool operator ==(other) {
|
| - if (other is LinkedEditSuggestion) {
|
| - return other.kind == kind && other.value == value;
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - @override
|
| - Map<String, Object> toJson() {
|
| - return {
|
| - KIND: kind.name,
|
| - VALUE: value
|
| - };
|
| - }
|
| -
|
| - @override
|
| - String toString() => '(kind=$kind, value=$value)';
|
| -}
|
| -
|
| -
|
| -/**
|
| - * An enumeration of the kind of values that can be suggested for a linked edit.
|
| - */
|
| -class LinkedEditSuggestionKind {
|
| - static const METHOD = const LinkedEditSuggestionKind('METHOD');
|
| - static const PARAMETER = const LinkedEditSuggestionKind('PARAMETER');
|
| - static const TYPE = const LinkedEditSuggestionKind('TYPE');
|
| - static const VARIABLE = const LinkedEditSuggestionKind('VARIABLE');
|
| - final String name;
|
| -
|
| - const LinkedEditSuggestionKind(this.name);
|
| -
|
| - @override
|
| - String toString() => name;
|
| -}
|
| -
|
| -
|
| -/**
|
| - * A position in a file.
|
| - */
|
| -class Position implements HasToJson {
|
| - final String file;
|
| - final int offset;
|
| -
|
| - Position(this.file, this.offset);
|
| -
|
| - int get hashCode {
|
| - int hash = file.hashCode;
|
| - hash = hash * 31 + offset;
|
| - return hash;
|
| - }
|
| -
|
| - bool operator ==(other) {
|
| - if (other is Position) {
|
| - return other.file == file && other.offset == offset;
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - @override
|
| - Map<String, Object> toJson() {
|
| - return {
|
| - FILE: file,
|
| - OFFSET: offset
|
| - };
|
| - }
|
| -
|
| - @override
|
| - String toString() => 'Position(file=$file, offset=$offset)';
|
| -}
|
|
|