aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/CompilationUnit.scala4
-rw-r--r--src/dotty/tools/dotc/core/pickling/TreePickler.scala6
-rw-r--r--src/dotty/tools/dotc/transform/Pickler.scala1
3 files changed, 10 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/CompilationUnit.scala b/src/dotty/tools/dotc/CompilationUnit.scala
index c2cd9361c..2f5f1202d 100644
--- a/src/dotty/tools/dotc/CompilationUnit.scala
+++ b/src/dotty/tools/dotc/CompilationUnit.scala
@@ -1,10 +1,12 @@
package dotty.tools
package dotc
+import dotty.tools.dotc.core.Types.Type
import dotty.tools.dotc.core.pickling.{TastyBuffer, TastyPickler}
import util.SourceFile
import ast.{tpd, untpd}
import TastyBuffer._
+import dotty.tools.dotc.core.Symbols._
class CompilationUnit(val source: SourceFile) {
@@ -19,4 +21,6 @@ class CompilationUnit(val source: SourceFile) {
lazy val pickled: TastyPickler = new TastyPickler()
var addrOfTree: tpd.Tree => Option[Addr] = (_ => None)
+
+ var addrOfSym: Symbol => Option[Addr] = (_ => None)
} \ No newline at end of file
diff --git a/src/dotty/tools/dotc/core/pickling/TreePickler.scala b/src/dotty/tools/dotc/core/pickling/TreePickler.scala
index 4ffb3b1b9..e23efd860 100644
--- a/src/dotty/tools/dotc/core/pickling/TreePickler.scala
+++ b/src/dotty/tools/dotc/core/pickling/TreePickler.scala
@@ -26,7 +26,11 @@ class TreePickler(pickler: TastyPickler) {
op
fillRef(lengthAddr, currentAddr, relative = true)
}
-
+
+ def addrOfSym(sym: Symbol): Option[Addr] = {
+ symRefs.get(sym)
+ }
+
private var makeSymbolicRefsTo: Symbol = NoSymbol
/** All references to members of class `sym` are pickled
diff --git a/src/dotty/tools/dotc/transform/Pickler.scala b/src/dotty/tools/dotc/transform/Pickler.scala
index 0d8acf38a..953f69988 100644
--- a/src/dotty/tools/dotc/transform/Pickler.scala
+++ b/src/dotty/tools/dotc/transform/Pickler.scala
@@ -36,6 +36,7 @@ class Pickler extends Phase {
val treePkl = new TreePickler(pickler)
treePkl.pickle(tree :: Nil)
unit.addrOfTree = treePkl.buf.addrOfTree
+ unit.addrOfSym = treePkl.addrOfSym
if (tree.pos.exists)
new PositionPickler(pickler, treePkl.buf.addrOfTree).picklePositions(tree :: Nil, tree.pos)