| Index: pkg/analysis_services/lib/src/correction/selection_analyzer.dart
|
| diff --git a/pkg/analysis_services/lib/src/correction/selection_analyzer.dart b/pkg/analysis_services/lib/src/correction/selection_analyzer.dart
|
| deleted file mode 100644
|
| index b048891f220eb009b0eab50c736dd06a0c90ff70..0000000000000000000000000000000000000000
|
| --- a/pkg/analysis_services/lib/src/correction/selection_analyzer.dart
|
| +++ /dev/null
|
| @@ -1,146 +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.src.correction.selection_analyzer;
|
| -
|
| -import 'package:analysis_services/src/correction/source_range.dart';
|
| -import 'package:analyzer/src/generated/ast.dart';
|
| -import 'package:analyzer/src/generated/source.dart';
|
| -
|
| -
|
| -/**
|
| - * A visitor for visiting [AstNode]s covered by a selection [SourceRange].
|
| - */
|
| -class SelectionAnalyzer extends GeneralizingAstVisitor<Object> {
|
| - final SourceRange selection;
|
| -
|
| - AstNode _coveringNode;
|
| - List<AstNode> _selectedNodes;
|
| -
|
| - SelectionAnalyzer(this.selection);
|
| -
|
| - /**
|
| - * Return the [AstNode] with the shortest length which completely covers the
|
| - * specified selection.
|
| - */
|
| - AstNode get coveringNode => _coveringNode;
|
| -
|
| - /**
|
| - * Returns the first selected [AstNode], may be `null`.
|
| - */
|
| - AstNode get firstSelectedNode {
|
| - if (_selectedNodes == null || _selectedNodes.isEmpty) {
|
| - return null;
|
| - }
|
| - return _selectedNodes[0];
|
| - }
|
| -
|
| - /**
|
| - * Returns `true` if there are [AstNode]s fully covered by the
|
| - * selection [SourceRange].
|
| - */
|
| - bool get hasSelectedNodes =>
|
| - _selectedNodes != null && !_selectedNodes.isEmpty;
|
| -
|
| - /**
|
| - * Returns `true` if there was no selected nodes yet.
|
| - */
|
| - bool get isFirstNode => _selectedNodes == null;
|
| -
|
| - /**
|
| - * Returns the last selected [AstNode], may be `null`.
|
| - */
|
| - AstNode get lastSelectedNode {
|
| - if (_selectedNodes == null || _selectedNodes.isEmpty) {
|
| - return null;
|
| - }
|
| - return _selectedNodes[_selectedNodes.length - 1];
|
| - }
|
| -
|
| - /**
|
| - * Returns the [SourceRange] which covers selected [AstNode]s, may be `null`
|
| - * if there are no [AstNode]s under the selection.
|
| - */
|
| - SourceRange get selectedNodeRange {
|
| - if (_selectedNodes == null || _selectedNodes.isEmpty) {
|
| - return null;
|
| - }
|
| - AstNode firstNode = _selectedNodes[0];
|
| - AstNode lastNode = _selectedNodes[_selectedNodes.length - 1];
|
| - return rangeStartEnd(firstNode, lastNode);
|
| - }
|
| -
|
| - /**
|
| - * Return the [AstNode]s fully covered by the selection [SourceRange].
|
| - */
|
| - List<AstNode> get selectedNodes {
|
| - if (_selectedNodes == null || _selectedNodes.isEmpty) {
|
| - return [];
|
| - }
|
| - return _selectedNodes;
|
| - }
|
| -
|
| - /**
|
| - * Adds first selected [AstNode].
|
| - */
|
| - void handleFirstSelectedNode(AstNode node) {
|
| - _selectedNodes = [];
|
| - _selectedNodes.add(node);
|
| - }
|
| -
|
| - /**
|
| - * Adds second or more selected [AstNode].
|
| - */
|
| - void handleNextSelectedNode(AstNode node) {
|
| - if (firstSelectedNode.parent == node.parent) {
|
| - _selectedNodes.add(node);
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Notifies that selection ends in given [AstNode].
|
| - */
|
| - void handleSelectionEndsIn(AstNode node) {
|
| - }
|
| -
|
| - /**
|
| - * Notifies that selection starts in given [AstNode].
|
| - */
|
| - void handleSelectionStartsIn(AstNode node) {
|
| - }
|
| -
|
| - /**
|
| - * Resets selected nodes.
|
| - */
|
| - void reset() {
|
| - _selectedNodes = null;
|
| - }
|
| -
|
| - @override
|
| - Object visitNode(AstNode node) {
|
| - SourceRange nodeRange = rangeNode(node);
|
| - if (selection.covers(nodeRange)) {
|
| - if (isFirstNode) {
|
| - handleFirstSelectedNode(node);
|
| - } else {
|
| - handleNextSelectedNode(node);
|
| - }
|
| - return null;
|
| - } else if (selection.coveredBy(nodeRange)) {
|
| - _coveringNode = node;
|
| - node.visitChildren(this);
|
| - return null;
|
| - } else if (selection.startsIn(nodeRange)) {
|
| - handleSelectionStartsIn(node);
|
| - node.visitChildren(this);
|
| - return null;
|
| - } else if (selection.endsIn(nodeRange)) {
|
| - handleSelectionEndsIn(node);
|
| - node.visitChildren(this);
|
| - return null;
|
| - }
|
| - // no intersection
|
| - return null;
|
| - }
|
| -}
|
|
|