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

Can't assign a field with the result of a method call of the same name from a base class

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.0.7
    • 2.5.15, 3.0.8, 4.0.0-alpha-3
    • None
    • None

    Description

      Having a method in a base class and using that method in an assignment in an inheriting class to assign a field of the same name as that method causes a NullPointerException.

      Try executing the attached script with Groovy 3.0.7. It will yield:

      ❯ groovy test.groovy
      Caught: java.lang.NullPointerException
      java.lang.NullPointerException
      	at Child.setup(test.groovy:11)
      	at Child$setup.call(Unknown Source)
      	at test.run(test.groovy:16)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      

      As a work around the method call to foo() can explicitly be prefixed with `super.`

      Attachments

        1. test.groovy
          0.2 kB
          Benedikt Ritter

        Activity

          People

            emilles Eric Milles
            britter Benedikt Ritter
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: