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: 103376,5948949183cbd10c,start X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Received: by 10.180.84.234 with SMTP id c10mr42545wiz.4.1351655922910; Tue, 30 Oct 2012 20:58:42 -0700 (PDT) Path: ha8ni90417wib.1!nntp.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Bill Findlay Newsgroups: comp.lang.ada Subject: Dynamic_Predicate with a generic Date: Wed, 31 Oct 2012 03:58:40 +0000 Message-ID: Mime-Version: 1.0 X-Trace: individual.net ns1ZoHcvowYgN3UH9rp+BgL0Ocje+3v+dhMnSCDr8W4xk5GKyfrjPpokITPppglHZ7 Cancel-Lock: sha1:uZLDH7LUI99RoWD25ID2chp9U9Y= User-Agent: Microsoft-Entourage/12.33.0.120411 Thread-Topic: Dynamic_Predicate with a generic Thread-Index: Ac23HALyBasPSW4jpUOp6XgQ6vMRhQ== Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Date: 2012-10-31T03:58:40+00:00 List-Id: The following code compiles: > > type integral is new Integer; > type unsigned_integral is mod 2**32; > > subtype nat_integral is integral range 0 .. integral'Last; > subtype pos_integral is integral range 1 .. integral'Last; > > -- returns True iff nr is a prime number > function is_prime (nr : integral) return Boolean; > > subtype prime_number is integral > with Dynamic_Predicate => is_prime(prime_number); > But if the types integral and unsigned_integral are given by generic type parameters, thus: > generic > type integral is range <>; > type unsigned_integral is mod <>; > package prime_numbers is > > pragma Elaborate_Body; > > subtype nat_integral is integral range 0 .. integral'Last; > subtype pos_integral is integral range 1 .. integral'Last; > > -- returns True iff nr is a prime number > function is_prime (nr : integral) return Boolean; > > subtype prime_number is integral > with Dynamic_Predicate => is_prime(prime_number); I get the error message: > > ==============Error messages for source file: prime_numbers.ads > 20. with Dynamic_Predicate => is_prime(prime_number); > | >>>> invalid use of subtype mark in expression or call What am I missing? -- Bill Findlay with blueyonder.co.uk; use surname & forename;