| Index: pkg/analysis_server/lib/src/services/correction/fix_internal.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
|
| index 3b57b9e6f2169349d03da8b67bf29ee3de1192a7..84c5890c82e8cd9a81fa80c1f51536c4c72a40c2 100644
|
| --- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
|
| +++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
|
| @@ -202,6 +202,7 @@ class FixProcessor {
|
| _addFix_createFunction_forFunctionType();
|
| _addFix_importLibrary_withType();
|
| _addFix_importLibrary_withTopLevelVariable();
|
| + _addFix_createLocalVariable();
|
| }
|
| if (errorCode == StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER) {
|
| _addFix_useStaticAccess_method();
|
| @@ -722,6 +723,54 @@ class FixProcessor {
|
| }
|
| }
|
|
|
| + void _addFix_createLocalVariable() {
|
| + SimpleIdentifier nameNode = node;
|
| + String name = nameNode.name;
|
| + // if variable is assigned, convert assignment into declaration
|
| + if (node.parent is AssignmentExpression) {
|
| + AssignmentExpression assignment = node.parent;
|
| + if (assignment.leftHandSide == node &&
|
| + assignment.operator.type == TokenType.EQ &&
|
| + assignment.parent is ExpressionStatement) {
|
| + _addInsertEdit(node.offset, 'var ');
|
| + _addFix(FixKind.CREATE_LOCAL_VARIABLE, [name]);
|
| + return;
|
| + }
|
| + }
|
| + // prepare target Statement
|
| + Statement target = node.getAncestor((x) => x is Statement);
|
| + if (target == null) {
|
| + return;
|
| + }
|
| + String prefix = utils.getNodePrefix(target);
|
| + // build variable declaration source
|
| + SourceBuilder sb = new SourceBuilder(file, target.offset);
|
| + {
|
| + // append type
|
| + DartType fieldType = _inferUndefinedExpressionType(node);
|
| + if (fieldType != null) {
|
| + _appendType(sb, fieldType, 'TYPE');
|
| + } else {
|
| + sb.append('var ');
|
| + }
|
| + // append name
|
| + {
|
| + sb.startPosition('NAME');
|
| + sb.append(name);
|
| + sb.endPosition();
|
| + }
|
| + sb.append(';');
|
| + sb.append(eol);
|
| + sb.append(prefix);
|
| + }
|
| + // insert source
|
| + _insertBuilder(sb);
|
| + // add linked positions
|
| + _addLinkedPosition3('NAME', sb, rf.rangeNode(node));
|
| + // add proposal
|
| + _addFix(FixKind.CREATE_LOCAL_VARIABLE, [name]);
|
| + }
|
| +
|
| void _addFix_createMissingOverrides(List<ExecutableElement> elements) {
|
| elements = elements.toList();
|
| int numElements = elements.length;
|
|
|