|
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