000323.2 B A F. Burton Java Java Interface definition

Add "interface" type to support the Java language.


=== PROPOSED MODIFICATIONS

Add to Figure 1:

    DW_TAG_interface_type Java

Change first sentence of 5.5.1 to:

    Structure, union, class, and interface types are
    represented by debugging information entries with
    the tags DW_TAG_structure_type, DW_TAG_union_type,
    DW_TAG_class_type and DW_TAG_interface_type,
    respectively.

Add to Figure 15:

    DW_TAG_interface_type <next-available-value>

Add to Appendix 1:

    DW_TAG_interface_type     DECL
                                    DW_AT_abstract_origin
                                    DW_AT_accessibility
                                    DW_AT_byte_size
                                    DW_AT_declaration
                                    DW_AT_name
                                    DW_AT_sibling
                                    DW_AT_start_scope


Approved.  Interface is semantically equivalent to class or struct.  A Java interface is
equivalent to an abstract class in C++.  Discussion about whether to create new tag or
to use struct resulted in decision to create new TAG rather than reuse DW_TAG_struct. 
Struct, class and union are separate TAGs, even if the semantic differences between struct
and class are minimal. Only the following attributes are expected:  DECL (standard source
location), DW_AT_accessibility, DW_AT_name, DW_AT_sibling, and DW_AT_start_scope.