Re: Interfaces and private types
- From: Philippe Tarroux <philippe.tarroux@xxxxxxxx>
- Date: Tue, 29 Jan 2008 14:08:25 +0100
Georg Bauhaus a écrit :
Philippe Tarroux schrieb:Yes I agree if one adopt the principle that an explicity declaration is more readable (and more in accordance with the general Ada philosophy). It is indeed true that the relation between the public and private T's was implicit in my example.Randy Brukardt wrote:Specifically, it violates 7.3(7.3/2): "the partial view shall be aAs it is written the compiler i use doesn't mention any error and i interpreted this construct as legal because :
descendant of an interface type (see 3.9.4) if and only if the full type is
a descendant of the interface type."
As written, this is illegal because type T does not have the interface Int.
1/ the interface is synchronized thus allowing to derive concurrent or non concurrent types
2/ The partial view is a descendant of the interface type
3/ The full view precises that the partial view correspond to a concurrent type but hides this detail to the user
I'd rather think that the compiler should diagnose conflicting
declaration of T in the private part as the private T does not
declare a relation with the public T.
I agree too.Your solution removes the ambiguity.
If you do not want to derive T publicly, why not
package Test_Interfaces is
type Int is synchronized interface;
procedure Init (I : in out Int) is abstract;
type T is limited private;
private
task type T is new Int with
overriding entry Init;
end T;
end Test_Interfaces;
Philippe Tarroux
.
- References:
- Interfaces and private types
- From: Philippe Tarroux
- Re: Interfaces and private types
- From: Randy Brukardt
- Re: Interfaces and private types
- From: Philippe Tarroux
- Re: Interfaces and private types
- From: Georg Bauhaus
- Interfaces and private types
- Prev by Date: Re: Allocators and memory reclamation
- Next by Date: Re: Concurrency and interfaces
- Previous by thread: Re: Interfaces and private types
- Next by thread: Re: Interfaces and private types
- Index(es):
Relevant Pages
|