summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2012-09-20 08:24:47 -0700
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2012-09-20 08:24:47 -0700
commitd834d90d88e1dab6a8621b13c9d4b64d3417a94e (patch)
treeca7e39f48ba18bab6e6c010166137eb5f198a407 /src
parent008db4088de98c52bb5ef673b74a9b11e4236d27 (diff)
parentc215592fde3d70c5924de40d5ff27cb374cee93d (diff)
downloadscala-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.
Diffstat (limited to 'src')
-rw-r--r--src/scalap/scala/tools/scalap/Main.scala11
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