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 17:14:39 +0100
committerMartin Odersky <odersky@gmail.com>2017-04-11 09:33:10 +0200
commitc27cbd16e6fd3cc00e603aebef95f477684b3390 (patch)
tree5a2a039e2249812253014ddd5fe4381ad817dd53 /compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala
parentbbc84eabcd244179299ad435b6e9d7473e5ff892 (diff)
downloaddotty-c27cbd16e6fd3cc00e603aebef95f477684b3390.tar.gz
dotty-c27cbd16e6fd3cc00e603aebef95f477684b3390.tar.bz2
dotty-c27cbd16e6fd3cc00e603aebef95f477684b3390.zip
Bug fixes
nameddefaults.scala now compiles without crashing
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala')
-rw-r--r--compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala30
1 files changed, 20 insertions, 10 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala b/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala
index b05e6ef21..f1f03dd3c 100644
--- a/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala
+++ b/compiler/src/dotty/tools/dotc/core/tasty/NameBuffer.scala
@@ -4,7 +4,7 @@ package core
package tasty
import collection.mutable
-import Names.{Name, chrs}
+import Names.{Name, chrs, DerivedTermName, SimpleTermName}
import Decorators._, NameOps._
import TastyBuffer._
import scala.io.Codec
@@ -24,21 +24,31 @@ class NameBuffer extends TastyBuffer(10000) {
nameRefs(name) = ref
ref
}
- def nameIndex(name: Name): NameRef = {
- val tname =
- if (name.isShadowedName) Shadowed(nameIndex(name.revertShadowed))
- else Simple(name.toTermName.toSimpleName)
+
+ def nameIndex(name: Name, toTasty: SimpleTermName => TastyName): NameRef = {
+ 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 name1 =>
+ if (name1.isShadowedName) Shadowed(nameIndex(name1.revertShadowed, toTasty))
+ else toTasty(name1.asSimpleName)
+ }
nameIndex(tname)
}
+ def nameIndex(name: Name): NameRef = nameIndex(name, Simple)
+
def nameIndex(str: String): NameRef = nameIndex(str.toTermName)
def fullNameIndex(name: Name): NameRef = {
- val pos = name.lastIndexOf('.')
- if (pos > 0)
- nameIndex(Qualified(fullNameIndex(name.take(pos)), nameIndex(name.drop(pos + 1))))
- else
- nameIndex(name)
+ def split(name: SimpleTermName): TastyName = {
+ val pos = name.lastIndexOf('.')
+ if (pos <= 0) Simple(name)
+ else Qualified(fullNameIndex(name.take(pos)), nameIndex(name.drop(pos + 1)))
+ }
+ nameIndex(name, split)
}
private def withLength(op: => Unit, lengthWidth: Int = 1): Unit = {