This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fwd: @Override notations for member functions (e.g. onCreate on Android)


I mistankenly sent this message to Per directly; reposting to list
(where it was supposed to go anyway):

---------- Forwarded message ----------
From: Marius Kjeldahl <marius.kjeldahl@gmail.com>
Date: Sun, Feb 23, 2014 at 10:31 PM
Subject: Re: @Override notations for member functions (e.g. onCreate on Android)
To: Per Bothner <per@bothner.com>


Thanks, that works (even if it is not really supported yet as you say).

Let me share why I'm bothering you with this. I'm working on a set of
tutorials, both for myself and anybody else who wants to write Android
apps (and possibly even iOS apps, using RoboVM) using Kawa instead of
Java.

So my first test is simply to write the Android version of "hello
world" in Kawa. But instead of doing it elegantly (like Per in his
"view construction" tutorial) I am doing it more or less line-by-line
so people can understand how it translates. With the proper
understanding in place, moving on to something elegant is probably a
lot easier.

So I've created a gist here that seems to compile, but with a warning:

https://gist.github.com/mariusk/9177506

The compiler output is:

(compiling KawaActivity.scm to net.kjeldahl.kawatest)
KawaActivity.scm:15:26: warning - no accessible method 'add' in
android.widget.LinearLayout

It seems to compile fine, but is there any way to get rid of that
warning when constructing the LinearLayout? I realize it's related to
"magic" of setting properties, but from the warning I am not sure if
it actually found the right "setOrientation" or not. If it did find
it, it really should shut up, right?

Thanks,

Marius K.


On Sun, Feb 23, 2014 at 8:19 PM, Per Bothner <per@bothner.com> wrote:
> On 02/23/2014 05:18 AM, Marius Kjeldahl wrote:
>>
>> I can't seem to get them working, like in the following example:
>>
>> (define-simple-class MainActivity (android.app.Activity)
>>    ((onCreate (savedInstanceState :: android.os.Bundle)) (@Override)
>>     (invoke-special android.app.Activity (this) 'onCreate
>> savedInstanceState)
>> ...)
>>
>> Are @Override notation supported at all, and if so, how can I use them
>> on member functions like onCreate?
>
>
> You need to either write: (@java.lang.Override) or add a:
> (define-alias Override java.lang.Override)
>
> Kawa does not automatically "import" java.lang.*.  This could
> be changed of course.
>
> Note that Kawa currently doesn't check @Override annotations,
> and since it has @Retention(SOURCE) it is just ignored.
>
> Making Kawa check @Override annotation seems a worthwhile change.
> --
>         --Per Bothner
> per@bothner.com   http://per.bothner.com/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]