RFR JDK-8080641: JEP-JDK-8042880 : Implement new tests on Project Coin

Alex Buckley alex.buckley at oracle.com
Thu Oct 15 23:20:15 UTC 2015

Hi Sergei,

Most of the new regression tests are about conformance to the spec, 
rather than probing some javac-internal treatment of the t-w-r 
statement. I hope someone from JCK-Compiler can comment on their suppor 
for the expanded t-w-r statement.

That said, here are some comments on the new tests:

- ResourceVariableOutsideTry - @summary should be "Resource variable 
should be in scope throughout try, catch, and finally blocks". 
Accessibility is not relevant to a local variable like c.

- TwrAndAnonymousClass - this is a positive test when an anonymous class 
implements AutoCloseable, but what about a negative test when an 
anonymous class doesn't implement AutoCloseable?

- TwrAndGenerics - should be called TwrAndTypeVariables - plus same 
comment as above (type variables S and T _not_ extending AutoCloseable).

- TwrAndLambda - same comment as above (lambda expressions and method 
references _not_ implementing AutoCloseable).

- TwrVarKinds - good test, but if you're doing to test four kinds of 
variables then you may as well test all seven (JLS 4.12.3). In 
particular, array components should be tested. You should test using 
components from an array of AutoCloseables, and components of components 
from an array of an array of AutoCloseables. (The second situation in 
particular will expose any mistreatment of array components by javac -- 
if javac accidentally erases the array-ness of a resource variable, then 
in the first situation it will end up with an AutoCloseable and that's 
ordinary enough that everything might still work, but in the second 
situation it ends up with an array of AutoCloseables and that might blow 
up some logic.)

- WeirdTwr_WithVar - there is nothing weird or strange here. It's just 
one resource variable aliasing another, which was possible already. 
You're right to extend it so that a resource variable declared by 'try' 
aliases a resource variable declared outside 'try' -- also do it the 
other way around. Also, need a test where the resource variable declared 
outside 'try' is null.

- What's truly new when a try (...) header uses a resource variable 
declared outside the 'try'? Answer: no exception can be thrown, whereas 
the declaration of a resource variable by 'try' includes an initializer 
expression that can throw an exception. There should be a test to 
"prove" that try (r1) {...} doesn't throw exceptions from resource 
initialization, and that try (r1; AutoCloseable r2 = ...) {...} only 
throws exceptions due to r2's initialization.


On 10/14/2015 12:12 AM, Sergei Pikalev wrote:
> Hello,
> This is the code with new Project Coin tests from SQE.
> A webrev with the tests is here:
> http://cr.openjdk.java.net/~shurailine/webrev.8080641/
> Please review.
> Thanks,
>      Sergei

More information about the compiler-dev mailing list