JDK-4930507 : InnerClass attribute required for types mentioned in signatures
  • Type: Bug
  • Component: specification
  • Sub-Component: vm
  • Affected Version: 5.0
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_8
  • CPU: generic
  • Submitted: 2003-09-30
  • Updated: 2012-10-09
  • Resolved: 2007-06-08
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6
6 1.6Fixed
Related Reports
Relates :  
Relates :  
Description
We recently disovered (4909550) that the InnerClass attribute is a necessary
piece of information in order for a compiler to typecheck against class
files in which the inner class is used only in a signature but not in the
constant pool.  The VM spec does not require an InnerClass attribute in this
case, but for interoperability it must.

Please update the VM spec to require an InnerClass attribute for any inner
class that is used in a signature.  This include member signatures, signature
attributes, and the generic local variable table.

Comments
EVALUATION The JVMS 3ed section on InnerClasses will say "If the constant pool of a class or interface C contains a CONSTANT_Class_info entry which represents a class or interface that is not...". It will not require CONSTANT_Utf8_info CP entries to be interpreted as (inner) class names that generate additional InnerClasses entries. If an InnerClasses entry is desired for an inner class mentioned only in a signature, then that is properly a matter for a compilation spec, not the VM spec.
08-02-2007