Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7141852

1.6 v30 no longer compiles particular interface inheritance hierarchy

    Details

    • Subcomponent:
    • Introduced In Build:
      b08
    • Introduced In Version:
    • Resolved In Build:
      b01
    • CPU:
      x86
    • OS:
      windows_7
    • Verification:
      Verified

      Description

      FULL PRODUCT VERSION :
      java version "1.6.0_30"
      Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
      Java HotSpot(TM) Client VM (build 20.5-b03, mixed mode, sharing)

      ADDITIONAL OS VERSION INFORMATION :
      Microsoft Windows [Version 6.1.7600]

      A DESCRIPTION OF THE PROBLEM :
      I have a java interface hierarchy that compiled prior to 1.6v30, and it no longer compiles.

      REGRESSION. Last worked in version 6u29

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      I have a small set of interfaces to reproduce the problem

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
        To compile successfully
      ACTUAL -
      reference to getObject is ambiguous, both method getObject() in test.jcb.TestInterface3b and method getObject() in test.jcb.TestInterface3b match

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      reference to getObject is ambiguous, both method getObject() in test.jcb.TestInterface3b and method getObject() in test.jcb.TestInterface3b match

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      I have source, but it is several interfaces. Not sure how to attach it:

      public interface RetInterface1{}
      public interface RetInterface2 extends RetInterface1 {}
      public interface TestInterface extends TestInterface1a, TestInterface2a, TestInterface3a{}
      public interface TestInterface1a extends TestInterface1b{}
      public interface TestInterface1b extends TestInterface1c
      {
          RetInterface2 getObject();
      }
      public interface TestInterface1c
      {
          RetInterface1 getObject();
      }
      public interface TestInterface2a extends TestInterface1b, TestInterface2b, TestInterface3b{}
      public interface TestInterface2b extends TestInterface3c // if you comment out this extends, it compiles fine
      {
      }
      public interface TestInterface3a extends TestInterface3b{}
      public interface TestInterface3b extends TestInterface3c
      {
          RetInterface2 getObject();
      }
      public interface TestInterface3c
      {
          RetInterface1 getObject();
      }
      public class TestClass
      {
          public static void main(String[] args)
          {
              TestInterface testIntf = new TestInterface()
              {
                  public RetInterface2 getObject()
                  {
                      return null;
                  }
              };

              testIntf.getObject();
          }
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      No work around

        Attachments

          Activity

            People

            • Assignee:
              dmeetry Dmeetry Degrave (Inactive)
              Reporter:
              webbuggrp Webbug Group
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Imported:
                Indexed: