groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Milles (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (GROOVY-7647) Incorrect line information for debug
Date Tue, 06 Nov 2018 16:31:00 GMT

    [ https://issues.apache.org/jira/browse/GROOVY-7647?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16676967#comment-16676967
] 

Eric Milles commented on GROOVY-7647:
-------------------------------------

This fix does not address a constructor (see example below) since it does not add a return
statement.
{code:groovy}
class Pogo {
  String foo, bar
  Pogo(Map args = null) {
    if (args != null) {
      foo = map['foo']
      bar = map['bar']
    }
  }
}
{code}
When calling the no-arg constructor, debugger steps from "if" line to "bar" line.

> Incorrect line information for debug
> ------------------------------------
>
>                 Key: GROOVY-7647
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7647
>             Project: Groovy
>          Issue Type: Bug
>          Components: class generator, Compiler
>    Affects Versions: 2.4.5
>            Reporter: Egor Ushakov
>            Priority: Major
>
> Try to debug the code:
> {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
> {code}
> 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):
> {code}
>  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
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message