diff options
author | Martin Odersky <odersky@gmail.com> | 2017-03-23 23:35:17 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2017-04-11 09:33:10 +0200 |
commit | a2731a8be2f3434218623c0b0ecd4078107f14a5 (patch) | |
tree | 3077df892ba46e4142cb6a38555cc7604be36222 /compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala | |
parent | e2056bb62e8d4ce5806111f0c54f7331eb690f0a (diff) | |
download | dotty-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.scala | 18 |
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) } |