aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-10-31 14:46:14 +0100
committerMartin Odersky <odersky@gmail.com>2016-10-31 14:46:14 +0100
commit0c3a6788ababab2ac10c3dbf76cd3c088ff0582c (patch)
treecb1e1ae1012edd6c61e898086baa61e029af1faa /src/dotty/tools/dotc/core
parentd4c26fc6072e69d3f58685e6bfec4609eb9af13c (diff)
downloaddotty-0c3a6788ababab2ac10c3dbf76cd3c088ff0582c.tar.gz
dotty-0c3a6788ababab2ac10c3dbf76cd3c088ff0582c.tar.bz2
dotty-0c3a6788ababab2ac10c3dbf76cd3c088ff0582c.zip
Keep rhs of TypeDefs until pickling
Don't convert to a TypeTree in PostTyper, because that loses internal positions.
Diffstat (limited to 'src/dotty/tools/dotc/core')
-rw-r--r--src/dotty/tools/dotc/core/tasty/TreePickler.scala8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/core/tasty/TreePickler.scala b/src/dotty/tools/dotc/core/tasty/TreePickler.scala
index a1ac69e0d..f0d8da9df 100644
--- a/src/dotty/tools/dotc/core/tasty/TreePickler.scala
+++ b/src/dotty/tools/dotc/core/tasty/TreePickler.scala
@@ -49,6 +49,10 @@ class TreePickler(pickler: TastyPickler) {
case None =>
}
}
+
+ def rhs(tdef: TypeDef)(implicit ctx: Context) =
+ if (tdef.symbol.isClass) tdef.rhs
+ else TypeTree(tdef.symbol.info).withPos(tdef.rhs.pos)
private def pickleName(name: Name): Unit = writeNat(nameIndex(name).index)
private def pickleName(name: TastyName): Unit = writeNat(nameIndex(name).index)
@@ -332,7 +336,7 @@ class TreePickler(pickler: TastyPickler) {
tree match {
case tree: ValDef => pickleDef(PARAM, tree.symbol, tree.tpt)
case tree: DefDef => pickleDef(PARAM, tree.symbol, tree.tpt, tree.rhs)
- case tree: TypeDef => pickleDef(TYPEPARAM, tree.symbol, tree.rhs)
+ case tree: TypeDef => pickleDef(TYPEPARAM, tree.symbol, rhs(tree))
}
}
@@ -474,7 +478,7 @@ class TreePickler(pickler: TastyPickler) {
}
pickleDef(DEFDEF, tree.symbol, tree.tpt, tree.rhs, pickleAllParams)
case tree: TypeDef =>
- pickleDef(TYPEDEF, tree.symbol, tree.rhs)
+ pickleDef(TYPEDEF, tree.symbol, rhs(tree))
case tree: Template =>
registerDef(tree.symbol)
writeByte(TEMPLATE)