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.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: a07f3367d7,aaabba5db6b5df34 X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news4.google.com!feeder.news-service.com!feeder.ecngs.de!ecngs!feeder2.ecngs.de!88.198.40.140.MISMATCH!weretis.net!feeder2.news.weretis.net!nuzba.szn.dk!news.jacob-sparre.dk!pnx.dk!not-for-mail From: "Randy Brukardt" Newsgroups: comp.lang.ada Subject: Re: Min/Max attribute makes promises it can't keep Date: Sat, 1 May 2010 00:42:53 -0500 Organization: Jacob Sparre Andersen Message-ID: References: <98b7e6f2-32ed-465c-9a52-541b7878ca86@y17g2000yqd.googlegroups.com> <9b17e781-f46a-4384-8809-b16602d10114@y30g2000yqh.googlegroups.com> <880dc0f0-7fff-440d-8aad-6ce745fcfed8@h27g2000yqm.googlegroups.com> <246a7cec-bd5f-4c48-a6cb-3874080c19ab@y17g2000yqd.googlegroups.com> <591866ec-fa46-440c-b6fc-3092985ae3df@r27g2000yqn.googlegroups.com> <8ab2d2d1-b7dc-47bf-824f-4cab334a3fd6@11g2000yqr.googlegroups.com> <1pbp1hhh5yb9k.b6b9xs33b4od$.dlg@40tude.net> <4bd841e7$0$7658$9b4e6d93@newsspool1.arcor-online.net> <1t4extnm6iluj.r4x652cntogc$.dlg@40tude.net> <1p28brlj9yc3k$.1nv0ey1aadvoi$.dlg@40tude.net> NNTP-Posting-Host: static-69-95-181-76.mad.choiceone.net X-Trace: munin.nbi.dk 1272692577 27647 69.95.181.76 (1 May 2010 05:42:57 GMT) X-Complaints-To: news@jacob-sparre.dk NNTP-Posting-Date: Sat, 1 May 2010 05:42:57 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5843 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-RFC2646: Format=Flowed; Original Xref: g2news2.google.com comp.lang.ada:11266 Date: 2010-05-01T00:42:53-05:00 List-Id: "Dmitry A. Kazakov" wrote in message news:1p28brlj9yc3k$.1nv0ey1aadvoi$.dlg@40tude.net... > On Wed, 28 Apr 2010 16:07:24 -0500, Randy Brukardt wrote: > >> As for the initial concern about giving a subtype name, in the case of >> literals you have to give one somewhere (since a literal can be of many >> different types, and the results can vary depending on the type used -- >> not >> for 'Length, but for 'Last and most other properties). > > No problem, Ada supports overloading in the result type. E.g. abs (-1) is > OK. That doesn't help. Consider: type My_String is array (Natural range <>) of Character; Now, if you wrote: "ABC"'First The answer depends on whether the type of the prefix is String or My_String, but the type is Integer'Base in both cases. No amount of overloading will help. The language does not want the compiler to have to list out all of the possible types for a string literal, figure out the appropriate bounds for all of them, take all of the ones with the appropriate index type, and then allow the attribute if the answer is the same. (Recall that *every* Ada program has at least three string types available.) Similar rules are used for aggregates, the operand of a type conversion, and other places. No context can be used as figuring out an answer if it could is just too difficult. (There are a couple of exceptions for attribute prefixes, particularly 'Access, as we found that the typical rule is too limiting, but those are tightly bounded.) Randy.