Skip to content

Commit 57382d5

Browse files
committed
Drop allOf
1 parent d7a2bee commit 57382d5

File tree

9 files changed

+50
-65
lines changed

9 files changed

+50
-65
lines changed

compiler/src/dotty/tools/dotc/ast/untpd.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
217217
else {
218218
if (ms.nonEmpty)
219219
for (m <- ms)
220-
assert(flags.isAllOf(allOf(m.flags)) ||
220+
assert(flags.isAllOf(m.flags) ||
221221
m.isInstanceOf[Mod.Private] && !privateWithin.isEmpty,
222222
s"unaccounted modifier: $m in $this when adding $ms")
223223
copy(mods = ms)

compiler/src/dotty/tools/dotc/core/Flags.scala

Lines changed: 42 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ object Flags {
6464
/** Does this flag set have all of the flags in given flag conjunction?
6565
* Pre: The intersection of the typeflags of both sets must be non-empty.
6666
*/
67-
def isAllOf(flags: FlagConjunction): Boolean = {
67+
def isAllOf(flags: FlagSet): Boolean = {
6868
val fs = bits & flags.bits
6969
((fs & KINDFLAGS) != 0 || flags.bits == 0) &&
7070
(fs >>> TYPESHIFT) == (flags.bits >>> TYPESHIFT)
@@ -74,7 +74,7 @@ object Flags {
7474
* and at the same time contain none of the flags in the `butNot` set?
7575
* Pre: The intersection of the typeflags of both sets must be non-empty.
7676
*/
77-
def isAllOf(flags: FlagConjunction, butNot: FlagSet): Boolean = isAllOf(flags) && !is(butNot)
77+
def isAllOf(flags: FlagSet, butNot: FlagSet): Boolean = isAllOf(flags) && !isOneOf(butNot)
7878

7979
def isEmpty: Boolean = (bits & ~KINDFLAGS) == 0
8080

@@ -191,21 +191,6 @@ object Flags {
191191
flag
192192
}
193193

194-
def allOf(flags: FlagSet) = FlagConjunction(flags.bits)
195-
196-
/** The conjunction of all flags in given flag set */
197-
def allOf(flags1: FlagSet, flags2: FlagSet): FlagConjunction = {
198-
assert(flags1.numFlags == 1 && flags2.numFlags == 1, "Flags.allOf doesn't support flag " + (if (flags1.numFlags != 1) flags1 else flags2))
199-
FlagConjunction((flags1 | flags2).bits)
200-
}
201-
202-
/** The conjunction of all flags in given flag set */
203-
def allOf(flags1: FlagSet, flags2: FlagSet, flags3: FlagSet, flagss: FlagSet*): FlagConjunction = {
204-
val flags0 = allOf(flags1, flags2) | flags3
205-
assert(flags3.numFlags == 1 && flagss.forall(_.numFlags == 1), "Flags.allOf doesn't support flag " + (if (flags3.numFlags != 1) flags3 else flagss.find(_.numFlags != 1)))
206-
FlagConjunction((flags0 | union(flagss: _*)).bits)
207-
}
208-
209194
def commonFlags(flagss: FlagSet*): FlagSet = union(flagss.map(_.toCommonFlags): _*)
210195

211196
/** The empty flag set */
@@ -604,28 +589,28 @@ object Flags {
604589
final val EffectivelyFinalFlags: FlagSet = Private | Final
605590

606591
/** A private method */
607-
final val PrivateMethod: FlagConjunction = allOf(Private, Method)
592+
final val PrivateMethod: FlagConjunction = Private | Method
608593

609594
/** A private accessor */
610-
final val PrivateAccessor: FlagConjunction = allOf(Private, Accessor)
595+
final val PrivateAccessor: FlagConjunction = Private | Accessor
611596

612597
/** An inline method */
613-
final val InlineMethod: FlagConjunction = allOf(Inline, Method)
598+
final val InlineMethod: FlagConjunction = Inline | Method
614599

615600
/** An inline by-name parameter proxy */
616-
final val InlineByNameProxy: FlagConjunction = allOf(InlineProxy, Method)
601+
final val InlineByNameProxy: FlagConjunction = InlineProxy | Method
617602

618603
/** An inline parameter */
619-
final val InlineParam: FlagConjunction = allOf(Inline, Param)
604+
final val InlineParam: FlagConjunction = Inline | Param
620605

621606
/** An extension method */
622-
final val ExtensionMethod = allOf(Extension, Method)
607+
final val ExtensionMethod = Extension | Method
623608

624609
/** An implied method */
625-
final val SyntheticImpliedMethod: FlagConjunction = allOf(Synthetic, Implied, Method)
610+
final val SyntheticImpliedMethod: FlagConjunction = Synthetic | Implied | Method
626611

627612
/** An enum case */
628-
final val EnumCase: FlagConjunction = allOf(Enum, Case)
613+
final val EnumCase: FlagConjunction = Enum | Case
629614

630615
/** A term parameter or parameter accessor */
631616
final val TermParamOrAccessor: FlagSet = Param | ParamAccessor
@@ -652,10 +637,10 @@ object Flags {
652637
final val FinalOrSealed: FlagSet = Final | Sealed
653638

654639
/** A covariant type parameter instance */
655-
final val LocalCovariant: FlagConjunction = allOf(Local, Covariant)
640+
final val LocalCovariant: FlagConjunction = Local | Covariant
656641

657642
/** A contravariant type parameter instance */
658-
final val LocalContravariant: FlagConjunction = allOf(Local, Contravariant)
643+
final val LocalContravariant: FlagConjunction = Local | Contravariant
659644

660645
/** Has defined or inherited default parameters */
661646
final val HasDefaultParamsFlags: FlagSet = DefaultParameterized | InheritedDefaultParams
@@ -664,74 +649,74 @@ object Flags {
664649
final val ValidForeverFlags: FlagSet = Package | Permanent | Scala2ExistentialCommon
665650

666651
/** A type parameter of a class or trait */
667-
final val ClassTypeParam: FlagConjunction = allOf(TypeParam, Private)
652+
final val ClassTypeParam: FlagConjunction = TypeParam | Private
668653

669654
/** Is a default parameter in Scala 2*/
670-
final val DefaultParameter: FlagConjunction = allOf(Param, DefaultParameterized)
655+
final val DefaultParameter: FlagConjunction = Param | DefaultParameterized
671656

672657
/** A trait that does not need to be initialized */
673-
final val NoInitsTrait: FlagConjunction = allOf(Trait, NoInits)
658+
final val NoInitsTrait: FlagConjunction = Trait | NoInits
674659

675660
/** A Java interface, potentially with default methods */
676-
final val JavaTrait: FlagConjunction = allOf(JavaDefined, Trait, NoInits)
661+
final val JavaTrait: FlagConjunction = JavaDefined | Trait | NoInits
677662

678663
/** A Java interface */ // TODO when unpickling, reconstitute from context
679-
final val JavaInterface: FlagConjunction = allOf(JavaDefined, Trait)
664+
final val JavaInterface: FlagConjunction = JavaDefined | Trait
680665

681666
/** A Java companion object */
682-
final val JavaModule: FlagConjunction = allOf(JavaDefined, Module)
667+
final val JavaModule: FlagConjunction = JavaDefined | Module
683668

684669
/** A Java companion object */
685-
final val JavaProtected: FlagConjunction = allOf(JavaDefined, Protected)
670+
final val JavaProtected: FlagConjunction = JavaDefined | Protected
686671

687672
/** A Java enum */
688-
final val JavaEnum: FlagConjunction = allOf(JavaDefined, Enum)
673+
final val JavaEnum: FlagConjunction = JavaDefined | Enum
689674

690675
/** A Java enum trait */
691-
final val JavaEnumTrait: FlagConjunction = allOf(JavaDefined, Enum)
676+
final val JavaEnumTrait: FlagConjunction = JavaDefined | Enum
692677

693678
/** A Java enum value */
694-
final val JavaEnumValue: FlagConjunction = allOf(StableRealizable, JavaStatic, JavaDefined, Enum)
679+
final val JavaEnumValue: FlagConjunction = StableRealizable | JavaStatic | JavaDefined | Enum
695680

696681
/** An enum value */
697-
final val EnumValue: FlagConjunction = allOf(StableRealizable, JavaStatic, Enum)
682+
final val EnumValue: FlagConjunction = (StableRealizable | JavaStatic | Enum)
698683

699684
/** Labeled private[this] */
700-
final val PrivateLocal: FlagConjunction = allOf(Private, Local)
685+
final val PrivateLocal: FlagConjunction = Private | Local
701686

702687
/** A private[this] parameter accessor */
703-
final val PrivateLocalParamAccessor: FlagConjunction = allOf(Private, Local, ParamAccessor)
688+
final val PrivateLocalParamAccessor: FlagConjunction = Private | Local | ParamAccessor
704689

705690
/** A parameter forwarder */
706-
final val ParamForwarder: FlagConjunction = allOf(Method, StableRealizable, ParamAccessor)
691+
final val ParamForwarder: FlagConjunction = Method | StableRealizable | ParamAccessor
707692

708693
/** A private[this] parameter */
709-
final val PrivateLocalParam: FlagConjunction = allOf(Private, Local, Param)
694+
final val PrivateLocalParam: FlagConjunction = Private | Local | Param
710695

711696
/** A private parameter accessor */
712-
final val PrivateParamAccessor: FlagConjunction = allOf(Private, ParamAccessor)
697+
final val PrivateParamAccessor: FlagConjunction = Private | ParamAccessor
713698

714699
/** A local parameter */
715-
final val ParamAndLocal: FlagConjunction = allOf(Param, Local)
700+
final val ParamAndLocal: FlagConjunction = Param | Local
716701

717702
/** Labeled protected[this] */
718-
final val ProtectedLocal: FlagConjunction = allOf(Protected, Local)
703+
final val ProtectedLocal: FlagConjunction = Protected | Local
719704

720-
final val LiftedMethod: FlagConjunction = allOf(Lifted, Method)
705+
final val LiftedMethod: FlagConjunction = Lifted | Method
721706

722707
/** Java symbol which is `protected` and `static` */
723-
final val StaticProtected: FlagConjunction = allOf(JavaDefined, Protected, JavaStatic)
708+
final val StaticProtected: FlagConjunction = JavaDefined | Protected | JavaStatic
724709

725-
final val Scala2Trait: FlagConjunction = allOf(Scala2x, Trait)
710+
final val Scala2Trait: FlagConjunction = Scala2x | Trait
726711

727-
final val AbstractFinal: FlagConjunction = allOf(Abstract, Final)
728-
final val AbstractSealed: FlagConjunction = allOf(Abstract, Sealed)
729-
final val AbstractAndOverride: FlagConjunction = allOf(Abstract, Override)
712+
final val AbstractFinal: FlagConjunction = Abstract | Final
713+
final val AbstractSealed: FlagConjunction = Abstract | Sealed
714+
final val AbstractAndOverride: FlagConjunction = Abstract | Override
730715

731-
final val SyntheticArtifact: FlagConjunction = allOf(Synthetic, Artifact)
732-
final val SyntheticModule: FlagConjunction = allOf(Synthetic, Module)
733-
final val SyntheticTermParam: FlagConjunction = allOf(Synthetic, TermParam)
734-
final val SyntheticTypeParam: FlagConjunction = allOf(Synthetic, TypeParam)
735-
final val SyntheticCase: FlagConjunction = allOf(Synthetic, Case)
736-
final val SyntheticOpaque: FlagConjunction = allOf(Synthetic, Opaque)
716+
final val SyntheticArtifact: FlagConjunction = Synthetic | Artifact
717+
final val SyntheticModule: FlagConjunction = Synthetic | Module
718+
final val SyntheticTermParam: FlagConjunction = Synthetic | TermParam
719+
final val SyntheticTypeParam: FlagConjunction = Synthetic | TypeParam
720+
final val SyntheticCase: FlagConjunction = Synthetic | Case
721+
final val SyntheticOpaque: FlagConjunction = Synthetic | Opaque
737722
}

compiler/src/dotty/tools/dotc/interactive/Completion.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ object Completion {
255255
!sym.isPrimaryConstructor &&
256256
sym.sourceSymbol.exists &&
257257
(!sym.is(Package) || sym.is(ModuleClass)) &&
258-
!sym.isAllOf(allOf(Mutable, Accessor)) &&
258+
!sym.isAllOf(Mutable | Accessor) &&
259259
!sym.isPackageObject &&
260260
!sym.is(Artifact) &&
261261
(

compiler/src/dotty/tools/dotc/tastyreflect/KernelImpl.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1680,7 +1680,7 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util.
16801680
type Flags = core.Flags.FlagSet
16811681

16821682
/** Is the given flag set a subset of this flag sets */
1683-
def Flags_is(self: Flags)(that: Flags): Boolean = self.isAllOf(allOf(that))
1683+
def Flags_is(self: Flags)(that: Flags): Boolean = self.isAllOf(that)
16841684

16851685
/** Union of the two flag sets */
16861686
def Flags_or(self: Flags)(that: Flags): Flags = self | that

compiler/src/dotty/tools/dotc/transform/Constructors.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class Constructors extends MiniPhase with IdentityDenotTransformer { thisPhase =
121121
private def mightBeDropped(sym: Symbol)(implicit ctx: Context) =
122122
sym.is(Private, butNot = MethodOrLazy) && !sym.isAllOf(MutableParamAccessor)
123123

124-
private final val MutableParamAccessor = allOf(Mutable, ParamAccessor)
124+
private final val MutableParamAccessor = Mutable | ParamAccessor
125125

126126
override def transformTemplate(tree: Template)(implicit ctx: Context): Tree = {
127127
val cls = ctx.owner.asClass

compiler/src/dotty/tools/dotc/transform/LinkScala2Impls.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,5 +98,5 @@ class LinkScala2Impls extends MiniPhase with IdentityDenotTransformer { thisPhas
9898
else throw new AssertionError(i"no impl method for $meth")
9999
}
100100

101-
private val Scala2xTrait = allOf(Scala2x, Trait)
101+
private val Scala2xTrait = Scala2x | Trait
102102
}

compiler/src/dotty/tools/dotc/typer/Checking.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ object Checking {
392392
if (sym.isOneOf(flag))
393393
fail(AbstractMemberMayNotHaveModifier(sym, flag))
394394
def checkNoConflict(flag1: FlagSet, flag2: FlagSet, msg: => String) =
395-
if (sym.isAllOf(allOf(flag1, flag2))) fail(msg)
395+
if (sym.isAllOf(flag1 | flag2)) fail(msg)
396396
def checkCombination(flag1: FlagSet, flag2: FlagSet) =
397397
checkNoConflict(flag1, flag2, i"illegal combination of modifiers: `$flag1` and `$flag2` for: $sym")
398398
def checkApplicable(flag: FlagSet, ok: Boolean) =

compiler/src/dotty/tools/repl/ReplDriver.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ class ReplDriver(settings: Array[String],
251251
val info = symbol.info
252252
val defs =
253253
info.bounds.hi.finalResultType
254-
.membersBasedOnFlags(required = allOf(Method), excluded = Accessor | ParamAccessor | Synthetic | Private)
254+
.membersBasedOnFlags(required = Method, excluded = Accessor | ParamAccessor | Synthetic | Private)
255255
.filterNot { denot =>
256256
denot.symbol.owner == defn.AnyClass ||
257257
denot.symbol.owner == defn.ObjectClass ||

doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class DocASTPhase extends Phase {
4444

4545
def membersFromSymbol(sym: Symbol): List[Entity] = {
4646
if (sym.info.exists) {
47-
val defs = sym.info.bounds.hi.finalResultType.membersBasedOnFlags(Flags.allOf(Flags.Method), Flags.Synthetic | Flags.Private)
47+
val defs = sym.info.bounds.hi.finalResultType.membersBasedOnFlags(Flags.Method, Flags.Synthetic | Flags.Private)
4848
.filterNot(_.symbol.owner.name.show == "Any")
4949
.map { meth =>
5050
DefImpl(

0 commit comments

Comments
 (0)