On 17.10.2018 14:24, Timon Gehr wrote:
On 15.10.2018 23:51, Manu wrote:
If a shared method is incompatible with an unshared method, your class
is broken.

Then what you want is not implicit unshared->shared conversion. What you want is a different way to type shared member access. You want a setup where shared methods are only allowed to access shared members and unshared methods are only allowed to access unshared members.

I.e., what you want is that shared is not transitive. You want that if you have a shared(C) c, then it is an error to access c.m iff m is not shared. This way you can have partially shared classes, where part of the class is thread-local, and other parts are shared with other threads.

Is this it?

(Also, with this new definition of 'shared', unshared -> shared conversion would of course become sound.)

Reply via email to