From 839041111529c4d73891d160a6d21d40c2dcdf6b Mon Sep 17 00:00:00 2001 From: cushon Date: Wed, 30 Mar 2016 12:01:02 -0700 Subject: [PATCH] Fix crash during error reporting If ErrorProneScanner.scan(Tree, VisitorState) is called directly, the TreePath may not have been initialized when it handles a crash. RELNOTES: N/A ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=118597461 --- .../errorprone/scanner/ErrorProneScanner.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/google/errorprone/scanner/ErrorProneScanner.java b/core/src/main/java/com/google/errorprone/scanner/ErrorProneScanner.java index c3da13c1a4a..cc6242d7f96 100644 --- a/core/src/main/java/com/google/errorprone/scanner/ErrorProneScanner.java +++ b/core/src/main/java/com/google/errorprone/scanner/ErrorProneScanner.java @@ -1037,10 +1037,7 @@ public Void scan(TreePath path, VisitorState state) { } catch (ErrorProneError e) { throw e; } catch (Throwable t) { - throw new ErrorProneError( - t, - (DiagnosticPosition) path.getLeaf(), - state.getPath().getCompilationUnit().getSourceFile()); + throw wrapWithPosition(t, path); } } @@ -1051,11 +1048,15 @@ public Void scan(Tree tree, VisitorState state) { } catch (ErrorProneError e) { throw e; } catch (Throwable t) { - throw new ErrorProneError( - t, (DiagnosticPosition) tree, getCurrentPath().getCompilationUnit().getSourceFile()); + throw wrapWithPosition(t, new TreePath(getCurrentPath(), tree)); } } + static ErrorProneError wrapWithPosition(Throwable t, TreePath path) { + return new ErrorProneError( + t, (DiagnosticPosition) path.getLeaf(), path.getCompilationUnit().getSourceFile()); + } + @Override public Map severityMap() { return severities;