Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.4.5
-
None
Description
Try to debug the code:
boolean boolVar = false; //line 15 if (boolVar) { // set breakpoint here and step over //line 16 print "ok"; //line 17 } // end of file //line 18
It steps over to the line with print even though it is not executed.
Seems that compiler does not generate line info for the last block (line 18):
public java.lang.Object run(); descriptor: ()Ljava/lang/Object; flags: ACC_PUBLIC Code: stack=3, locals=3, args_size=1 0: invokestatic #18 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite; 3: astore_1 4: iconst_0 5: istore_2 6: iload_2 7: pop 8: iload_2 9: ifeq 28 12: aload_1 13: ldc #41 // int 1 15: aaload 16: aload_0 17: ldc #43 // String ok 19: invokeinterface #47, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callCurrent:(Lgroovy/lang/GroovyObject;Ljava/lang/Object;)Ljava/lang/Object; 24: areturn 25: goto 30 28: aconst_null 29: areturn 30: aconst_null 31: areturn LocalVariableTable: Start Length Slot Name Signature 0 30 0 this Lsdfklajsdlkjas/test; 6 24 2 boolVar Z LineNumberTable: line 15: 4 line 16: 8 line 17: 12
Attachments
Issue Links
- is duplicated by
-
GROOVY-7918 Line number debug annotation missing on final return
- Closed
- is related to
-
GROOVY-9126 Unreachable line numbers after ARETURN in bytecode
- Closed
-
GROOVY-9610 Unreachable line numbers after ARETURN in bytecode
- Closed
- links to