@@ -500,16 +500,28 @@ class TreeUnpickler(reader: TastyReader,
500500 flags
501501 }
502502
503- def isAbstractType (ttag : Int )(using Context ): Boolean = nextUnsharedTag match {
503+ def isAbstractType (name : Name )(using Context ): Boolean = nextByte match
504+ case SHAREDtype =>
505+ val lookAhead = fork
506+ lookAhead.reader.readByte()
507+ val sharedReader = forkAt(lookAhead.reader.readAddr())
508+ sharedReader.isAbstractType(name)
504509 case LAMBDAtpt =>
505510 val rdr = fork
506511 rdr.reader.readByte() // tag
507512 rdr.reader.readNat() // length
508513 rdr.skipParams() // tparams
509- rdr.isAbstractType(rdr.nextUnsharedTag)
510- case TYPEBOUNDS | TYPEBOUNDStpt => true
514+ rdr.isAbstractType(name)
515+ case TYPEBOUNDS =>
516+ val rdr = fork
517+ rdr.reader.readByte() // tag
518+ val end = rdr.reader.readEnd()
519+ rdr.skipTree() // alias, or lower bound
520+ val res = ! rdr.nothingButMods(end)
521+ // if !res then println(i"NOT ABSTRACT $name, ${rdr.reader.nextByte}")
522+ res
523+ case TYPEBOUNDStpt => true
511524 case _ => false
512- }
513525
514526 /** Create symbol of definition node and enter in symAtAddr map
515527 * @return the created symbol
@@ -554,15 +566,15 @@ class TreeUnpickler(reader: TastyReader,
554566 if (tag == TYPEDEF || tag == TYPEPARAM ) name = name.toTypeName
555567 skipParams()
556568 val ttag = nextUnsharedTag
557- val isAbsType = isAbstractType(ttag )
569+ val isAbsType = isAbstractType(name )
558570 val isClass = ttag == TEMPLATE
559571 val templateStart = currentAddr
560572 skipTree() // tpt
561573 val rhsStart = currentAddr
562574 val rhsIsEmpty = nothingButMods(end)
563575 if (! rhsIsEmpty) skipTree()
564576 val (givenFlags, annotFns, privateWithin) = readModifiers(end)
565- pickling.println(i " creating symbol $name at $start with flags $givenFlags" )
577+ pickling.println(i " creating symbol $name at $start with flags ${ givenFlags.flagsString} , isAbsType = $isAbsType , $ttag " )
566578 val flags = normalizeFlags(tag, givenFlags, name, isAbsType, rhsIsEmpty)
567579 def adjustIfModule (completer : LazyType ) =
568580 if (flags.is(Module )) adjustModuleCompleter(completer, name) else completer
0 commit comments