Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reverts #10976
This was not a typo.
permissionSetX & permissionSetY
is supposed to be the union ofpermissionSetX
andpermissionSetY
, not the intersection of them.It's also clear that
def & (y: Permissions): Permissions = x | y
was intentional from this text:What is meant by this is that the real method
&
would take precedent over the extension method&
, so|
must be called manually instead of&
in theAccess
object.The idea with this example is to show that it's useful that a single permission has the same representation as the equivalent singleton
Permissions
set or the equivalentPermissionChoice
set.If one wanted to, the subtyping relation could be changed to this:
The example demos how opaque types behaves in many ways at the same time, perhaps even too much in too little text, hence why it's a bit confusing.