From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,4ed596f1f077b44e X-Google-Attributes: gid103376,public From: bobduff@world.std.com (Robert A Duff) Subject: Re: Primitive Operations Question Date: 1996/08/01 Message-ID: #1/1 X-Deja-AN: 171412256 references: <31FE812C.7B3D@ix.netcom.com> <31FFBFC8.32C9@ix.netcom.com> organization: The World Public Access UNIX, Brookline, MA newsgroups: comp.lang.ada Date: 1996-08-01T00:00:00+00:00 List-Id: In article <31FFBFC8.32C9@ix.netcom.com>, Vance Christiaanse wrote: >> Strange. The word "tagged" appears nowhere in the definition in of >> "primitive subprogram" in 3.2.3, so it shouldn't make any difference. >> >> - Bob > >Well, type extension of a tagged type in a procedure _could_ lead to >dangling references (see Rationale 4.3, package Outer). I suspect >that's why a compiler would be more careful to prevent it. Umm, you can only create dangling refs if the derived type is more nested than the parent type. And this is illegal -- that's a language rule, and has nothing to do with a particular compiler being careful. It also has nothing to do with which subprograms are primitive. See the "accessibility rules". On the other hand, it's perfectly legal to declare a root tagged type in a procedure, and derive from it in the same procedure. And this can't cause dangling refs. Of course, if you want any primitive ops, you will need to nest packages within that procedure. This is probably not common -- *most* tagged types will be declared at library level. - Bob