Use of formal private type in full type declaration AI-00849/00 1 89-11-19 ra RE !standard 12.03.02 (04) 89-11-19 AI-00849/00 !class ramification 89-11-19 !status received 89-11-19 !topic Use of formal private type in full type declaration !summary 89-11-19 !question 89-11-19 !response 89-11-19 !appendix 89-08-10 ***************************************************************************** !section 12.03.02 (04) Hans Hurvig 89-08-10 83-01329 !version 1983 !topic Use of formal private type in full type declaration !reference 7.4.1(3), AI-00037 AI-00037 raises an issue regarding the use of a formal private type, but does not answer it specificly: generic type T is private; package GP is type PRIV is private; private type PRIV is new T; end GP; Does the full type declaration constitute a use of T which is prohibited by 12.3.2(4)? I think not, because 7.4.1(3) does not call for defaults, etc. So presumably the following is not prohibited: type R ( D: INTEGER := 7 ) is record null; end record; package IP is new GP ( R ); But in the instance IP, the use of R as a full type is illegal. According to AI-00037, it was decided rather late that the full type could not be unconstrained with discriminants, even if they had defaults. What was the reason for that? Reversing that decission would be the last step towards a major unification, where there is only one special class of types (say 'unbouned types') whose use is restricted: 1. Unconstrained array types. 2. Unconstrained types with discriminants without defaults.