Skip to content

Commit d81250e

Browse files
committed
Get rid of SuperAccessor flag
1 parent e3b06eb commit d81250e

12 files changed

+23
-17
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,12 +311,12 @@ object Flags {
311311
final val CaseAccessorOrBaseTypeArg = CaseAccessor.toCommonFlags
312312

313313
/** A super accessor */
314-
final val SuperAccessor = termFlag(26, "<superaccessor>")
314+
final val Scala2SuperAccessor = termFlag(26, "<superaccessor>")
315315

316316
/** An unpickled Scala 2.x class */
317317
final val Scala2x = typeFlag(26, "<scala-2.x>")
318318

319-
final val SuperAccessorOrScala2x = SuperAccessor.toCommonFlags
319+
final val SuperAccessorOrScala2x = Scala2x.toCommonFlags
320320

321321
/** A method that has default params */
322322
final val DefaultParameterized = termFlag(27, "<defaultparam>")

compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -432,10 +432,8 @@ class TreeUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName, posUnpi
432432
val rhsIsEmpty = noRhs(end)
433433
if (!rhsIsEmpty) skipTree()
434434
val (givenFlags, annots, privateWithin) = readModifiers(end)
435-
val nameFlags =
436-
(if (name.is(NameExtractors.SuperAccessorName)) SuperAccessor else EmptyFlags)
437435
pickling.println(i"creating symbol $name at $start with flags $givenFlags")
438-
val flags = normalizeFlags(tag, givenFlags | nameFlags, name, isAbsType, rhsIsEmpty)
436+
val flags = normalizeFlags(tag, givenFlags, name, isAbsType, rhsIsEmpty)
439437
def adjustIfModule(completer: LazyType) =
440438
if (flags is Module) ctx.adjustModuleCompleter(completer, name) else completer
441439
val sym =

compiler/src/dotty/tools/dotc/core/unpickleScala2/PickleBuffer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ object PickleBuffer {
224224
DEFAULTPARAM -> (DefaultParameterized, Trait),
225225
BRIDGE -> Bridge,
226226
ACCESSOR -> Accessor,
227-
SUPERACCESSOR -> SuperAccessor,
227+
SUPERACCESSOR -> Scala2SuperAccessor,
228228
PARAMACCESSOR -> ParamAccessor,
229229
MODULEVAR -> Scala2ModuleVar,
230230
LAZY -> Lazy,

compiler/src/dotty/tools/dotc/core/unpickleScala2/Scala2Unpickler.scala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import printing.Printer
1818
import io.AbstractFile
1919
import util.common._
2020
import typer.Checking.checkNonCyclic
21+
import transform.SymUtils._
2122
import PickleBuffer._
2223
import PickleFormat._
2324
import Decorators._
@@ -439,7 +440,10 @@ class Scala2Unpickler(bytes: Array[Byte], classRoot: ClassDenotation, moduleClas
439440
name = name.unmangleExpandedName
440441
flags = flags &~ Scala2ExpandedName
441442
}
442-
if (flags is SuperAccessor) name = name.asTermName.unmangleSuperName
443+
if (flags is Scala2SuperAccessor) {
444+
name = name.asTermName.unmangleSuperName
445+
flags = flags &~ Scala2SuperAccessor
446+
}
443447

444448
def isClassRoot = (name == classRoot.name) && (owner == classRoot.owner) && !(flags is ModuleClass)
445449
def isModuleClassRoot = (name == moduleClassRoot.name) && (owner == moduleClassRoot.owner) && (flags is Module)
@@ -553,9 +557,9 @@ class Scala2Unpickler(bytes: Array[Byte], classRoot: ClassDenotation, moduleClas
553557
else tp1
554558
if (denot.isConstructor) addConstructorTypeParams(denot)
555559
if (atEnd) {
556-
assert(!(denot is SuperAccessor), denot)
560+
assert(!denot.isSuperAccessor, denot)
557561
} else {
558-
assert(denot is (SuperAccessor | ParamAccessor), denot)
562+
assert(denot.is(ParamAccessor) || denot.isSuperAccessor, denot)
559563
def disambiguate(alt: Symbol) = { // !!! DEBUG
560564
ctx.debugTraceIndented(s"disambiguating ${denot.info} =:= ${denot.owner.thisType.memberInfo(alt)} ${denot.owner}") {
561565
denot.info matches denot.owner.thisType.memberInfo(alt)

compiler/src/dotty/tools/dotc/sbt/ExtractAPI.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Annotations._, Contexts._, Flags._, Phases._, Trees._, Types._, Symbols._
77
import Names._, NameOps._, StdNames._
88
import typer.Inliner
99
import typer.ErrorReporting.cyclicErrorMsg
10+
import transform.SymUtils._
1011

1112
import dotty.tools.io.Path
1213
import java.io.PrintWriter
@@ -539,7 +540,7 @@ private class ExtractAPICollector(implicit val ctx: Context) extends ThunkHolder
539540
val abs = sym.is(Abstract) || sym.is(Deferred) || absOver
540541
val over = sym.is(Override) || absOver
541542
new api.Modifiers(abs, over, sym.is(Final), sym.is(Sealed),
542-
sym.is(Implicit), sym.is(Lazy), sym.is(Macro), sym.is(SuperAccessor))
543+
sym.is(Implicit), sym.is(Lazy), sym.is(Macro), sym.isSuperAccessor)
543544
}
544545

545546
def apiAnnotations(s: Symbol): List[api.Annotation] = {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class AugmentScala2Traits extends MiniPhaseTransform with IdentityDenotTransform
9292
traitSetter(sym.asTerm).enteredAfter(thisTransform)
9393
if ((sym.is(PrivateAccessor) && !sym.name.is(ExpandedName) &&
9494
(sym.isGetter || sym.isSetter)) // strangely, Scala 2 fields are also methods that have Accessor set.
95-
|| sym.is(SuperAccessor)) // scala2 superaccessors are pickled as private, but are compiled as public expanded
95+
|| sym.isSuperAccessor) // scala2 superaccessors are pickled as private, but are compiled as public expanded
9696
sym.ensureNotPrivate.installAfter(thisTransform)
9797
}
9898
ctx.log(i"Scala2x trait decls of $mixin = ${mixin.info.decls.toList.map(_.showDcl)}%\n %")

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class ExpandSAMs extends MiniPhaseTransform { thisTransformer =>
3838
case tpe @ SAMType(_) if isPlatformSam(tpe.classSymbol.asClass) =>
3939
tree
4040
case tpe =>
41-
val Seq(samDenot) = tpe.abstractTermMembers.filter(!_.symbol.is(SuperAccessor))
41+
val Seq(samDenot) = tpe.abstractTermMembers.filter(!_.symbol.isSuperAccessor)
4242
cpy.Block(tree)(stats,
4343
AnonClass(tpe :: Nil, fn.symbol.asTerm :: Nil, samDenot.symbol.asTerm.name :: Nil))
4444
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class ResolveSuper extends MiniPhaseTransform with IdentityDenotTransformer { th
6060
import ops._
6161

6262
def superAccessors(mixin: ClassSymbol): List[Tree] =
63-
for (superAcc <- mixin.info.decls.filter(_ is SuperAccessor).toList)
63+
for (superAcc <- mixin.info.decls.filter(_.isSuperAccessor).toList)
6464
yield polyDefDef(implementation(superAcc.asTerm), forwarder(rebindSuper(cls, superAcc)))
6565

6666
def methodOverrides(mixin: ClassSymbol): List[Tree] =
@@ -74,7 +74,7 @@ class ResolveSuper extends MiniPhaseTransform with IdentityDenotTransformer { th
7474

7575
override def transformDefDef(ddef: DefDef)(implicit ctx: Context, info: TransformerInfo) = {
7676
val meth = ddef.symbol.asTerm
77-
if (meth.is(SuperAccessor, butNot = Deferred)) {
77+
if (meth.isSuperAccessor && !meth.is(Deferred)) {
7878
assert(ddef.rhs.isEmpty)
7979
val cls = meth.owner.asClass
8080
val ops = new MixinOps(cls, thisTransform)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class SuperAccessors(thisTransformer: DenotTransformer) {
8181
ctx.debuglog(s"add super acc ${sym.showLocated} to $clazz")
8282
val deferredOrPrivate = if (clazz is Trait) Deferred else Private
8383
val acc = ctx.newSymbol(
84-
clazz, superName, SuperAccessor | Artifact | Method | deferredOrPrivate,
84+
clazz, superName, Artifact | Method | deferredOrPrivate,
8585
superInfo, coord = sym.coord).enteredAfter(thisTransformer)
8686
// Diagnostic for SI-7091
8787
if (!accDefs.contains(clazz))

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ class SymUtils(val self: Symbol) extends AnyVal {
5555
def isAliasPreferred(implicit ctx: Context) =
5656
self.is(AliasPreferred) || self.name.is(ExpandedName)
5757

58+
def isSuperAccessor(implicit ctx: Context) = self.name.is(SuperAccessorName)
59+
5860
/** If this is a constructor, its owner: otherwise this. */
5961
final def skipConstructor(implicit ctx: Context): Symbol =
6062
if (self.isConstructor) self.owner else self

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import SymDenotations._
88
import Contexts._
99
import Flags._
1010
import StdNames._
11+
import SymUtils._
1112

1213
/** Methods that apply to user-defined value classes */
1314
object ValueClasses {
@@ -24,7 +25,7 @@ object ValueClasses {
2425
d.isRealMethod &&
2526
isDerivedValueClass(d.owner) &&
2627
!d.isConstructor &&
27-
!d.is(SuperAccessor) &&
28+
!d.isSuperAccessor &&
2829
!d.is(Macro)
2930

3031
/** The member that of a derived value class that unboxes it. */

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ object RefChecks {
405405

406406
def ignoreDeferred(member: SingleDenotation) =
407407
member.isType ||
408-
member.symbol.is(SuperAccessor) || // not yet synthesized
408+
member.symbol.isSuperAccessor || // not yet synthesized
409409
member.symbol.is(JavaDefined) && hasJavaErasedOverriding(member.symbol)
410410

411411
// 2. Check that only abstract classes have deferred members

0 commit comments

Comments
 (0)