diff options
author | Martin Odersky <odersky@gmail.com> | 2017-03-31 18:32:02 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2017-04-11 09:33:12 +0200 |
commit | b4f21c6da6b6bc1797908f1400631573b6445e31 (patch) | |
tree | 19efe5c588230059b04ef046114c30d3fd64b1f9 /compiler/src/dotty/tools/dotc/core/classfile | |
parent | 7a927ce233a8ea4b8ddc285b8a36c61ca3fdd405 (diff) | |
download | dotty-b4f21c6da6b6bc1797908f1400631573b6445e31.tar.gz dotty-b4f21c6da6b6bc1797908f1400631573b6445e31.tar.bz2 dotty-b4f21c6da6b6bc1797908f1400631573b6445e31.zip |
Names are no longer Seqs
Drop Seq implementation of name. This implementation
was always problematic because it entailed potentially
very costly conversions to toSimpleName. We now have
better control over when we convert a name to a simple
name.
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/classfile')
-rw-r--r-- | compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala b/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala index b09da70e1..98ac52533 100644 --- a/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala +++ b/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala @@ -247,7 +247,8 @@ class ClassfileParser( final def objToAny(tp: Type)(implicit ctx: Context) = if (tp.isDirectRef(defn.ObjectClass) && !ctx.phase.erasedTypes) defn.AnyType else tp - private def sigToType(sig: TermName, owner: Symbol = null)(implicit ctx: Context): Type = { + private def sigToType(signature: TermName, owner: Symbol = null)(implicit ctx: Context): Type = { + val sig = signature.toSimpleName var index = 0 val end = sig.length def accept(ch: Char): Unit = { @@ -655,7 +656,10 @@ class ClassfileParser( * and implicitly current class' superclasses. */ private def enterOwnInnerClasses()(implicit ctx: Context): Unit = { - def className(name: Name): Name = name.drop(name.lastIndexOf('.') + 1) + def className(name: Name): Name = { + val name1 = name.toSimpleName + name1.drop(name1.lastIndexOf('.') + 1) + } def enterClassAndModule(entry: InnerClassEntry, file: AbstractFile, jflags: Int) = { ctx.base.loaders.enterClassAndModule( @@ -1003,7 +1007,7 @@ class ClassfileParser( val start = starts(index) if (in.buf(start).toInt != CONSTANT_CLASS) errorBadTag(start) val name = getExternalName(in.getChar(start + 1)) - if (name(0) == ARRAY_TAG) { + if (name.firstPart(0) == ARRAY_TAG) { c = sigToType(name) values(index) = c } else { |