Skip to content

Commit 68043eb

Browse files
committed
Make DottyUnpickler mode a class parameter
1 parent ad111dd commit 68043eb

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

compiler/src/dotty/tools/dotc/core/quoted/PickledQuotes.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import dotty.tools.dotc.config.Printers._
66
import dotty.tools.dotc.core.Constants.Constant
77
import dotty.tools.dotc.core.Contexts._
88
import dotty.tools.dotc.core.Decorators._
9-
import dotty.tools.dotc.core.Flags._
109
import dotty.tools.dotc.core.StdNames._
1110
import dotty.tools.dotc.core.NameKinds
1211
import dotty.tools.dotc.core.Symbols._
1312
import dotty.tools.dotc.core.Types.Type
1413
import dotty.tools.dotc.core.tasty.TreePickler.Hole
1514
import dotty.tools.dotc.core.tasty.{TastyPickler, TastyPrinter, TastyString}
15+
import dotty.tools.dotc.core.tasty.TreeUnpickler.UnpickleMode
1616

1717
import scala.quoted.Types._
1818
import scala.quoted.Exprs._
@@ -104,7 +104,8 @@ object PickledQuotes {
104104
new TastyPrinter(bytes).printContents()
105105
}
106106

107-
val unpickler = new QuoteUnpickler(bytes, splices, isType)
107+
val mode = if (isType) UnpickleMode.TypeTree else UnpickleMode.Term
108+
val unpickler = new QuoteUnpickler(bytes, splices, mode)
108109
unpickler.enter(Set.empty)
109110
val tree = unpickler.tree
110111

compiler/src/dotty/tools/dotc/core/quoted/QuoteUnpickler.scala

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package dotty.tools.dotc.core.quoted
22

33
import dotty.tools.dotc.core.tasty._
44
import dotty.tools.dotc.core.tasty.TastyUnpickler.NameTable
5+
import dotty.tools.dotc.core.tasty.TreeUnpickler.UnpickleMode
56

67
object QuoteUnpickler {
78
class QuotedTreeSectionUnpickler(posUnpickler: Option[PositionUnpickler], splices: Seq[Any])
@@ -15,13 +16,10 @@ object QuoteUnpickler {
1516
* @param bytes the bytearray containing the Tasty file from which we unpickle
1617
* @param splices splices that will fill the holes in the quote
1718
*/
18-
class QuoteUnpickler(bytes: Array[Byte], splices: Seq[Any], isTypeTree: Boolean) extends DottyUnpickler(bytes) {
19+
class QuoteUnpickler(bytes: Array[Byte], splices: Seq[Any], mode: UnpickleMode) extends DottyUnpickler(bytes, mode) {
1920
import DottyUnpickler._
2021
import QuoteUnpickler._
2122

22-
protected override val mode: TreeUnpickler.UnpickleMode =
23-
if (isTypeTree) TreeUnpickler.UnpickleMode.TypeTree else TreeUnpickler.UnpickleMode.Term
24-
2523
protected override def treeSectionUnpickler(posUnpicklerOpt: Option[PositionUnpickler], commentUnpicklerOpt: Option[CommentUnpickler]): TreeSectionUnpickler =
2624
new QuotedTreeSectionUnpickler(posUnpicklerOpt, splices)
2725
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import util.{SourceFile, NoSource}
1111
import Annotations.Annotation
1212
import classfile.ClassfileParser
1313
import Names.SimpleName
14+
import TreeUnpickler.UnpickleMode
1415

1516
object DottyUnpickler {
1617

@@ -37,7 +38,7 @@ object DottyUnpickler {
3738
/** A class for unpickling Tasty trees and symbols.
3839
* @param bytes the bytearray containing the Tasty file from which we unpickle
3940
*/
40-
class DottyUnpickler(bytes: Array[Byte]) extends ClassfileParser.Embedded with tpd.TreeProvider {
41+
class DottyUnpickler(bytes: Array[Byte], mode: UnpickleMode = UnpickleMode.TopLevel) extends ClassfileParser.Embedded with tpd.TreeProvider {
4142
import tpd._
4243
import DottyUnpickler._
4344

@@ -46,8 +47,6 @@ class DottyUnpickler(bytes: Array[Byte]) extends ClassfileParser.Embedded with t
4647
private val commentUnpicklerOpt = unpickler.unpickle(new CommentsSectionUnpickler)
4748
private val treeUnpickler = unpickler.unpickle(treeSectionUnpickler(posUnpicklerOpt, commentUnpicklerOpt)).get
4849

49-
protected val mode: TreeUnpickler.UnpickleMode = TreeUnpickler.UnpickleMode.TopLevel
50-
5150
/** Enter all toplevel classes and objects into their scopes
5251
* @param roots a set of SymDenotations that should be overwritten by unpickling
5352
*/

0 commit comments

Comments
 (0)