Version 1.4 of ai05s/ai05-0070-1.txt
!standard 3.9.4(18/2) 07-10-24 AI05-0070-1/01
!class binding interpretation 07-10-24
!status Amendment 201Z 08-11-26
!status WG9 Approved 08-06-20
!status ARG Approved 9-0-0 06-11-10
!status work item 07-10-24
!status received 07-10-03
!priority Low
!difficulty Easy
!qualifier Error
!subject Elaboration of interface types
!summary
The elaboration of an interface type creates the type and its first subtype.
!question
The dynamic semantics for interface types (3.9.4(18/2))
indicates that the elaboration "has no effect." That seems
inconsistent with all other non-incomplete types,
which at a minimum say:
The elaboration of a <blah>_type_definition creates
the <blah> type and its first subtype...
Is there any reason for this inconsistency? (No.)
!recommendation
(See Summary.)
!wording
Modify 3.9.4(18/2):
The elaboration of an interface_type_definition creates
the interface type and its first subtype.
AARM Discussion: An interface_list is made up of subtype_marks,
which do not need to be elaborated, so an interface_list does not either.
This is consistent with the handling of discriminant_parts. That means that
the only effect is the creation of the type.
!discussion
It's possible that types are created at runtime (although this is rare).
!corrigendum 3.9.4(18/2)
Replace the paragraph:
The elaboration of an interface_type_definition has no effect.
by:
The elaboration of an interface_type_definition creates
the interface type and its first subtype.
!ACATS Test
An ACATS test is not needed, as there still is no runtime effect here,
!appendix
From: Tucker Taft
Sent: Wednesday, October 3, 2007 9:47 AM
The dynamic semantics for interface types (3.9.4(18/2))
indicates that the elaboration "has no effect." That seems
inconsistent with all other non-incomplete types,
which at a minimum say:
The elaboration of a <blah>_type_definition creates
the <blah> type and its first subtype...
The AARM note indicates that there is no particular work
to be done at run-time since the subtype_marks don't
require dynamic elaboration. Be that as it may, at least
formally we think of the "creation" of a type as something
that happens dynamically.
****************************************************************
From: Robert Dewar
Sent: Wednesday, October 3, 2007 3:19 PM
In the SETL version it really *did* happen dynamically :-)
****************************************************************
Questions? Ask the ACAA Technical Agent