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

Cyclic inheritance error reported when multiple classes in source file

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 1.4.1
    • 1.4.0
    • tools
    • hopper
    • sparc
    • solaris_2.6
    • Verified


      Here is a narrowed down test case:

      frog:~/workspaces/test/falsecycle $ cat -n DefaultFocusManager.java
           1 class DefaultFocusManager extends FocusManager {}
      frog:~/workspaces/test/falsecycle $ cat -n FocusManager.java
           1 class FocusManager {}
           2
           3 class DelegatingDefaultFocusManager extends DefaultFocusManager {}
      frog:~/workspaces/test/falsecycle $ /usr/java/bin/javac DefaultFocusManager.java
      ./FocusManager.java:3: cyclic inheritance involving DefaultFocusManager
      class DelegatingDefaultFocusManager extends DefaultFocusManager {}
                                                  ^
      1 error
      frog:~/workspaces/test/falsecycle $

      ###@###.### 2001-10-08

      ============================================================================================

      Here is the failure we encountered on a completely fresh bringover:

      ../../../src/share/classes/javax/swing/FocusManager.java:137: cyclic inheritance involving javax.swing.DefaultFocusManager
      final class DelegatingDefaultFocusManager extends DefaultFocusManager {
                                                        ^
      ../../../src/share/classes/javax/swing/FocusManager.java:64: incompatible types
      found : javax.swing.DelegatingDefaultFocusManager
      required: javax.swing.FocusManager
                  return new DelegatingDefaultFocusManager(manager);
                         ^
      ../../../src/share/classes/javax/swing/FocusManager.java:99: inconvertible types
      found : javax.swing.FocusManager
      required: javax.swing.DelegatingDefaultFocusManager
                  (aFocusManager instanceof DelegatingDefaultFocusManager)
                   ^
      ../../../src/share/classes/javax/swing/FocusManager.java:100: inconvertible types
      found : javax.swing.FocusManager
      required: javax.swing.DelegatingDefaultFocusManager
                      ? ((DelegatingDefaultFocusManager)aFocusManager).getDelegate()
                                                        ^
      ../../../src/share/classes/javax/swing/FocusManager.java:142: cannot resolve symbol
      symbol : variable gluePolicy
      location: class javax.swing.DelegatingDefaultFocusManager
              setDefaultFocusTraversalPolicy(gluePolicy);
                                             ^
      Note: Some input files use or override a deprecated API.
      Note: Recompile with -deprecation for details.
      5 errors
      gnumake[2]: *** [.compile.classlist] Error 1
      gnumake[2]: Leaving directory `/export/disk03/awt/nightly/build-ws/make/java/awt'
      gnumake[1]: *** [all] Error 1
      gnumake[1]: Leaving directory `/export/disk03/awt/nightly/build-ws/make/java'
      gnumake: *** [all] Error 1


      The output of the build is in
      /net/jano/export/disk03/awt/nightly/inherit-work/buildoutput1

      This workspace is a snapshot of the AWT workspace. It is somewhere
      between merlin build 68 and merlin build 69.
       

      How to reproduce:

      There is a workspace prepared at:
      /net/jano/export/disk03/awt/nightly/inherit-work

      cd /inherit-work/build/solaris-sparc/classes/java/awt
      rm *.class

      cd /inherit-work/make/java/awt
      gnumake all

      ---> build fails as above

      You could try to comment out lines from java_awt.jmk in
      /make/minclude/java_awt.jmk to attempt to narrow it down to particular classes.
      Simply doing
      cd /inherit-work/build/solaris-sparc/classes/java/awt
      rm *ocus*
      and then doing an incremental build isn't enough to cause the failure.
      This is about as minimal a procedure as I could come up with to reproduce it.
      The incremental build fails in a few seconds: see
      /inherit-work/buildoutput2
      for the output of an incremental build as described above.

      Here is the inheritance tree:

      java.awt.KeyboardFocusManager
          |
      java.awt.DefaultKeyboardFocusManager
          |
      javax.swing.FocusManager
          |
      javax.swing.DefaultFocusManager
          |
      javax.swing.DelegatingDefaultFocusManager

      Note: We think the build succeeds if you simply restart it again
      after the failure.

      Note: the problem seems to be related to the fact that the class
      javax.swing.DelegatingDefaultFocusManager is located in the same file as
      javax.swing.FocusManager. When we put javax.swing.DelegatingDefaultFocusManager
      into its own file, the problem disappeared.

            gafter Neal Gafter (Inactive)
            ehawkessunw Eric Hawkes (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: