aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-18 23:08:12 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-18 23:58:46 +0100
commitaf6f37109e439d8accd66a30546e3d8cf626085b (patch)
tree500e135fdee0d00c88d2b80290024b3295e62d2d /src/dotty/tools
parent0d1396266c15c9bc88ea922a256a9c3709f33e7e (diff)
downloaddotty-af6f37109e439d8accd66a30546e3d8cf626085b.tar.gz
dotty-af6f37109e439d8accd66a30546e3d8cf626085b.tar.bz2
dotty-af6f37109e439d8accd66a30546e3d8cf626085b.zip
Populate addresses of symbols after pickler
To allow other phases to generate their info.
Diffstat (limited to 'src/dotty/tools')
-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)