| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 library services.correction.assist; | |
| 6 | |
| 7 import 'package:analysis_services/correction/change.dart'; | |
| 8 import 'package:analysis_services/search/search_engine.dart'; | |
| 9 import 'package:analysis_services/src/correction/assist.dart'; | |
| 10 import 'package:analyzer/src/generated/ast.dart'; | |
| 11 import 'package:analyzer/src/generated/source.dart'; | |
| 12 | |
| 13 | |
| 14 /** | |
| 15 * Computes [Assist]s at the given location. | |
| 16 * | |
| 17 * Returns the computed [Assist]s, not `null`. | |
| 18 */ | |
| 19 List<Assist> computeAssists(SearchEngine searchEngine, CompilationUnit unit, | |
| 20 int offset, int length) { | |
| 21 Source source = unit.element.source; | |
| 22 String file = source.fullName; | |
| 23 AssistProcessor processor = | |
| 24 new AssistProcessor(searchEngine, source, file, unit, offset, length); | |
| 25 return processor.compute(); | |
| 26 } | |
| 27 | |
| 28 | |
| 29 /** | |
| 30 * A description of a single proposed assist. | |
| 31 */ | |
| 32 class Assist { | |
| 33 final AssistKind kind; | |
| 34 final Change change; | |
| 35 | |
| 36 Assist(this.kind, this.change); | |
| 37 | |
| 38 @override | |
| 39 String toString() { | |
| 40 return 'Assist(kind=$kind, change=$change)'; | |
| 41 } | |
| 42 } | |
| 43 | |
| 44 | |
| 45 /** | |
| 46 * An enumeration of possible quick assist kinds. | |
| 47 */ | |
| 48 class AssistKind { | |
| 49 static const ADD_PART_DIRECTIVE = | |
| 50 const AssistKind('ADD_PART_DIRECTIVE', 30, "Add 'part' directive"); | |
| 51 static const ADD_TYPE_ANNOTATION = | |
| 52 const AssistKind('ADD_TYPE_ANNOTATION', 30, "Add type annotation"); | |
| 53 static const ASSIGN_TO_LOCAL_VARIABLE = | |
| 54 const AssistKind( | |
| 55 'ASSIGN_TO_LOCAL_VARIABLE', | |
| 56 30, | |
| 57 "Assign value to new local variable"); | |
| 58 static const CONVERT_INTO_BLOCK_BODY = | |
| 59 const AssistKind('CONVERT_INTO_BLOCK_BODY', 30, "Convert into block body")
; | |
| 60 static const CONVERT_INTO_EXPRESSION_BODY = | |
| 61 const AssistKind( | |
| 62 'CONVERT_INTO_EXPRESSION_BODY', | |
| 63 30, | |
| 64 "Convert into expression body"); | |
| 65 static const CONVERT_INTO_IS_NOT = | |
| 66 const AssistKind('CONVERT_INTO_IS_NOT', 30, "Convert into is!"); | |
| 67 static const CONVERT_INTO_IS_NOT_EMPTY = | |
| 68 const AssistKind('CONVERT_INTO_IS_NOT_EMPTY', 30, "Convert into 'isNotEmpt
y'"); | |
| 69 static const EXCHANGE_OPERANDS = | |
| 70 const AssistKind('EXCHANGE_OPERANDS', 30, "Exchange operands"); | |
| 71 static const EXTRACT_CLASS = | |
| 72 const AssistKind('EXTRACT_CLASS', 30, "Extract class into file '{0}'"); | |
| 73 static const IMPORT_ADD_SHOW = | |
| 74 const AssistKind('IMPORT_ADD_SHOW', 30, "Add explicit 'show' combinator"); | |
| 75 static const INVERT_IF_STATEMENT = | |
| 76 const AssistKind('INVERT_IF_STATEMENT', 30, "Invert 'if' statement"); | |
| 77 static const JOIN_IF_WITH_INNER = | |
| 78 const AssistKind( | |
| 79 'JOIN_IF_WITH_INNER', | |
| 80 30, | |
| 81 "Join 'if' statement with inner 'if' statement"); | |
| 82 static const JOIN_IF_WITH_OUTER = | |
| 83 const AssistKind( | |
| 84 'JOIN_IF_WITH_OUTER', | |
| 85 30, | |
| 86 "Join 'if' statement with outer 'if' statement"); | |
| 87 static const JOIN_VARIABLE_DECLARATION = | |
| 88 const AssistKind('JOIN_VARIABLE_DECLARATION', 30, "Join variable declarati
on"); | |
| 89 static const REMOVE_TYPE_ANNOTATION = | |
| 90 const AssistKind('REMOVE_TYPE_ANNOTATION', 29, "Remove type annotation"); | |
| 91 static const REPLACE_CONDITIONAL_WITH_IF_ELSE = | |
| 92 const AssistKind( | |
| 93 'REPLACE_CONDITIONAL_WITH_IF_ELSE', | |
| 94 30, | |
| 95 "Replace conditional with 'if-else'"); | |
| 96 static const REPLACE_IF_ELSE_WITH_CONDITIONAL = | |
| 97 const AssistKind( | |
| 98 'REPLACE_IF_ELSE_WITH_CONDITIONAL', | |
| 99 30, | |
| 100 "Replace 'if-else' with conditional ('c ? x : y')"); | |
| 101 static const SPLIT_AND_CONDITION = | |
| 102 const AssistKind('SPLIT_AND_CONDITION', 30, "Split && condition"); | |
| 103 static const SPLIT_VARIABLE_DECLARATION = | |
| 104 const AssistKind( | |
| 105 'SPLIT_VARIABLE_DECLARATION', | |
| 106 30, | |
| 107 "Split variable declaration"); | |
| 108 static const SURROUND_WITH_BLOCK = | |
| 109 const AssistKind('SURROUND_WITH_BLOCK', 30, "Surround with block"); | |
| 110 static const SURROUND_WITH_DO_WHILE = | |
| 111 const AssistKind('SURROUND_WITH_DO_WHILE', 30, "Surround with 'do-while'")
; | |
| 112 static const SURROUND_WITH_FOR = | |
| 113 const AssistKind('SURROUND_WITH_FOR', 30, "Surround with 'for'"); | |
| 114 static const SURROUND_WITH_FOR_IN = | |
| 115 const AssistKind('SURROUND_WITH_FOR_IN', 30, "Surround with 'for-in'"); | |
| 116 static const SURROUND_WITH_IF = | |
| 117 const AssistKind('SURROUND_WITH_IF', 30, "Surround with 'if'"); | |
| 118 static const SURROUND_WITH_TRY_CATCH = | |
| 119 const AssistKind('SURROUND_WITH_TRY_CATCH', 30, "Surround with 'try-catch'
"); | |
| 120 static const SURROUND_WITH_TRY_FINALLY = | |
| 121 const AssistKind( | |
| 122 'SURROUND_WITH_TRY_FINALLY', | |
| 123 30, | |
| 124 "Surround with 'try-finally'"); | |
| 125 static const SURROUND_WITH_WHILE = | |
| 126 const AssistKind('SURROUND_WITH_WHILE', 30, "Surround with 'while'"); | |
| 127 | |
| 128 final name; | |
| 129 final int relevance; | |
| 130 final String message; | |
| 131 | |
| 132 const AssistKind(this.name, this.relevance, this.message); | |
| 133 | |
| 134 @override | |
| 135 String toString() => name; | |
| 136 } | |
| OLD | NEW |