comp.lang.ada
 help / color / mirror / Atom feed
From: stefan-lucks@see-the.signature
Subject: Re: What makes a procedure call 'dispatching' in Ada?
Date: Fri, 20 Nov 2009 10:31:38 +0100
Date: 2009-11-20T10:31:38+01:00	[thread overview]
Message-ID: <Pine.LNX.4.64.0911201018540.19682@medsec1.medien.uni-weimar.de> (raw)
In-Reply-To: <he64pl$d8i$1@nntp.ilk.net>

If Foo is a tagged type, then 
   "procedure A(This: [in] [out] Foo)" 

expects *exactly* the same type as the actual parameter. If you want 
"either type Foo or any of its object-oriented children" you write

  "procedure B(This: [in] [out] Foo'Class)".

In your case, Foo is an abstract tagged type. As much as I seem to 
understand Ada, there is no way to actually call procedure A -- because 
you can't have any actuals of an abstract type. (Hey you guys out there, 
am I wrong?)

If I am right, it is very regrettable that the compiler doesn't issue a 
warning when compiling "procedure A(This: [in] [out] Foo)" for an abstract 
type Foo ... perhaps better, a revised Ada should prohibit that. 

So long

Stefan


On Fri, 20 Nov 2009, Markus Schoepflin wrote:


> ---%<---
> package FOOS is
> 
>    type FOO is abstract tagged null record;
> 
>    procedure P (THIS : in FOO);

-------> replace by 
     procedure P (THIS : in FOO'Class);

>    procedure A (THIS : in FOO) is abstract;
> 
> end FOOS;
> 
> package body FOOS is
> 
>    procedure P (THIS : in FOO)

-------> replace by 
     procedure P (THIS : in FOO'Class);

>    is
>    begin
>       A (THIS);
>    end;
> 
> end FOOS;
> --->%---
> 
> When trying to compile this, I get:
> 
> foos.adb:6:07: call to abstract function must be dispatching
> gnatmake: "foos.adb" compilation error
> 
> What is the compiler trying to tell me here? And how do I go about calling
> abstract procedures?
> 
> TIA,
> Markus
> 

-- 
------ Stefan Lucks   --  Bauhaus-University Weimar  --   Germany  ------
               Stefan dot Lucks at uni minus weimar dot de
------  I  love  the  taste  of  Cryptanalysis  in  the  morning!  ------




  reply	other threads:[~2009-11-20  9:31 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-20 13:15 What makes a procedure call 'dispatching' in Ada? Markus Schoepflin
2009-11-20  9:31 ` stefan-lucks [this message]
2009-11-20 14:10   ` Niklas Holsti
2009-11-20 13:27 ` Dmitry A. Kazakov
2009-11-20 13:43   ` Markus Schoepflin
2009-11-20 13:54     ` RasikaSrinivasan@gmail.com
2009-11-20 13:58     ` Markus Schoepflin
2009-11-20 14:19       ` Niklas Holsti
2009-11-21 14:07       ` Peter C. Chapin
2009-11-20 14:00     ` Niklas Holsti
2009-11-20 14:10     ` Dmitry A. Kazakov
2009-11-20 13:56 ` Niklas Holsti
2009-11-20 14:31   ` Dmitry A. Kazakov
2009-11-20 15:00     ` Niklas Holsti
2009-11-20 18:44       ` Dmitry A. Kazakov
2009-11-20 20:09         ` Niklas Holsti
2009-11-20 20:59           ` Dmitry A. Kazakov
2009-11-20 14:54 ` Ludovic Brenta
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox