From: DrPi <314@drpi.fr>
Subject: Re: GtkAda : Trying to derive a widget
Date: Fri, 9 Apr 2021 15:37:50 +0200 [thread overview]
Message-ID: <607058b0$0$6467$426a74cc@news.free.fr> (raw)
In-Reply-To: <s4ph0q$u8e$1@gioia.aioe.org>
Le 09/04/2021 à 14:23, Dmitry A. Kazakov a écrit :
> On 2021-04-09 13:42, DrPi wrote:
>> Le 09/04/2021 à 08:18, Dmitry A. Kazakov a écrit :
>
>>> Debug_Panel belongs to both Debug_Panel_Record'Class and
>>> Gtk_Scrolled_Window_Record'Class (and many other classes), so the
>>> ambiguity.
>>>
>> Surprising behaviour for a strongly typed language but there surely is
>> a good reason.
>
> It is strongly typed.
>
> The class is defined a set of types closed upon inheritance. When you
> declare a class-wide operation like Initialize it is meant to work on
> all instances of the class. There is no type violation or type coercion
> here.
>
> Initialize of Gtk_Scrolled_Window_Record'Class is defined on
> Gtk_Scrolled_Window_Record and all types derived from
> Gtk_Scrolled_Window_Record.
>
> When you declare another Initialize on Debug_Panel_Record'Class it is
> defined on Debug_Panel_Record and all its descendants.
>
> If you overload them, in a context you must disambiguate for
> Debug_Panel_Record and any descendant of.
>
> This is not different from Ada subtypes. For example, you can declare
>
> procedure Foo (I : Integer);
>
> and in some other package
>
> procedure Foo (I : Positive);
>
> If both become visible in a context you would have same problem.
>
Ok.
Thanks for clarifying.
prev parent reply other threads:[~2021-04-09 13:37 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-08 19:27 GtkAda : Trying to derive a widget DrPi
2021-04-08 22:27 ` Dmitry A. Kazakov
2021-04-09 5:28 ` DrPi
2021-04-09 6:12 ` J-P. Rosen
2021-04-09 11:32 ` DrPi
2021-04-09 6:18 ` Dmitry A. Kazakov
2021-04-09 11:42 ` DrPi
2021-04-09 12:23 ` Dmitry A. Kazakov
2021-04-09 13:37 ` DrPi [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox