* Syntax for calling super implementation when overriding a method
@ 2019-04-01 18:59 Duncan Mak
2019-04-02 13:47 ` Per Bothner
0 siblings, 1 reply; 2+ messages in thread
From: Duncan Mak @ 2019-04-01 18:59 UTC (permalink / raw)
To: kawa mailing list
Hello Per,
I see that there's syntax (this) for referring to the current instance.
When I'm defining a class hierarchy, and I'd like to override a method in a
subclass, is there a similar syntax, i.e. (super)?
For now, I'm doing this (superclass:method instance ...), but it'd be nice
not having to explicitly name the superclass.
Thanks!
--
Duncan.
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Syntax for calling super implementation when overriding a method
2019-04-01 18:59 Syntax for calling super implementation when overriding a method Duncan Mak
@ 2019-04-02 13:47 ` Per Bothner
0 siblings, 0 replies; 2+ messages in thread
From: Per Bothner @ 2019-04-02 13:47 UTC (permalink / raw)
To: Duncan Mak, kawa mailing list
On 4/1/19 11:58 AM, Duncan Mak wrote:
> Hello Per,
>
> I see that there's syntax (this) for referring to the current instance.
>
> When I'm defining a class hierarchy, and I'd like to override a method in a
> subclass, is there a similar syntax, i.e. (super)?
>
> For now, I'm doing this (superclass:method instance ...), but it'd be nice
> not having to explicitly name the superclass.
The Kawa manual suggests using invoke-special, and has a few examples:
(invoke-special supersuper (this) 'methodname arg ...)
where 'methodname is '*init* in the case of a constructor.
However (as you and the manual also notes), this is annoyingly verbose.
One approach is as you suggest:
((super):methodname arg ...)
This would start by having (super) expand to a distinct variant of ThisExpr,
but changing the code-generation to call invokespecial.
An alternative (possibly easier to implement) might be
(invoke-super 'methodname arg ...)
Either of these would be a good project in terms of learning more about how Kawa works.
--
--Per Bothner
per@bothner.com http://per.bothner.com/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-04-02 13:47 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-01 18:59 Syntax for calling super implementation when overriding a method Duncan Mak
2019-04-02 13:47 ` Per Bothner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).