|
16 | 16 |
|
17 | 17 | package com.google.errorprone.bugpatterns; |
18 | 18 |
|
| 19 | +import static com.google.errorprone.fixes.SuggestedFixes.prettyType; |
19 | 20 | import static com.google.errorprone.fixes.SuggestedFixes.qualifyType; |
20 | 21 | import static com.google.errorprone.matchers.Description.NO_MATCH; |
21 | 22 | import static com.google.errorprone.matchers.Matchers.instanceMethod; |
|
28 | 29 | import static com.google.errorprone.util.ASTHelpers.getSymbol; |
29 | 30 | import static com.google.errorprone.util.ASTHelpers.getType; |
30 | 31 | import static com.google.errorprone.util.ASTHelpers.hasAnnotation; |
| 32 | +import static com.google.errorprone.util.ASTHelpers.hasExplicitSource; |
31 | 33 | import static com.google.errorprone.util.ASTHelpers.isConsideredFinal; |
32 | 34 | import static com.google.errorprone.util.ASTHelpers.isSameType; |
33 | 35 | import static com.google.errorprone.util.ASTHelpers.isSubtype; |
@@ -467,16 +469,29 @@ private static Optional<Change> extractToResourceInCurrentTry( |
467 | 469 | private static Optional<Change> splitVariableDeclarationAroundTry( |
468 | 470 | ExpressionTree tree, VariableTree var, VisitorState state, NameSuggester suggester) { |
469 | 471 | int initPos = getStartPosition(var.getInitializer()); |
470 | | - int afterTypePos = state.getEndPosition(var.getType()); |
| 472 | + Tree type = var.getType(); |
| 473 | + String typePrefix; |
| 474 | + int startPos; |
| 475 | + if (hasExplicitSource(type, state)) { |
| 476 | + startPos = state.getEndPosition(type); |
| 477 | + typePrefix = ""; |
| 478 | + } else { |
| 479 | + startPos = getStartPosition(var); |
| 480 | + typePrefix = prettyType(getType(type), state); |
| 481 | + } |
471 | 482 | String name = suggester.suggestName(tree); |
472 | 483 | return Change.builder( |
473 | 484 | SuggestedFix.builder() |
474 | 485 | .replace( |
475 | | - afterTypePos, |
| 486 | + startPos, |
476 | 487 | initPos, |
477 | 488 | String.format( |
478 | | - " %s;\ntry (var %s = %s) {\n%s =", |
479 | | - var.getName(), name, state.getSourceForNode(tree), var.getName())) |
| 489 | + "%s %s;\ntry (var %s = %s) {\n%s =", |
| 490 | + typePrefix, |
| 491 | + var.getName(), |
| 492 | + name, |
| 493 | + state.getSourceForNode(tree), |
| 494 | + var.getName())) |
480 | 495 | .replace(tree, name) |
481 | 496 | .build()) |
482 | 497 | .closeBraceAfter(var) |
|
0 commit comments