| Index: pkg/analysis_server/lib/src/services/correction/assist_internal.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
|
| index d213c4725c3572d0329a8c32eab736c3d9da3874..3575bae454643f22e997ecc82c03358c0243e828 100644
|
| --- a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
|
| +++ b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
|
| @@ -85,6 +85,7 @@ class AssistProcessor {
|
| _addProposal_convertToIsNot_onIs();
|
| _addProposal_convertToIsNot_onNot();
|
| _addProposal_convertToIsNotEmpty();
|
| + _addProposal_encapsulateField();
|
| _addProposal_exchangeOperands();
|
| _addProposal_importAddShow();
|
| _addProposal_introduceLocalTestedType();
|
| @@ -660,6 +661,7 @@ class AssistProcessor {
|
| isEmptyAccess.parent as PrefixExpression;
|
| // should be !
|
| if (prefixExpression.operator.type != TokenType.BANG) {
|
| + _coverageMarker();
|
| return;
|
| }
|
| // do replace
|
| @@ -669,6 +671,49 @@ class AssistProcessor {
|
| _addAssist(AssistKind.CONVERT_INTO_IS_NOT_EMPTY, []);
|
| }
|
|
|
| + void _addProposal_encapsulateField() {
|
| + // find FieldDeclaration
|
| + FieldDeclaration fieldDeclaraton =
|
| + node.getAncestor((x) => x is FieldDeclaration);
|
| + if (fieldDeclaraton == null) {
|
| + _coverageMarker();
|
| + return;
|
| + }
|
| + // has a parse error
|
| + VariableDeclarationList variableList = fieldDeclaraton.fields;
|
| + if (variableList.keyword == null && variableList.type == null) {
|
| + _coverageMarker();
|
| + return;
|
| + }
|
| + // should have exactly one field
|
| + List<VariableDeclaration> fields = variableList.variables;
|
| + if (fields.length != 1) {
|
| + _coverageMarker();
|
| + return;
|
| + }
|
| + VariableDeclaration field = fields.first;
|
| + SimpleIdentifier nameNode = field.name;
|
| + // should have a public name
|
| + String name = nameNode.name;
|
| + if (Identifier.isPrivateName(name)) {
|
| + _coverageMarker();
|
| + return;
|
| + }
|
| + // prepare change
|
| + String eol2 = eol + eol;
|
| + _addReplaceEdit(rangeNode(nameNode), '_$name');
|
| + String typeNameCode =
|
| + variableList.type != null ? _getNodeText(variableList.type) + ' ' : '';
|
| + String getterCode = '$eol2 ${typeNameCode}get $name => _$name;';
|
| + String setterCode = '$eol2'
|
| + ' void set $name(${typeNameCode}$name) {$eol'
|
| + ' _$name = $name;$eol'
|
| + ' }';
|
| + _addInsertEdit(fieldDeclaraton.end, getterCode + setterCode);
|
| + // add proposal
|
| + _addAssist(AssistKind.ENCAPSULATE_FIELD, []);
|
| + }
|
| +
|
| void _addProposal_exchangeOperands() {
|
| // check that user invokes quick assist on binary expression
|
| if (node is! BinaryExpression) {
|
|
|