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,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 10.31.107.211 with SMTP id k80mr12547825vki.15.1498858176610; Fri, 30 Jun 2017 14:29:36 -0700 (PDT) X-Received: by 10.36.26.85 with SMTP id 82mr578547iti.6.1498858176573; Fri, 30 Jun 2017 14:29:36 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!2.eu.feeder.erje.net!feeder.erje.net!2.us.feeder.erje.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!m54no1671335qtb.1!news-out.google.com!s132ni2935itb.0!nntp.google.com!v202no327224itb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Fri, 30 Jun 2017 14:29:36 -0700 (PDT) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=82.8.94.50; posting-account=7NSrMAoAAACQXGDiUf5Zzn18ZM31fxb5 NNTP-Posting-Host: 82.8.94.50 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <7f7a804e-b90d-4a60-b759-21ae14da3835@googlegroups.com> Subject: Puzzled by SPARK global aspect From: digitig Injection-Date: Fri, 30 Jun 2017 21:29:36 +0000 Content-Type: text/plain; charset="UTF-8" Xref: news.eternal-september.org comp.lang.ada:47243 Date: 2017-06-30T14:29:36-07:00 List-Id: Suppose in my package specification I have type Quadrant_Specification_Array is array(Global.Quadrant_X_Index'Range, Global.Quadrant_Y_Index'Range) of Quadrant_Specification; (With QuadrantSpecification being a record type) and in my package body I have: function N_Total_Klingons return Global.Klingon_Counter with Refined_Global => (Input => Quadrant_Specifications) is Total: Global.Klingon_Counter := 0; begin for X in Quadrant_Specifications'Range loop for Y in Quadrant_Specifications'Range(2) loop Total := Total + Quadrant_Specifications(X, Y).N_Klingons; end loop; end loop; return Total; end N_Total_Klingons; Spark gives me an error useless refinement, subprogram "N_Total_Klingons" does not depend on abstract state with visible refinement But if I take the Refined_Global specification out I get the error "Quadrant_Specifications" must be listed in the Global aspect of "N_Total_Klingons" I feel I'm losing either way - if I do specify it I'm wrong, if I don't specify it I'm wrong. How *do* I fix this?