From 64660068dd89813c7c7a09db1e783177ac31f158 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Sun, 6 Mar 2011 14:34:23 +0000 Subject: Another corner involving generic signatures and... Another corner involving generic signatures and java interop flushed out by seth tisue. Keep that detector fired up seth or the rebel alliance will surely be crushed. (In fact, I nominate you to write a test suite!) Closes #4317, no review. --- src/compiler/scala/tools/nsc/transform/Erasure.scala | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala index dcc6ab044c..dad422a4a9 100644 --- a/src/compiler/scala/tools/nsc/transform/Erasure.scala +++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala @@ -326,8 +326,13 @@ abstract class Erasure extends AddInterfaces val paramString = if (toplevel) tparams map paramSig mkString ("<", "", ">") else "" paramString + jsig(restpe) case MethodType(params, restpe) => - "("+(params map (_.tpe) map jsig).mkString+")"+ - (if (restpe.typeSymbol == UnitClass || sym0.isConstructor) VOID_TAG.toString else jsig(restpe)) + val ressym = restpe.typeSymbol + "(%s)%s".format( + params map (x => jsig(x.tpe)) mkString, + if (ressym == UnitClass || sym0.isConstructor) VOID_TAG + else if (isValueClass(ressym)) abbrvTag(ressym) + else jsig(restpe) + ) case RefinedType(parent :: _, decls) => jsig(parent) case ClassInfoType(parents, _, _) => -- cgit v1.2.3