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!news1.google.com!news.glorb.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? Reply-To: anon@anon.org (anon) References: X-Newsreader: IBM NewsReader/2 2.0 Message-ID: Date: Tue, 31 Jul 2007 08:01:17 GMT NNTP-Posting-Host: 12.64.128.192 X-Complaints-To: abuse@worldnet.att.net X-Trace: bgtnsc04-news.ops.worldnet.att.net 1185868877 12.64.128.192 (Tue, 31 Jul 2007 08:01:17 GMT) NNTP-Posting-Date: Tue, 31 Jul 2007 08:01:17 GMT Organization: AT&T Worldnet Xref: g2news2.google.com comp.lang.ada:1286 Date: 2007-07-31T08:01:17+00:00 List-Id: 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; 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