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=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,ace3fca092a457cd X-Google-Attributes: gid103376,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news4.google.com!out01b.usenetserver.com!news.usenetserver.com!in02.usenetserver.com!news.usenetserver.com!in03.usenetserver.com!news.usenetserver.com!wn11feed!worldnet.att.net!bgtnsc04-news.ops.worldnet.att.net.POSTED!53ab2750!not-for-mail Newsgroups: comp.lang.ada From: anon@anon.org (anon) Subject: Re: Unary operator after binary operator: legal or not? => Compiler Error Reply-To: anon@anon.org (anon) References: X-Newsreader: IBM NewsReader/2 2.0 Message-ID: Date: Tue, 31 Jul 2007 08:16:42 GMT NNTP-Posting-Host: 12.64.128.192 X-Complaints-To: abuse@worldnet.att.net X-Trace: bgtnsc04-news.ops.worldnet.att.net 1185869802 12.64.128.192 (Tue, 31 Jul 2007 08:16:42 GMT) NNTP-Posting-Date: Tue, 31 Jul 2007 08:16:42 GMT Organization: AT&T Worldnet Xref: g2news2.google.com comp.lang.ada:1287 Date: 2007-07-31T08:16:42+00:00 List-Id: In , anon@anon.org (anon) writes: >This maybe a compiler error. It seams that my GNAT 2.1 from (NYC) as >well as my GNAT 4.3 (GNU) and my Adacore GNAT 2005 (GPL) all state >the same that it there is a "missing operand". But if you use the >following: > return "+"(Left) & "+"(Right); >or > return (+Left) & (+Right); >they both work > >>From LRM 4.4 .. 4.5 and LRM 6.6 states that the unary functions can be >redefined. The reason I say this may be an compiler error is because >the following will still give the same error: > >Compiling: xyz.adb (source file time stamp: 2007-07-30 03:00:04) > > 1. > 2. function Xyz (Left, Right : in integer) return integer is > 3. > 4. begin -- Xyz > 5. if +Left <= +Right then > 6. return +Left * +Right; > | > >>> missing operand > > 7. end if; > 8. end Xyz; > Forgot to add, in my modified math version, if you replace the "+Right" with "+7" which is a simple_expression it still will give an error. And because you could replace the "+7" with "-7", for negative numbers, which is also a simple_expression you still get an error. This means you have found a compiler error! This needs to be reported! >In , "Jeffrey R. Carter" writes: >>Here's something confusing I encountered: >> >>with Ada.Strings.Unbounded; >> >>function Xyz (Left, Right : in Ada.Strings.Unbounded.Unbounded_String) >>return String is >> function "+" (Right : in Ada.Strings.Unbounded.Unbounded_String) >> return String renames Ada.Strings.Unbounded.To_String; >>begin -- Xyz >> if +Left <= +Right then >> return +Left & +Right; >> -- ^ Error reported here. >> end if; >>end Xyz; >> >>A compiler reports "missing operand", referencing the space after the "&". >> >>Why then does it accept the comparison in the previous line? Both are >> >>+Left [binary operator] +Right >> >>-- >>Jeff Carter >>"Have you gone berserk? Can't you see that that man is a ni?" >>Blazing Saddles >>38 >