File tree Expand file tree Collapse file tree 1 file changed +16
-4
lines changed
compiler/src/dotty/tools/dotc/core Expand file tree Collapse file tree 1 file changed +16
-4
lines changed Original file line number Diff line number Diff line change @@ -172,12 +172,24 @@ object Flags {
172172 }
173173
174174 /** 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+ }
176187
177188 /** 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)
181193 }
182194
183195 def commonFlags (flagss : FlagSet * ) = union(flagss.map(_.toCommonFlags): _* )
You can’t perform that action at this time.
0 commit comments