diff options
author | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2012-09-20 08:24:47 -0700 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2012-09-20 08:24:47 -0700 |
commit | d834d90d88e1dab6a8621b13c9d4b64d3417a94e (patch) | |
tree | ca7e39f48ba18bab6e6c010166137eb5f198a407 | |
parent | 008db4088de98c52bb5ef673b74a9b11e4236d27 (diff) | |
parent | c215592fde3d70c5924de40d5ff27cb374cee93d (diff) | |
download | scala-d834d90d88e1dab6a8621b13c9d4b64d3417a94e.tar.gz scala-d834d90d88e1dab6a8621b13c9d4b64d3417a94e.tar.bz2 scala-d834d90d88e1dab6a8621b13c9d4b64d3417a94e.zip |
Merge pull request #1353 from gkossakowski/SI-6376-scalap-is-broken
Fix problem with names encoding in scalap.
-rw-r--r-- | src/scalap/scala/tools/scalap/Main.scala | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/scalap/scala/tools/scalap/Main.scala b/src/scalap/scala/tools/scalap/Main.scala index 49c272cc28..a514f0d5a1 100644 --- a/src/scalap/scala/tools/scalap/Main.scala +++ b/src/scalap/scala/tools/scalap/Main.scala @@ -97,9 +97,14 @@ class Main { */ def process(args: Arguments, path: ClassPath[AbstractFile])(classname: String): Unit = { // find the classfile - val encName = NameTransformer.encode( - if (classname == "scala.AnyRef") "java.lang.Object" - else classname) + val encName = classname match { + case "scala.AnyRef" => "java.lang.Object" + case _ => + // we have to encode every fragment of a name separately, otherwise the NameTransformer + // will encode using unicode escaping dot separators as well + // we can afford allocations because this is not a performance critical code + classname.split('.').map(NameTransformer.encode).mkString(".") + } val cls = path.findClass(encName) if (cls.isDefined && cls.get.binary.isDefined) { val cfile = cls.get.binary.get |