From: Adam Beneschan <adam@irvine.com>
Subject: Re: Bug with variant derived from interface?
Date: Wed, 3 Jun 2009 15:12:56 -0700 (PDT)
Date: 2009-06-03T15:12:56-07:00 [thread overview]
Message-ID: <8087ca47-e546-47ae-8cf0-13099dbe7375@s28g2000vbp.googlegroups.com> (raw)
In-Reply-To: 78np2hF1ndha3U1@mid.individual.net
On Jun 3, 10:09 am, "Alex R. Mosteo" <alejan...@mosteo.com> wrote:
> Before reporting a bug to Adacore I'd like to have your opinion. With the
> following test program I get the error below in both GPL2008/2009.
>
> procedure Bugcase is
>
> -- type Base is abstract tagged null record;
> -- This works
>
> type Base is interface;
> -- This does not work.
>
> type Derived_Ok (X : Boolean) is new Base with null record;
>
> type Derived_Also_Ok (X : Boolean) is new Base with record
> Y : Integer;
> end record;
>
> type Derived_Bad (X : Boolean) is new Base with record
> -- Above line is the one failing.
> case X is
> when others => null;
> end case;
> end record;
>
> begin
> null;
> end Bugcase;
>
> $ gnatmake bugcase.adb
> gcc -c bugcase.adb
> bugcase.adb:14:09: call to abstract function must be dispatching
> gnatmake: "bugcase.adb" compilation error
I don't see any reason this program should be illegal. The message
involving a "call to abstract function" is certainly wrong, because
there aren't any abstract function calls involved. (Just as a wild
guess, I'm guessing that the abstract function GNAT is complaining
about is "=", and there's some special subroutine that tries to
compose the equality function for variant records that isn't handling
this case right... did I come close???)
-- Adam
next prev parent reply other threads:[~2009-06-03 22:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-03 17:09 Bug with variant derived from interface? Alex R. Mosteo
2009-06-03 22:12 ` Adam Beneschan [this message]
2009-06-04 8:14 ` Alex R. Mosteo
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox