File tree 1 file changed +16
-4
lines changed
compiler/src/dotty/tools/dotc/core
1 file changed +16
-4
lines changed Original file line number Diff line number Diff line change @@ -172,12 +172,24 @@ object Flags {
172
172
}
173
173
174
174
/** The union of all flags in given flag set */
175
- def union (flagss : FlagSet * ) = (EmptyFlags /: flagss)(_ | _)
175
+ def union (flagss : FlagSet * ): FlagSet = {
176
+ var flag = EmptyFlags
177
+ for (f <- flagss)
178
+ flag |= f
179
+ flag
180
+ }
181
+
182
+ /** The conjunction of all flags in given flag set */
183
+ def allOf (flags1 : FlagSet , flags2 : FlagSet ): FlagConjunction = {
184
+ assert(flags1.numFlags == 1 && flags2.numFlags == 1 , " Flags.allOf doesn't support flag " + (if (flags1.numFlags != 1 ) flags1 else flags2))
185
+ FlagConjunction ((flags1 | flags2).bits)
186
+ }
176
187
177
188
/** The conjunction of all flags in given flag set */
178
- def allOf (flagss : FlagSet * ) = {
179
- assert(flagss forall (_.numFlags == 1 ), " Flags.allOf doesn't support flag " + flagss.find(_.numFlags != 1 ))
180
- FlagConjunction (union(flagss : _* ).bits)
189
+ def allOf (flags1 : FlagSet , flags2 : FlagSet , flags3 : FlagSet , flagss : FlagSet * ): FlagConjunction = {
190
+ val flags0 = allOf(flags1, flags2) | flags3
191
+ assert(flags3.numFlags == 1 && flagss.forall(_.numFlags == 1 ), " Flags.allOf doesn't support flag " + (if (flags3.numFlags != 1 ) flags3 else flagss.find(_.numFlags != 1 )))
192
+ FlagConjunction ((flags0 | union(flagss : _* )).bits)
181
193
}
182
194
183
195
def commonFlags (flagss : FlagSet * ) = union(flagss.map(_.toCommonFlags): _* )
You can’t perform that action at this time.
0 commit comments