[External] : Re: Consolidating the user model

Kevin Bourrillion kevinb at google.com
Wed Nov 3 17:23:20 UTC 2021


On Wed, Nov 3, 2021 at 9:02 AM John Rose <john.r.rose at oracle.com> wrote:

> One way to thicken this thin argument is to say that Point is not really
a class.
> It’s a primitive.  Then it still has a value-set inclusion relation to
Object, but it’s
> not a sub-class of Object.  It is a value-set subtype.

I would spin it like this: `Point` absolutely is a class. But its instances
are *values* (like ints and references are, but compound), and values *are
still not objects*.

We've said at times we want to "make everything an object", but I think the
unification users really care about is everything being a *class instance*.

I think this fits neatly with the current design: `Point` has no
supertypes*, not even `Object`, but `Point.ref` does.

(*I mean "supertype" in the polymorphic sense, not the "has a conversion"
sense or the "can inherit" sense. I don't know what the word is really
supposed to mean. :-))


> - !(Point *is a* Object) & (Point *has a* Object box)
> - Point does not (cannot) inherit methods from Object
> - Point can *execute* methods from Object, but only after value-set
mapping

I'm a little fuzzy on what these accomplish for us, can you spell it out a
bit?
It sounds like a special rule treating Object methods differently from
other supertype methods (?), which would be nice to not need.

-- 
Kevin Bourrillion | Java Librarian | Google, Inc. | kevinb at google.com


More information about the valhalla-spec-observers mailing list