comp.lang.ada
 help / color / mirror / Atom feed
* Problem with type derivation and packages
@ 1996-02-18  0:00 Jonas Nygren
  0 siblings, 0 replies; only message in thread
From: Jonas Nygren @ 1996-02-18  0:00 UTC (permalink / raw)



I am experiencing a problem which I don't understand
and followingly can't correct. I hope somebody in
c.l.a can help me.

I try to implement a container type which share data
structures. This works in a different version but when 
I reorganized my code I got a strange error message
from Gnat (3.01, Sun Solaris). When compiling my
little test program, Test2, I got the following
messages from Gnat:

gcc -c -k8 test2.adb
test2.adb:3:04: expected private type "Reference" defined at sharobje.ads:26
test2.adb:3:04: found private type "Container" defined at containe.ads:17

Test2:
======

with Int_Conts; use Int_Conts.Int_Cont;
procedure Test2 is   
   C : Container;
begin
   null;   
end Test2;

I simply cannot understand why Gnat expects 'private type "Reference"'
when I have declared a Container? I want to declare a Container
and not a Reference! What am I doing wrong?

Any help is appreciated,

/jonas


Below follows the rest of the spec files - some shortened 
to problem essentials. These files can be run through Gnat
without any error reports.

Int_Conts:
==========

with Containers;
package Int_Conts is
   package Int_Cont is new Containers(Integer);
end Int_Conts;


Containers:
===========

with Shared_Objects;
generic
   type Container_Item is private;
package Containers is
   type Container is private;
   
   -- some decls removed
private
   type Store is array(Index range <>) of aliased Container_Item;
   
   package Shared_Store is new Shared_Objects(Store);
   use Shared_Store;

   type Container is new Shared_Store.Reference;
   
   -- some decls removed

end Containers;


Shared_Objects:
===============

with Ada.Finalization;
generic
   type Object(<>) is private;
package Shared_Objects is

   type Object_Access is access all Object;

   type Reference is private;

   -- some decls removed
private
   type Shared_Object is record
      Ref_Count : Natural;
      Obj_Ref : Object_access;
   end record;
   type Shared_Object_Ref is access all Shared_Object; 

   type Reference is new Ada.Finalization.Controlled with record
     Ref : Shared_Object_Ref := null;
   end record;

   -- some decls removed
end Shared_Objects;






^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~1996-02-18  0:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1996-02-18  0:00 Problem with type derivation and packages Jonas Nygren

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