CVS difference for ai05s/ai05-0080-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file ai05s/ai05-0080-1.txt

--- ai05s/ai05-0080-1.txt	2008/01/17 07:24:41	1.1
+++ ai05s/ai05-0080-1.txt	2008/03/07 06:15:19	1.2
@@ -1,5 +1,6 @@
-!standard 3.1(7)                                           08-01-16    AI05-0080-1/01
+!standard 3.1(7)                                           08-02-22    AI05-0080-1/02
 !class binding interpretation 08-01-16
+!status ARG Approved  7-0-1  08-02-10
 !status work item 08-01-16
 !status received 07-12-07
 !priority Low
@@ -16,7 +17,7 @@
 
 We often have arguments about whether "object" or "type" means exactly that,
 or whether it really means "view of an object" or "view of a type". It's
-generally agreed that the Standard would make any sense if this is not
+generally agreed that the Standard would not make any sense if this is not
 applied, because there are many places where a view is what is being considered
 (otherwise privacy would be broken).
 
@@ -30,23 +31,24 @@
 
 !recommendation
 
-(See Summary.)
+(See summary.)
 
 !wording
 
 Add after 3.1(7):
 
 When it is clear from context, the term *object* is used in place of *view
-of an object*. Similarly, the term *type" is used in place of "view of a type".
+of an object*. Similarly, the terms *type* and *subtype* are used in place
+of *view of a type* and *view of a subtype*, respectively.
 
 AARM Note:
 
-  Rules interpreted at compile-time generally refer to views of entities,
+  Rules interpreted at compile time generally refer to views of entities,
   rather than the entities themselves. This is necessary to preserve privacy;
   characteristics that are not visible should not be used in compile-time
   rules. Thus, Static Semantics and Legality Rules generally implicitly have 
-  "view of". Legality Rules that need to ignore the private part (for instance,
-  those involving representation items) are the exception to this interpretation.
+  "view of". Legality Rules that need to look into the private part 
+  are the exception to this interpretation.
 
   On the other hand, run-time rules can work either way, so "view of" should
   not be assumed in Dynamic Semantics rules.
@@ -58,14 +60,37 @@
 as many bugs as it would fix. So we go with a blanket statement.
 
 We have to be careful with the wording, because it is not quite all of the time
-(even at compile-time) that "view of" should be assumed. It is especially hard
+(even at compile time) that "view of" should be assumed. It is especially hard
 to "unassume" it when it is inappropriate. Thus the wording is intentionally vague.
 
-Note that this wording implies that "view of" should not be assumed in dynamic
-rules; any that need "view of" and do not have it are wrong.
-
---!corrigendum 13.9(7)
-
+It should be noted that we were not able to come up with an example of a compile
+time rule that should not assume "view of". In particular, the example of
+representation items for types was suggested, but since those have to be the same
+for all views, there is no difference between using a view of the type and using
+the type itself. In addition, there are a few rules written in terms of the
+full type, which clearly is specifying which view to use. On the other hand,
+given the sheer size of the Ada Standard, it would be foolhardy to assume that
+there is no such case anywhere, and this is a non-critical fix, so we don't want
+it to unintentionally break the standard somewhere else.
+
+Note that the intent (as reflected by the AARM Note) is that "view of" should not
+be assumed in dynamic rules; any that need "view of" and do not have it are wrong.
+
+!corrigendum 3.1(7)
+
+@dinsa
+All declarations contain a @i<definition> for a @i<view> of an entity. A view
+consists of an identification of the entity (the entity @i<of> the view), plus
+view-specific characteristics that affect the use of the entity through that view
+(such as mode of access to an object, formal parameter names and defaults for
+a subprogram, or visibility to components of a type). In most cases, a declaration
+also contains the definition for the entity itself (a renaming_declaration is
+an example of a declaration that does not define a new entity, but instead
+defines a view of an existing entity (see 8.5)).
+@dinst
+When it is clear from context, the term @i<object> is used in place of @i<view
+of an object>. Similarly, the terms @i<type> and @i<subtype> are used in place of
+@i<view of a type> and @i<view of a subtype>, respectively.
 
 !ACATS Test
 

Questions? Ask the ACAA Technical Agent