diff options
author | Martin Odersky <odersky@gmail.com> | 2017-03-27 17:09:42 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2017-04-11 09:33:11 +0200 |
commit | c599f7a693dbc363962d3f17f5eab5222136857f (patch) | |
tree | b50d69670f6c61f505482d8b4662df62f3f096dd /compiler/src/dotty/tools/dotc/core/tasty | |
parent | 0ccc76eeb5a0706478087364a380f67ae69759cc (diff) | |
download | dotty-c599f7a693dbc363962d3f17f5eab5222136857f.tar.gz dotty-c599f7a693dbc363962d3f17f5eab5222136857f.tar.bz2 dotty-c599f7a693dbc363962d3f17f5eab5222136857f.zip |
Drop Config.semanticNames option
We now handle only semantic names. Also, name extractor tags
and TASTY name tags are now aligned.
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/tasty')
3 files changed, 38 insertions, 52 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala b/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala index 0101ff25d..74c4265f2 100644 --- a/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala +++ b/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala @@ -49,43 +49,36 @@ class NameBuffer extends TastyBuffer(10000) { def writeNameRef(ref: NameRef): Unit = writeNat(ref.index) def writeNameRef(name: Name): Unit = writeNameRef(nameRefs(name.toTermName)) - def pickleNameContents(name: Name): Unit = name.toTermName match { - case name: SimpleTermName => - val bytes = - if (name.length == 0) new Array[Byte](0) - else Codec.toUTF8(chrs, name.start, name.length) - writeByte(UTF8) - writeNat(bytes.length) - writeBytes(bytes, bytes.length) - case QualifiedName(qualified, selector) => - writeByte(QUALIFIED) - withLength { writeNameRef(qualified); writeNameRef(selector) } - case FlattenedName(qualified, selector) => - writeByte(FLATTENED) - withLength { writeNameRef(qualified); writeNameRef(selector) } - case XpandedName(prefix, original) => - writeByte(EXPANDED) - withLength { writeNameRef(prefix); writeNameRef(original) } - case SignedName(original, Signature(params, result)) => - writeByte(SIGNED) - withLength( + def pickleNameContents(name: Name): Unit = { + writeByte(name.toTermName.info.tag) + name.toTermName match { + case name: SimpleTermName => + val bytes = + if (name.length == 0) new Array[Byte](0) + else Codec.toUTF8(chrs, name.start, name.length) + writeNat(bytes.length) + writeBytes(bytes, bytes.length) + case QualifiedName(qualified, selector) => + withLength { writeNameRef(qualified); writeNameRef(selector) } + case FlattenedName(qualified, selector) => + withLength { writeNameRef(qualified); writeNameRef(selector) } + case XpandedName(prefix, original) => + withLength { writeNameRef(prefix); writeNameRef(original) } + case SignedName(original, Signature(params, result)) => + withLength( { writeNameRef(original); writeNameRef(result); params.foreach(writeNameRef) }, if ((params.length + 2) * maxIndexWidth <= maxNumInByte) 1 else 2) - case ModuleClassName(module) => - writeByte(OBJECTCLASS) - withLength { writeNameRef(module) } - case SuperAccessorName(accessed) => - writeByte(SUPERACCESSOR) - withLength { writeNameRef(accessed) } - case DefaultGetterName(method, paramNumber) => - writeByte(DEFAULTGETTER) - withLength { writeNameRef(method); writeNat(paramNumber) } - case ShadowedName(original) => - writeByte(SHADOWED) - withLength { writeNameRef(original) } - case VariantName(original, sign) => - writeByte(VARIANT) - withLength { writeNameRef(original); writeNat(sign + 1) } + case ModuleClassName(module) => + withLength { writeNameRef(module) } + case SuperAccessorName(accessed) => + withLength { writeNameRef(accessed) } + case DefaultGetterName(method, paramNumber) => + withLength { writeNameRef(method); writeNat(paramNumber) } + case ShadowedName(original) => + withLength { writeNameRef(original) } + case VariantName(original, sign) => + withLength { writeNameRef(original); writeNat(sign + 1) } + } } override def assemble(): Unit = { diff --git a/compiler/src/dotty/tools/dotc/core/tasty/TastyFormat.scala b/compiler/src/dotty/tools/dotc/core/tasty/TastyFormat.scala index d4f6782fb..de70c04f3 100644 --- a/compiler/src/dotty/tools/dotc/core/tasty/TastyFormat.scala +++ b/compiler/src/dotty/tools/dotc/core/tasty/TastyFormat.scala @@ -224,12 +224,15 @@ object TastyFormat { final val QUALIFIED = 2 final val FLATTENED = 3 final val EXPANDED = 4 - final val SIGNED = 5 - final val OBJECTCLASS = 6 - final val SUPERACCESSOR = 7 - final val DEFAULTGETTER = 8 - final val SHADOWED = 9 - final val VARIANT = 10 + final val TRAITSETTER = 5 + final val DEFAULTGETTER = 10 + final val VARIANT = 11 + final val SUPERACCESSOR = 20 + final val INITIALIZER = 21 + final val SHADOWED = 22 + final val OBJECTCLASS = 29 + + final val SIGNED = 63 // AST tags diff --git a/compiler/src/dotty/tools/dotc/core/tasty/TreePickler.scala b/compiler/src/dotty/tools/dotc/core/tasty/TreePickler.scala index d1f2a3766..2da638291 100644 --- a/compiler/src/dotty/tools/dotc/core/tasty/TreePickler.scala +++ b/compiler/src/dotty/tools/dotc/core/tasty/TreePickler.scala @@ -56,16 +56,6 @@ class TreePickler(pickler: TastyPickler) { private def pickleNameAndSig(name: Name, sig: Signature) = pickleName(SignedName(name.toTermName, sig)) - private def pickleName(sym: Symbol)(implicit ctx: Context): Unit = { - val nameRef = - if (Config.semanticNames) { - if (sym is Flags.ExpandedName) assert(sym.name.is(XpandedName)) - nameIndex(sym.name) - } - else ??? - writeNat(nameRef.index) - } - private def pickleSymRef(sym: Symbol)(implicit ctx: Context) = symRefs.get(sym) match { case Some(label) => if (label != NoAddr) writeRef(label) else pickleForwardSymRef(sym) @@ -303,7 +293,7 @@ class TreePickler(pickler: TastyPickler) { registerDef(sym) writeByte(tag) withLength { - pickleName(sym) + pickleName(sym.name) pickleParams tpt match { case templ: Template => pickleTree(tpt) |