Looks good

PS. LiteralNode in catch should be an array literal, right? i.e., false
or 3.14 or "hello" won't be accepted as catch param.  Perhaps worth
adding a check (where catch param expression is checked). But, no biggie.

-Sundar


On 11/12/2016 12:17 AM, Srinivas Dama wrote:
> Hi,
>
> Please review
> webrev: http://cr.openjdk.java.net/~sdama/8156615/webrev.03/ 
> Bug : https://bugs.openjdk.java.net/browse/JDK-8156615 
>
> @Attila, Thank you for the comments.
>
> Regards,
> Srinivas
>
> -----Original Message-----
> From: Attila Szegedi [mailto:szege...@gmail.com] 
> Sent: Thursday, November 10, 2016 5:38 PM
> To: Nashorn-dev
> Subject: Re: RFR: 8156615:Catch parameter can be a BindingPattern in ES6 mode
>
> I’m still not happy with this, although we’re getting there :-)
>
> - you changed getException() to return Expression, even though Sundar asked 
> you to add a different method. I don’t like the fact that getException() 
> returns Expression, since it can’t be an arbitrary expression; it’s limited 
> to identifier and binding pattern, yet you have unchecked casts on its return 
> value on invocation everywhere now. Maybe keep your “Expression 
> getException()” change, but add “IdentNode getExceptionIdentifier() { return 
> (IdentNode)exception; }” and have the callers use that now instead. That way, 
> you encapsulate the cast and don’t force the users of the API to do it 
> everywhere, and it’s easier to track with call hierarchy in the IDEs which 
> callers presume the exception is an identifier.
>
> - the JavaDoc for getException() and setException() should be updated to 
> reflect the value can be a binding pattern. Please use the wording “binding 
> pattern” instead of just “pattern” in the documentation (including the field 
> declaration) to avoid ambiguity.
>
> - Maybe throw an IllegalArgumentException if either the constructor or 
> setException receive something that isn’t either an ident node or a binding 
> pattern. That way, you could enforce an invariant in the class that the types 
> of the expression are only legitimate ones. I’m unsure if it’s easy to 
> recognize the binding pattern or not (e.g. if it just looks like an 
> object/array literal).
>
> Attila.
>
>> On 10 Nov 2016, at 12:46, Srinivas Dama <srinivas.d...@oracle.com> wrote:
>>
>> Hi,
>>
>> Please review
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8156615
>> webrev: http://cr.openjdk.java.net/~sdama/8156615/webrev.02/
>>
>> Included all changes suggested with some modifications.
>>
>> Regards,
>> Srinivas
>>
>> -----Original Message-----
>> From: Attila Szegedi [mailto:szege...@gmail.com]
>> Sent: Tuesday, November 08, 2016 7:40 PM
>> To: Nashorn-dev
>> Subject: Re: RFR: 8156615:Catch parameter can be a BindingPattern in 
>> ES6 mode
>>
>> What Sundar said. Additionally:
>>
>> + if (exception instanceof IdentNode) {
>> +   this.exception = ((IdentNode) exception == null) ? null : 
>> + ((IdentNode) exception).setIsInitializedHere();
>>
>> First, casting an expression before a null comparison is silly :-).
>> Second, you don't even need to check for exception == null as "exception 
>> instanceof IdentNode" implies that exception != null. So that line should 
>> just be:
>>
>> + if (exception instanceof IdentNode) {
>> +   this.exception = ((IdentNode) exception).setIsInitializedHere();
>>
>> Attila.
>>
>>> On 08 Nov 2016, at 04:45, Sundararajan Athijegannathan 
>>> <sundararajan.athijegannat...@oracle.com> wrote:
>>>
>>> You need to update Parser API implementation to handle catch 
>>> parameter being expression - rather than an IdentNode.
>>>
>>> => you need to
>>>
>>> * add another getter in CatchNode to expose Expression
>>>
>>> * Use it in IRTranslator (of Parser API impl.) to translate catch 
>>> param as expression
>>>
>>> * You need to check for expression param in codegen pipeline to throw 
>>> "not yet implemented" error.
>>>
>>> -Sundar
>>>
>>> On 11/7/2016 9:40 PM, Srinivas Dama wrote:
>>>> Please review:
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8156615
>>>> Webrev: http://cr.openjdk.java.net/~sdama/8156615/webrev.00/
>>>>
>>>> Please note that, this contains only parsing support for catch parameter 
>>>> as BindingPattern or BindingIdentifier.
>>>>
>>>> Regards,
>>>> Srinivas

Reply via email to