[lworld] RFR: JDK 8251107 [lworld] test lworld-values/TopInterfaceNegativeTest.java needs scrubbing

Srikanth Adayapalam sadayapalam at openjdk.java.net
Wed Aug 5 05:15:26 UTC 2020


On Wed, 5 Aug 2020 05:08:27 GMT, Srikanth Adayapalam <sadayapalam at openjdk.org> wrote:

>> Test was somewhat out of date and still using InlineObject.
>
> I think the test still using the withdrawn InlineObject is a red herring. The golden files account for this already and
> capture suitable errors for those uses of the non-existent interface.
> The real trouble is due to an error NOT being emitted in line 33 of the TopInterfaceNegativeTest.java:
> 
> Given:
> 
> static inline class V2 implements InlineObject {}
> 
> void foo(V2 v) {
>         if (v instanceof IdentityObject)  // line 33
>             throw new AssertionError("Expected inline object but found identity object");
>     }
> 
> v instanceof IdentityObject is patently false and can be ascertained at compile time to be patently false thereby
> resulting an error message:
> TopInterfaceNegativeTest.java:33:13: compiler.err.prob.found.req: (compiler.misc.inconvertible.types:
> TopInterfaceNegativeTest.V2, java.lang.IdentityObject)
> Given 'v' is type V2 and that is a final class, we known all the interfaces implemented by v and so can evaluate at
> compile time whether the instanceof is patently bogus -
> Now with the change for sealing of projections, this error is not emitted anymore and that is the reason for the
> failure.
> The error is valid and should be restored.

Here is a smaller test case: without the change for sealing this elicits an error

public inline class X {
    boolean b = new X() instanceof IdentityObject;
}

-------------

PR: https://git.openjdk.java.net/valhalla/pull/135


More information about the valhalla-dev mailing list