@@ -22,16 +22,16 @@ object Flags {
22
22
23
23
type Flag = opaques.Flag
24
24
25
- given /* FlagOps */ {
25
+ given extension ( x : FlagSet ) with
26
26
27
- def ( x : FlagSet ) bits : Long = opaques.toBits(x)
27
+ def bits : Long = opaques.toBits(x)
28
28
29
29
/** The union of the given flag sets.
30
30
* Combining two FlagSets with `|` will give a FlagSet
31
31
* that has the intersection of the applicability to terms/types
32
32
* of the two flag sets. It is checked that the intersection is not empty.
33
33
*/
34
- def ( x : FlagSet ) | (y : FlagSet ): FlagSet =
34
+ def | (y : FlagSet ): FlagSet =
35
35
if (x.bits == 0 ) y
36
36
else if (y.bits == 0 ) x
37
37
else {
@@ -42,48 +42,48 @@ object Flags {
42
42
}
43
43
44
44
/** The intersection of the given flag sets */
45
- def ( x : FlagSet ) & (y : FlagSet ): FlagSet = FlagSet (x.bits & y.bits)
45
+ def & (y : FlagSet ): FlagSet = FlagSet (x.bits & y.bits)
46
46
47
47
/** The intersection of a flag set with the complement of another flag set */
48
- def ( x : FlagSet ) &~ (y : FlagSet ): FlagSet = {
48
+ def &~ (y : FlagSet ): FlagSet = {
49
49
val tbits = x.bits & KINDFLAGS
50
50
if ((tbits & y.bits) == 0 ) x
51
51
else FlagSet (tbits | ((x.bits & ~ y.bits) & ~ KINDFLAGS ))
52
52
}
53
53
54
- def ( x : FlagSet ) ^ (y : FlagSet ) =
54
+ def ^ (y : FlagSet ) =
55
55
FlagSet ((x.bits | y.bits) & KINDFLAGS | (x.bits ^ y.bits) & ~ KINDFLAGS )
56
56
57
57
/** Does the given flag set contain the given flag?
58
58
* This means that both the kind flags and the carrier bits have non-empty intersection.
59
59
*/
60
- def ( x : FlagSet ) is (flag : Flag ): Boolean = {
60
+ def is (flag : Flag ): Boolean = {
61
61
val fs = x.bits & flag.bits
62
62
(fs & KINDFLAGS ) != 0 && (fs & ~ KINDFLAGS ) != 0
63
63
}
64
64
65
65
/** Does the given flag set contain the given flag
66
66
* and at the same time contain none of the flags in the `butNot` set?
67
67
*/
68
- def ( x : FlagSet ) is (flag : Flag , butNot : FlagSet ): Boolean = x.is(flag) && ! x.isOneOf(butNot)
68
+ def is (flag : Flag , butNot : FlagSet ): Boolean = x.is(flag) && ! x.isOneOf(butNot)
69
69
70
70
/** Does the given flag set have a non-empty intersection with another flag set?
71
71
* This means that both the kind flags and the carrier bits have non-empty intersection.
72
72
*/
73
- def ( x : FlagSet ) isOneOf (flags : FlagSet ): Boolean = {
73
+ def isOneOf (flags : FlagSet ): Boolean = {
74
74
val fs = x.bits & flags.bits
75
75
(fs & KINDFLAGS ) != 0 && (fs & ~ KINDFLAGS ) != 0
76
76
}
77
77
78
78
/** Does the given flag set have a non-empty intersection with another flag set,
79
79
* and at the same time contain none of the flags in the `butNot` set?
80
80
*/
81
- def ( x : FlagSet ) isOneOf (flags : FlagSet , butNot : FlagSet ): Boolean = x.isOneOf(flags) && ! x.isOneOf(butNot)
81
+ def isOneOf (flags : FlagSet , butNot : FlagSet ): Boolean = x.isOneOf(flags) && ! x.isOneOf(butNot)
82
82
83
83
/** Does a given flag set have all of the flags of another flag set?
84
84
* Pre: The intersection of the term/type flags of both sets must be non-empty.
85
85
*/
86
- def ( x : FlagSet ) isAllOf (flags : FlagSet ): Boolean = {
86
+ def isAllOf (flags : FlagSet ): Boolean = {
87
87
val fs = x.bits & flags.bits
88
88
((fs & KINDFLAGS ) != 0 || flags.bits == 0 ) &&
89
89
(fs >>> TYPESHIFT ) == (flags.bits >>> TYPESHIFT )
@@ -93,36 +93,36 @@ object Flags {
93
93
* and at the same time contain none of the flags in the `butNot` set?
94
94
* Pre: The intersection of the term/type flags of both sets must be non-empty.
95
95
*/
96
- def ( x : FlagSet ) isAllOf (flags : FlagSet , butNot : FlagSet ): Boolean = x.isAllOf(flags) && ! x.isOneOf(butNot)
96
+ def isAllOf (flags : FlagSet , butNot : FlagSet ): Boolean = x.isAllOf(flags) && ! x.isOneOf(butNot)
97
97
98
- def ( x : FlagSet ) isEmpty : Boolean = (x.bits & ~ KINDFLAGS ) == 0
98
+ def isEmpty : Boolean = (x.bits & ~ KINDFLAGS ) == 0
99
99
100
100
/** Is a given flag set a subset of another flag set? */
101
- def ( x : FlagSet ) <= (y : FlagSet ): Boolean = (x.bits & y.bits) == x.bits
101
+ def <= (y : FlagSet ): Boolean = (x.bits & y.bits) == x.bits
102
102
103
103
/** Does the given flag set apply to terms? */
104
- def ( x : FlagSet ) isTermFlags : Boolean = (x.bits & TERMS ) != 0
104
+ def isTermFlags : Boolean = (x.bits & TERMS ) != 0
105
105
106
106
/** Does the given flag set apply to terms? */
107
- def ( x : FlagSet ) isTypeFlags : Boolean = (x.bits & TYPES ) != 0
107
+ def isTypeFlags : Boolean = (x.bits & TYPES ) != 0
108
108
109
109
/** The given flag set with all flags transposed to be type flags */
110
- def ( x : FlagSet ) toTypeFlags : FlagSet = if (x.bits == 0 ) x else FlagSet (x.bits & ~ KINDFLAGS | TYPES )
110
+ def toTypeFlags : FlagSet = if (x.bits == 0 ) x else FlagSet (x.bits & ~ KINDFLAGS | TYPES )
111
111
112
112
/** The given flag set with all flags transposed to be term flags */
113
- def ( x : FlagSet ) toTermFlags : FlagSet = if (x.bits == 0 ) x else FlagSet (x.bits & ~ KINDFLAGS | TERMS )
113
+ def toTermFlags : FlagSet = if (x.bits == 0 ) x else FlagSet (x.bits & ~ KINDFLAGS | TERMS )
114
114
115
115
/** The given flag set with all flags transposed to be common flags */
116
- def ( x : FlagSet ) toCommonFlags : FlagSet = if (x.bits == 0 ) x else FlagSet (x.bits | KINDFLAGS )
116
+ def toCommonFlags : FlagSet = if (x.bits == 0 ) x else FlagSet (x.bits | KINDFLAGS )
117
117
118
118
/** The number of non-kind flags in the given flag set */
119
- def ( x : FlagSet ) numFlags : Int = java.lang.Long .bitCount(x.bits & ~ KINDFLAGS )
119
+ def numFlags : Int = java.lang.Long .bitCount(x.bits & ~ KINDFLAGS )
120
120
121
121
/** The lowest non-kind bit set in the given flag set */
122
- def ( x : FlagSet ) firstBit : Int = java.lang.Long .numberOfTrailingZeros(x.bits & ~ KINDFLAGS )
122
+ def firstBit : Int = java.lang.Long .numberOfTrailingZeros(x.bits & ~ KINDFLAGS )
123
123
124
124
/** The list of non-empty names of flags with given index idx that are set in the given flag set */
125
- private def ( x : FlagSet ) flagString(idx : Int ): List [String ] =
125
+ private def flagString (idx : Int ): List [String ] =
126
126
if ((x.bits & (1L << idx)) == 0 ) Nil
127
127
else {
128
128
def halfString (kind : Int ) =
@@ -134,7 +134,7 @@ object Flags {
134
134
}
135
135
136
136
/** The list of non-empty names of flags that are set in teh given flag set */
137
- def ( x : FlagSet ) flagStrings(privateWithin : String ): Seq [String ] = {
137
+ def flagStrings (privateWithin : String ): Seq [String ] = {
138
138
var rawStrings = (2 to MaxFlag ).flatMap(x.flagString(_)) // DOTTY problem: cannot drop with (_)
139
139
if (! privateWithin.isEmpty && ! x.is(Protected ))
140
140
rawStrings = rawStrings :+ " private"
@@ -149,8 +149,8 @@ object Flags {
149
149
}
150
150
151
151
/** The string representation of the given flag set */
152
- def ( x : FlagSet ) flagsString : String = x.flagStrings(" " ).mkString(" " )
153
- }
152
+ def flagsString : String = x.flagStrings(" " ).mkString(" " )
153
+ end given
154
154
155
155
def termFlagSet (x : Long ) = FlagSet (TERMS | x)
156
156
0 commit comments