aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2017-03-23 23:35:17 +0100
committerMartin Odersky <odersky@gmail.com>2017-04-11 09:33:10 +0200
commita2731a8be2f3434218623c0b0ecd4078107f14a5 (patch)
tree3077df892ba46e4142cb6a38555cc7604be36222 /compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala
parente2056bb62e8d4ce5806111f0c54f7331eb690f0a (diff)
downloaddotty-a2731a8be2f3434218623c0b0ecd4078107f14a5.tar.gz
dotty-a2731a8be2f3434218623c0b0ecd4078107f14a5.tar.bz2
dotty-a2731a8be2f3434218623c0b0ecd4078107f14a5.zip
Handle expansion and flattening
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala')
-rw-r--r--compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala18
1 files changed, 13 insertions, 5 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala b/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala
index f1f03dd3c..7ac505a20 100644
--- a/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala
+++ b/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala
@@ -29,8 +29,13 @@ class NameBuffer extends TastyBuffer(10000) {
val tname = name.toTermName match {
case DerivedTermName(name1, NameInfo.ModuleClass) =>
ModuleClass(nameIndex(name1, toTasty))
- case DerivedTermName(prefix, NameInfo.Qualified(selector, ".")) =>
- Qualified(nameIndex(prefix, toTasty), nameIndex(selector))
+ case DerivedTermName(prefix, qual: NameInfo.Qualified) =>
+ val tcon: (NameRef, NameRef) => TastyName = qual match {
+ case _: NameInfo.Select => Qualified
+ case _: NameInfo.Flatten => Flattened
+ case _: NameInfo.Expand => Expanded
+ }
+ tcon(nameIndex(prefix, toTasty), nameIndex(qual.name))
case name1 =>
if (name1.isShadowedName) Shadowed(nameIndex(name1.revertShadowed, toTasty))
else toTasty(name1.asSimpleName)
@@ -72,14 +77,17 @@ class NameBuffer extends TastyBuffer(10000) {
case Qualified(qualified, selector) =>
writeByte(QUALIFIED)
withLength { writeNameRef(qualified); writeNameRef(selector) }
+ case Flattened(qualified, selector) =>
+ writeByte(FLATTENED)
+ withLength { writeNameRef(qualified); writeNameRef(selector) }
+ case Expanded(prefix, original) =>
+ writeByte(EXPANDED)
+ withLength { writeNameRef(prefix); writeNameRef(original) }
case Signed(original, params, result) =>
writeByte(SIGNED)
withLength(
{ writeNameRef(original); writeNameRef(result); params.foreach(writeNameRef) },
if ((params.length + 2) * maxIndexWidth <= maxNumInByte) 1 else 2)
- case Expanded(prefix, original) =>
- writeByte(EXPANDED)
- withLength { writeNameRef(prefix); writeNameRef(original) }
case ModuleClass(module) =>
writeByte(OBJECTCLASS)
withLength { writeNameRef(module) }