Merge "Fail gracefully with CompilationError if ASM throws"
diff --git a/src/main/java/com/android/tools/r8/graph/JarCode.java b/src/main/java/com/android/tools/r8/graph/JarCode.java
index f974aca..0a1ee94 100644
--- a/src/main/java/com/android/tools/r8/graph/JarCode.java
+++ b/src/main/java/com/android/tools/r8/graph/JarCode.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.graph;
+import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.errors.InvalidDebugInfoException;
import com.android.tools.r8.graph.JarClassFileReader.ReparseContext;
import com.android.tools.r8.ir.code.IRCode;
@@ -241,7 +242,12 @@
private void parseCode(ReparseContext context, boolean useJsrInliner) {
SecondVisitor classVisitor = new SecondVisitor(createCodeLocator(context), useJsrInliner);
- new ClassReader(context.classCache).accept(classVisitor, ClassReader.SKIP_FRAMES);
+ try {
+ new ClassReader(context.classCache).accept(classVisitor, ClassReader.SKIP_FRAMES);
+ } catch (Exception exception) {
+ throw new CompilationError(
+ "Unable to parse method `" + method.toSourceString() + "`", exception);
+ }
}
protected BiFunction<String, String, JarCode> createCodeLocator(ReparseContext context) {