Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: pkg/analysis_server/lib/src/services/correction/fix_internal.dart

Issue 1116593002: Issue 23337. Quick Fix for removing dead code. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
« no previous file with comments | « pkg/analysis_server/lib/src/services/correction/fix.dart ('k') | pkg/analysis_server/test/services/correction/fix_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698