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

A collectInheritedMethods() compiler error.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P2 P2
    • 1.2.0
    • 1.2.0
    • tools
    • 1.2beta4
    • generic, x86, sparc
    • generic, solaris_2.5.1, solaris_2.6, windows_95, windows_nt
    • Verified



      Name: rm29839 Date: 01/22/98


      Similar to bug #4100959, but stack trace is different after 3rd line or so. So I'm treating it as different.

      My code is probably unusual.. I am defining a set of interfaces for general data transfer.
      They use nested interfaces that inherit other interfaces with nested interfaces. These interfaces also extend their contained interfaces
      For example:

      public interface Base extends Base.Foo, Base.Bar{
         public interface Foo{
            ...
         }
         public interface Bar{
            ...
         }
      }

      public interface Child extends Base, Child.Foo, Child.Bar{
         public interface Foo extends Base.Foo{
            ...
         }
         public interface Bar extends Base.Bar{
            ...
         }
      }

      The idea is so that one could extend the entire Child interface by implementing Child, or just a subset by implementing Child.Foo.

      I did a simple test program to see if the above was possible. The simple test program compiled ok.
      Only when I had an inheritance of about 3 deep did problems occur. If you read this and you want me to email you my
      code, then contact me. I dont think it wise for me to publish the code for the world to see.


      Here's the stack trace:
      sun.tools.java.CompilerError: collectInheritedMethods()
      at sun.tools.java.ClassDefinition.collectInheritedMethods(ClassDefinition.java:1249)
      at sun.tools.java.BinaryClass.basicCheck(BinaryClass.java:60)
      at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.java:122)
      at sun.tools.java.BinaryClass.initInnerClasses(BinaryClass.java:282)
      at sun.tools.java.BinaryClass.loadNested(BinaryClass.java:180)
      at sun.tools.javac.BatchEnvironment.loadDefinition(BatchEnvironment.java:434)
      at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.java:112)
      at sun.tools.java.ClassDefinition.collectOneClass(ClassDefinition.java:1050)
      at sun.tools.java.ClassDefinition.collectInheritedMethods(ClassDefinition.java:1296)
      at sun.tools.java.BinaryClass.basicCheck(BinaryClass.java:60)
      at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.java:122)
      at sun.tools.java.BinaryClass.initInnerClasses(BinaryClass.java:282)
      at sun.tools.java.BinaryClass.loadNested(BinaryClass.java:180)
      at sun.tools.javac.BatchEnvironment.loadDefinition(BatchEnvironment.java:507)
      at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.java:112)
      at sun.tools.java.BinaryClass.initInnerClasses(BinaryClass.java:291)
      at sun.tools.java.BinaryClass.loadNested(BinaryClass.java:180)
      at sun.tools.javac.BatchEnvironment.loadDefinition(BatchEnvironment.java:507)
      at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.java:112)
      at sun.tools.java.ClassDefinition.collectOneClass(ClassDefinition.java:1050)
      at sun.tools.java.ClassDefinition.collectInheritedMethods(ClassDefinition.java:1296)
      at sun.tools.java.BinaryClass.basicCheck(BinaryClass.java:60)
      at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.java:122)
      at sun.tools.java.BinaryClass.initInnerClasses(BinaryClass.java:282)
      at sun.tools.java.BinaryClass.loadNested(BinaryClass.java:180)
      at sun.tools.javac.BatchEnvironment.loadDefinition(BatchEnvironment.java:507)
      at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.java:112)
      at sun.tools.java.BinaryClass.initInnerClasses(BinaryClass.java:291)
      at sun.tools.java.BinaryClass.loadNested(BinaryClass.java:180)
      at sun.tools.javac.BatchEnvironment.loadDefinition(BatchEnvironment.java:507)
      at sun.tools.java.Environment.loadDefinition(Environment.java:167)
      at sun.tools.java.Environment.loadDefinition(Environment.java:167)
      at sun.tools.java.Environment.loadDefinition(Environment.java:167)
      at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.java:112)
      at sun.tools.javac.SourceClass.checkSupers(SourceClass.java:728)
      at sun.tools.javac.SourceClass.resolveTypeStructure(SourceClass.java:1093)
      at sun.tools.javac.SourceClass.basicCheck(SourceClass.java:962)
      at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.java:122)
      at sun.tools.javac.Main.compile(Main.java:345)
      at sun.tools.javac.Main.main(Main.java:571)
      (Review ID: 23645)
      ======================================================================

            tturnidgsunw Todd Turnidge (Inactive)
            rmandelsunw Ronan Mandel (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: