[foreign] RFR 8218281: jextract native library related command line options should be revisited

Sundararajan Athijegannathan sundararajan.athijegannathan at oracle.com
Tue Feb 5 16:56:07 UTC 2019


Thanks for the review. Removed WARN mode and adjusted "action" as a 
lambda in MissingSymbolAction enum as suggested.

Updated: http://cr.openjdk.java.net/~sundar/8218281/webrev.02/

Thanks,
-Sundar

On 05/02/19, 6:03 PM, Maurizio Cimadamore wrote:
> Looks good.
>
> One minor question/comment is if you thought about replacing the 
> MissingActionEnum with lambda expression set up in Main - e.g. 
> MissingActionEnum could be, essentially a Consumer<String>.
>
> I'm saying this because most of the action refer to methods in Main 
> itself (e.g. format), and the actions are also simple enough that I 
> think the code would not be too bad?
>
> Or, you could merge the enum and lambda approach together:
>
>
> public enum MissingSymbolAction {
>      ERROR(name -> throw new 
> RuntimeException(Main.format("err.symbol.not.found", name)),
>      EXCLUDE(name -> err.println(Main.format("warn.symbol.excluded", 
> name)),
>      WARN(name -> err.println(Main.format("warn.symbol.not.found", 
> name)),
>      IGNORE(name -> {});
>
>      final Consumer<String> action;
>
>      ...
> }
>
>
> Then SymbiolFilter can just fetch the action corresponding to the enum 
> constant, and execute it with given name, no need for a switch (or, 
> maybe you do to be able to 'return null' in case symbol is excluded).
>
>
> Also, looking back, I'm not 100% sure of the need for the distinction 
> between WARN and EXCLUDE. They basically do the same thing - they 
> produce a warning - but the latter also omits the symbol from the 
> resulting API. The question is - is there ever a case where it makes 
> sense to generate an API point under these circumstances? Wouldn't the 
> code always fall over at runtime when invoking that method (or, more 
> likely, early when binding the interface) ?
>
> So, to me ERROR is good - we want to fail if some mismatch is detected.
>
> If we don't want to fail, then I think we should take action towards 
> generating something that "makes sense" - at which point the only 
> distinction I see is: do I want to be bothered about (WARN), or not 
> (IGNORE) ?
>
>
> And, last (general) comment, we need to capture these options 
> somewhere in the MD file.
>
> Maurizio
>
>
> On 04/02/2019 16:22, Sundararajan Athijegannathan wrote:
>
>> Hi Anthony,
>>
>>
>> Thanks for spotting those!
>>
>>
>> Updated:  https://cr.openjdk.java.net/~sundar/8218281/webrev.01/
>>
>>
>> Thanks,
>> -Sundar
>>
>>
>> On 04/02/19, 9:25 PM, Anthony Vanelverdinghe wrote:
>>>
>>> Hi Sundar
>>>
>>> In JModWriter.java there is:
>>>
>>> -            if (ctx.libraryPaths.isEmpty() && 
>>> ctx.linkCheckPaths.isEmpty()) {
>>>
>>> +            if (ctx.libraryPaths.isEmpty() && 
>>> ctx.libraryPaths.isEmpty()) {
>>>
>>> but now both conditions are the same, so the second can be removed.
>>>
>>> In Main.java there is an unintended whitespace change:
>>>
>>> -        ctx.setGenStaticForwarder(staticForwarder && 
>>> options.has("l"));
>>>
>>> +        ctx.setGenStaticForwarder(staticForwarder&& options.has("l"));
>>>
>>> Kind regards
>>>
>>> Anthony
>>>
>>> ------------------------------------------------------------------------ 
>>>
>>> *From:* panama-dev <panama-dev-bounces at openjdk.java.net> on behalf 
>>> of Sundararajan Athijegannathan 
>>> <sundararajan.athijegannathan at oracle.com>
>>> *Sent:* Monday, February 4, 2019 3:24:00 PM
>>> *To:* 'panama-dev at openjdk.java.net'
>>> *Subject:* [foreign] RFR 8218281: jextract native library related 
>>> command line options should be revisited
>>> Please review.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8218281
>>> Webrev: https://cr.openjdk.java.net/~sundar/8218281/webrev.00/ 
>>> <https://cr.openjdk.java.net/%7Esundar/8218281/webrev.00/>
>>>
>>> Thanks,
>>> -Sundar


More information about the panama-dev mailing list