@@ -6,11 +6,12 @@ import scala.annotation.switch
6
6
import scala .tools .asm .{Handle , Type }
7
7
import scala .tools .asm .Opcodes ._
8
8
import scala .tools .asm .tree ._
9
- import scala .tools .asm .tree .analysis .{ Frame , BasicInterpreter , Analyzer , Value }
9
+ import scala .tools .asm .tree .analysis ._
10
10
import GenBCode ._
11
11
import scala .tools .nsc .backend .jvm .BTypes ._
12
12
import scala .tools .nsc .backend .jvm .opt .BytecodeUtils ._
13
13
import java .lang .invoke .LambdaMetafactory
14
+
14
15
import scala .collection .mutable
15
16
import scala .collection .JavaConverters ._
16
17
@@ -32,8 +33,13 @@ class BackendUtils[BT <: BTypes](val btypes: BT) {
32
33
*/
33
34
class AsmAnalyzer [V <: Value ](methodNode : MethodNode , classInternalName : InternalName , val analyzer : Analyzer [V ] = new Analyzer (new BasicInterpreter )) {
34
35
computeMaxLocalsMaxStack(methodNode)
35
- analyzer.analyze(classInternalName, methodNode)
36
- def frameAt (instruction : AbstractInsnNode ): Frame [V ] = analyzer.frameAt(instruction, methodNode)
36
+ try {
37
+ analyzer.analyze(classInternalName, methodNode)
38
+ } catch {
39
+ case ae : AnalyzerException =>
40
+ throw new AnalyzerException (null , " While processing " + classInternalName + " ." + methodNode.name, ae)
41
+ }
42
+ def frameAt (instruction : AbstractInsnNode ): Frame [V ] = analyzer.frameAt(instruction, methodNode)
37
43
}
38
44
39
45
/**
0 commit comments