Because there is no SLS for Scala 3, to understand the concept of “paths”. I read the Paths definition for Scala 2.13, and confused by the following description:
p.x where p is a path and x is a stable member of p. Stable members are packages or members introduced by object definitions or by value definitions of non-volatile types.
Tried and googled a lot about volatile types, but still cannot know what volatile types should be in Scala 3. Tried some sample codes like Cannot override a type with non-volatile upper bound and cannot override a member with non-volatile type, but they all can be compiled by Scala 3 compiler (that is, the rejected codes in Scala 2 now compiled in Scala 3).
So my questions are:
- what does volatile types mean in Scala 3, any change compared to Scala 2, if Scala 3 still support volatile types? or
- Scala 3 has no volatile types support anymore. and if so, how to understand the case of “p.x”?.
- Maybe the definition is OK, because of the improvement of DOT Calculus, the Scala 3 compiler is more powerful and can deal more cases correctly.
Thanks for your help!