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

Intermittant/random incorrect resolution of sub-interface constant values

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.8.5
    • 1.8.6, 2.0-beta-3
    • groovy-jdk
    • None
    • Windows XP and LINUX

    Description

      If a constant in a sub-interface replaces/shadows a constant in a super interface (both Java), when trying to access the sub-interface's constant value from Groovy, the behaviour is intermittantly incorrect - sometimes the sub-interface's value is returned (correct) and sometimes the super interface's value is returned (incorrect).
      In Java the sub-interface's value is always returned, as expected.

      See source code below that demonstrates this: InterfaceA.java, InterfaceB.java, ShowBugGroovy.groovy, ShowBugJava.java
      If ShowBugGroovy is repeatedly run, sometimes the assertion fails, sometimes it passes (randomly?). I believe the behaviour is the same for concrete implementations of the sub-interface.

      package groovybug;
      
      public interface InterfaceA {
          String FOO="Foo A";
      }
      
      package groovybug;
      
      public interface InterfaceB extends InterfaceA {
          String FOO="Foo B";
      }
      
      package groovybug
      
      class ShowBugGroovy {
          static main(args) {
              println("Interface A: " + InterfaceA.FOO);
              println("Interface B: " + InterfaceB.FOO);
      
              // Fails randomly
              assert(InterfaceA.FOO!=InterfaceB.FOO)
          }
      }
      
      package groovybug;
      
      public class ShowBugJava {
          public static void main(String[] args) {
              System.out.println("Interface A: " + InterfaceA.FOO);
              System.out.println("Interface B: " + InterfaceB.FOO);
      
              // Always passes
              assert(!InterfaceA.FOO.equals(InterfaceB.FOO));
          }
      }
      

      Attachments

        Issue Links

          Activity

            People

              melix Cédric Champeau
              ssummer Stephen Summerfield
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: