@@ -515,16 +515,28 @@ class TreeUnpickler(reader: TastyReader,
515515 flags
516516 }
517517
518- def isAbstractType (ttag : Int )(using Context ): Boolean = nextUnsharedTag match {
518+ def isAbstractType (name : Name )(using Context ): Boolean = nextByte match
519+ case SHAREDtype =>
520+ val lookAhead = fork
521+ lookAhead.reader.readByte()
522+ val sharedReader = forkAt(lookAhead.reader.readAddr())
523+ sharedReader.isAbstractType(name)
519524 case LAMBDAtpt =>
520525 val rdr = fork
521526 rdr.reader.readByte() // tag
522527 rdr.reader.readNat() // length
523528 rdr.skipParams() // tparams
524- rdr.isAbstractType(rdr.nextUnsharedTag)
525- case TYPEBOUNDS | TYPEBOUNDStpt => true
529+ rdr.isAbstractType(name)
530+ case TYPEBOUNDS =>
531+ val rdr = fork
532+ rdr.reader.readByte() // tag
533+ val end = rdr.reader.readEnd()
534+ rdr.skipTree() // alias, or lower bound
535+ val res = ! rdr.nothingButMods(end)
536+ // if !res then println(i"NOT ABSTRACT $name, ${rdr.reader.nextByte}")
537+ res
538+ case TYPEBOUNDStpt => true
526539 case _ => false
527- }
528540
529541 /** Create symbol of definition node and enter in symAtAddr map
530542 * @return the created symbol
@@ -569,15 +581,15 @@ class TreeUnpickler(reader: TastyReader,
569581 if (tag == TYPEDEF || tag == TYPEPARAM ) name = name.toTypeName
570582 skipParams()
571583 val ttag = nextUnsharedTag
572- val isAbsType = isAbstractType(ttag )
584+ val isAbsType = isAbstractType(name )
573585 val isClass = ttag == TEMPLATE
574586 val templateStart = currentAddr
575587 skipTree() // tpt
576588 val rhsStart = currentAddr
577589 val rhsIsEmpty = nothingButMods(end)
578590 if (! rhsIsEmpty) skipTree()
579591 val (givenFlags, annotFns, privateWithin) = readModifiers(end)
580- pickling.println(i " creating symbol $name at $start with flags $givenFlags" )
592+ pickling.println(i " creating symbol $name at $start with flags ${ givenFlags.flagsString} , isAbsType = $isAbsType , $ttag " )
581593 val flags = normalizeFlags(tag, givenFlags, name, isAbsType, rhsIsEmpty)
582594 def adjustIfModule (completer : LazyType ) =
583595 if (flags.is(Module )) adjustModuleCompleter(completer, name) else completer
0 commit comments