Skip to content

Commit 7ce3040

Browse files
committed
Don't pickle OPAQUE for objects
Objects containing opaque aliases get the Opaque flag set for technical reasons. But that should not leak into the Tasty format.
1 parent 1559fb6 commit 7ce3040

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -638,11 +638,11 @@ class TreePickler(pickler: TastyPickler) {
638638
}
639639
if (flags.is(ParamAccessor) && sym.isTerm && !sym.isSetter)
640640
flags = flags &~ ParamAccessor // we only generate a tag for parameter setters
641-
pickleFlags(flags, sym.isTerm)
641+
pickleFlags(flags, sym)
642642
sym.annotations.foreach(pickleAnnotation(sym, _))
643643
}
644644

645-
def pickleFlags(flags: FlagSet, isTerm: Boolean)(implicit ctx: Context): Unit = {
645+
def pickleFlags(flags: FlagSet, sym: Symbol)(implicit ctx: Context): Unit = {
646646
import Flags._
647647
def writeModTag(tag: Int) = {
648648
assert(isModifierTag(tag))
@@ -663,7 +663,7 @@ class TreePickler(pickler: TastyPickler) {
663663
if (flags.is(Synthetic)) writeModTag(SYNTHETIC)
664664
if (flags.is(Artifact)) writeModTag(ARTIFACT)
665665
if (flags.is(Scala2x)) writeModTag(SCALA2X)
666-
if (isTerm) {
666+
if (sym.isTerm) {
667667
if (flags.is(Implicit)) writeModTag(IMPLICIT)
668668
if (flags.is(Given)) writeModTag(GIVEN)
669669
if (flags.is(Erased)) writeModTag(ERASED)
@@ -685,7 +685,7 @@ class TreePickler(pickler: TastyPickler) {
685685
if (flags.is(Trait)) writeModTag(TRAIT)
686686
if (flags.is(Covariant)) writeModTag(COVARIANT)
687687
if (flags.is(Contravariant)) writeModTag(CONTRAVARIANT)
688-
if (flags.is(Opaque)) writeModTag(OPAQUE)
688+
if flags.is(Opaque) && sym.isOpaqueAlias then writeModTag(OPAQUE)
689689
if (flags.is(Open)) writeModTag(OPEN)
690690
}
691691
}

0 commit comments

Comments
 (0)