Collapsing the requirements
daniel.smith at oracle.com
Tue Aug 13 17:18:41 UTC 2019
> On Aug 3, 2019, at 10:37 AM, Brian Goetz <brian.goetz at oracle.com> wrote:
> For sake of exposition, let’s say this is called `C.Box` — and is a legitimate inner class of C (which can be generated by the compiler as an ordinary classfile.) We’ve been here before, and abandoned it because “Box” seemed misleading, but let’s call it that for now. And now it is a real nominal type, not a fake type. In the simplest case, merely declaring an inline class could give rise to V.Box.
> Now, the type formerly known as `V?` is an ordinary, nominal interface (or abstract class) type. The user can say what they mean, and no magic is needed by either the language or the VM. Goodbye `V?`.
<bikeshed>What if the spelling of "V.Box" were "V?"</bikeshed>
Serious point: seems like the way we spell V.Box is orthogonal to how we implement it. The crux of what you're proposing here is to implement V.Box in the compiler, removing the requirement that the JVM support the type LV;, and living with some resulting limitations. Syntax can be set aside as a separate discussion.
More information about the valhalla-spec-observers