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,dbbbb21ed7f581b X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news2.google.com!goblin1!goblin2!goblin.stu.neva.ru!aioe.org!nospam From: "John B. Matthews" Newsgroups: comp.lang.ada Subject: Re: Operation can be dispatching in only one type Date: Wed, 02 Dec 2009 07:35:39 -0500 Organization: The Wasteland Message-ID: References: <025105f2-5571-400e-a66f-ef1c3dc9ef32@g27g2000yqn.googlegroups.com> <0f177771-381e-493b-92bb-28419dfbe4e6@k19g2000yqc.googlegroups.com> <1nbcfi99y0fkg.1h5ox2lj73okx$.dlg@40tude.net> <59acf311-3a4a-4eda-95a3-22272842305e@m16g2000yqc.googlegroups.com> <4b150869$0$6732$9b4e6d93@newsspool2.arcor-online.net> <18vlg095bomhd.8bp1o9yysctg$.dlg@40tude.net> <4b152ffe$0$7615$9b4e6d93@newsspool1.arcor-online.net> <19nhib6rmun1x$.13vgcbhlh0og9$.dlg@40tude.net> <4b1557d0$0$7623$9b4e6d93@newsspool1.arcor-online.net> <4b15bf2b$0$7623$9b4e6d93@newsspool1.arcor-online.net> <1jcbtmi5rztyp$.norvlhez9i9$.dlg@40tude.net> NNTP-Posting-Host: LQJtZWzu+iKlBROuDg+IUg.user.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org X-Notice: Filtered by postfilter v. 0.8.0 Cancel-Lock: sha1:T2i/PPfI+Q38vHNZewownus4yhI= User-Agent: MT-NewsWatcher/3.5.3b3 (Intel Mac OS X) Xref: g2news1.google.com comp.lang.ada:8282 Date: 2009-12-02T07:35:39-05:00 List-Id: In article <1jcbtmi5rztyp$.norvlhez9i9$.dlg@40tude.net>, "Dmitry A. Kazakov" wrote: Georg Bauhaus wrote: > > From the Java point of view, there are no false positives > > or negatives. > > Of course there are, because it is a halting problem. So you need > some optimistic or pessimistic estimation of: > > if False then > Print (X.Tire); -- Is this illegal? If yes, that is a false positive > end if; It would be indeterminate but for doing "a specific conservative flow analysis." In the specific cases of boolean constant expressions and if statements, if (true) { spare = new Tire(); } // spare assigned if (1 == 1) { spare = new Tire(); } // spare assigned if (false) { spare = new Tire(); } // spare unassigned if (1 == 2) { spare = new Tire(); } // spare unassigned if (always()) { spare = new Tire(); } // spare unassigned static boolean always() { return true; } In particular, spare remains unassigned even though the function always() is always true. In Ada, a certain compiler may warn 'variable "N" is assigned but never read' for the following: N : Integer; if False then N := 1; end if; I'm not especially advocating applying the Java rules to Ada, but I like the warning. -- John B. Matthews trashgod at gmail dot com