Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-5260

Groovyc stub generation doesn't handle all primitive types properly

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      The problem manifests when a long value is effectively being changed to an 'int' and results in an exception during compilation.

      Example class:

      class AnObject {
          public static final long serialVersionUID = -5239748510188117876L
      }
      

      Using groovy 1.8.5, the generated stub (during joint compilation using the 'Groovyc' ant taskdef) looks like (sans imports):

      public class AnObject implements
          groovy.lang.GroovyObject {
      public static final long serialVersionUID = -5239748510188117876;
      }
      

      The problem is that this yields a compilation exception 'integer number too large'.

      If you exclude the 'public' keyword on the member definition and re-compile, the stub instead looks like:

      public class AnObject implements
          groovy.lang.GroovyObject {
      public static final  long getSerialVersionUID() { return (long)0;}
      }
      

      This can then compile successfully.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            melix Cédric Champeau
            rumour Jay Ashworth
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment