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

@Delegate produces invalid class file

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • 1.7-rc-2
    • 1.6.8, 1.7.1, 1.8-beta-1
    • Compiler
    • None
    • Mac OS 10.5.8
      Java 1.5.0_19

    Description

      org/spockframework/Foob.groovy:

      package org.spockframework
      
      class Foob {
        def doit() { println "foob" }
      }
      

      org/spockframework/compiler/Barb.groovy:

      package org.spockframework.compiler
      
      import org.spockframework.Foob
      
      class Barb {
        @Delegate Foob foob
      
        static void main(String[] args) {
          new Barb().barb()
        }
      
        def barb() {
          this.doit()
        }
      }
      

      When I run the main method, I get:

      Exception in thread "main" java.lang.ClassFormatError: Repetitive method name/signature in class file org/spockframework/compiler/Barb
      	at java.lang.ClassLoader.defineClass1(Native Method)
      	at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
      	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
      	at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
      	at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
      	at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
      	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
      	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
      

      When I change this.doit() to doit(), I get:

      Exception in thread "main" java.lang.NullPointerException: Cannot invoke method doit() on null object
      	at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:77)
      	at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:751)
      	at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:728)
      	at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:17)
      	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
      	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
      	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121)
      	at org.spockframework.compiler.Barb.doit(Barb.groovy)
      	at org.spockframework.compiler.Barb$doit.callCurrent(Unknown Source)
      	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)
      	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143)
      	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:147)
      	at org.spockframework.compiler.Barb.barb(Barb.groovy:28)
      	at org.spockframework.compiler.Barb$barb.call(Unknown Source)
      	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
      	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
      	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121)
      	at org.spockframework.compiler.Barb.main(Barb.groovy:24)
      

      Attachments

        1. groovy_3712.patch
          0.9 kB
          Andres Almiray
        2. Barb.class
          7 kB
          Peter Niederwieser
        3. AfterPatch_JavapOutput.txt
          3 kB
          Roshan Dawrani
        4. 3712_17x_Patch.txt
          3 kB
          Roshan Dawrani
        5. 18Dec_3712_17x_Patch.txt
          3 kB
          Roshan Dawrani

        Activity

          People

            roshandawrani Roshan Dawrani
            pniederw Peter Niederwieser
            Votes:
            7 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: