| 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 01c688d459e53ebf4502b1f08eee0bbedbca8bde..9ae3c0e089ebb2b61700e2b5e100be686bafb07c 100644
|
| --- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
|
| +++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
|
| @@ -79,6 +79,7 @@ class FixProcessor {
|
| int errorOffset;
|
| int errorLength;
|
| int errorEnd;
|
| + SourceRange errorRange;
|
| AstNode node;
|
| AstNode coveredNode;
|
|
|
| @@ -105,6 +106,7 @@ class FixProcessor {
|
| errorOffset = error.offset;
|
| errorLength = error.length;
|
| errorEnd = errorOffset + errorLength;
|
| + errorRange = new SourceRange(errorOffset, errorLength);
|
| node = new NodeLocator.con1(errorOffset).searchWithin(unit);
|
| coveredNode = new NodeLocator.con2(errorOffset, errorOffset + errorLength)
|
| .searchWithin(unit);
|
| @@ -150,6 +152,9 @@ class FixProcessor {
|
| _addFix_createPartUri();
|
| _addFix_replaceImportUri();
|
| }
|
| + if (errorCode == HintCode.DEAD_CODE) {
|
| + _addFix_removeDeadCode();
|
| + }
|
| if (errorCode == HintCode.DIVISION_OPTIMIZATION) {
|
| _addFix_useEffectiveIntegerDivision();
|
| }
|
| @@ -1375,6 +1380,38 @@ class FixProcessor {
|
| _addFix(DartFixKind.MAKE_CLASS_ABSTRACT, [className]);
|
| }
|
|
|
| + void _addFix_removeDeadCode() {
|
| + AstNode coveringNode = this.coveredNode;
|
| + if (coveringNode is Expression) {
|
| + AstNode parent = coveredNode.parent;
|
| + if (parent is BinaryExpression) {
|
| + if (parent.rightOperand == coveredNode) {
|
| + _addRemoveEdit(rf.rangeEndEnd(parent.leftOperand, coveredNode));
|
| + _addFix(DartFixKind.REMOVE_DEAD_CODE, []);
|
| + }
|
| + }
|
| + } else if (coveringNode is Block) {
|
| + Block block = coveringNode;
|
| + List<Statement> statementsToRemove = <Statement>[];
|
| + for (Statement statement in block.statements) {
|
| + if (rf.rangeNode(statement).intersects(errorRange)) {
|
| + statementsToRemove.add(statement);
|
| + }
|
| + }
|
| + if (statementsToRemove.isNotEmpty) {
|
| + SourceRange rangeToRemove =
|
| + utils.getLinesRangeStatements(statementsToRemove);
|
| + _addRemoveEdit(rangeToRemove);
|
| + _addFix(DartFixKind.REMOVE_DEAD_CODE, []);
|
| + }
|
| + } else if (coveringNode is Statement) {
|
| + SourceRange rangeToRemove =
|
| + utils.getLinesRangeStatements(<Statement>[coveringNode]);
|
| + _addRemoveEdit(rangeToRemove);
|
| + _addFix(DartFixKind.REMOVE_DEAD_CODE, []);
|
| + }
|
| + }
|
| +
|
| void _addFix_removeParameters_inGetterDeclaration() {
|
| if (node is SimpleIdentifier && node.parent is MethodDeclaration) {
|
| MethodDeclaration method = node.parent as MethodDeclaration;
|
|
|