aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/core/tasty
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2017-03-27 17:09:42 +0200
committerMartin Odersky <odersky@gmail.com>2017-04-11 09:33:11 +0200
commitc599f7a693dbc363962d3f17f5eab5222136857f (patch)
treeb50d69670f6c61f505482d8b4662df62f3f096dd /compiler/src/dotty/tools/dotc/core/tasty
parent0ccc76eeb5a0706478087364a380f67ae69759cc (diff)
downloaddotty-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')
-rw-r--r--compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala63
-rw-r--r--compiler/src/dotty/tools/dotc/core/tasty/TastyFormat.scala15
-rw-r--r--compiler/src/dotty/tools/dotc/core/tasty/TreePickler.scala12
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)