diff options
author | Paul Phillips <paulp@improving.org> | 2011-09-28 21:52:39 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-09-28 21:52:39 +0000 |
commit | 898755056642cc3771d33260295f1f51cabc6513 (patch) | |
tree | 0cc88da9e1d3b293f998140d24d8b7bd11f3e96e /src/compiler/scala/reflect/internal/Definitions.scala | |
parent | 3a1332c451c8bd9b987ab3dbe775ef5a08360705 (diff) | |
download | scala-898755056642cc3771d33260295f1f51cabc6513.tar.gz scala-898755056642cc3771d33260295f1f51cabc6513.tar.bz2 scala-898755056642cc3771d33260295f1f51cabc6513.zip |
Fix bug in ModuleDef elimination.
Fixes corner case diagnosed by miguel. Closes SI-5012, no review.
Diffstat (limited to 'src/compiler/scala/reflect/internal/Definitions.scala')
-rw-r--r-- | src/compiler/scala/reflect/internal/Definitions.scala | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/compiler/scala/reflect/internal/Definitions.scala b/src/compiler/scala/reflect/internal/Definitions.scala index ba9bd27ab6..1f918d0df1 100644 --- a/src/compiler/scala/reflect/internal/Definitions.scala +++ b/src/compiler/scala/reflect/internal/Definitions.scala @@ -297,6 +297,12 @@ trait Definitions extends reflect.api.StandardDefinitions { def isVarArgsList(params: List[Symbol]) = params.nonEmpty && isRepeatedParamType(params.last.tpe) def isVarArgTypes(formals: List[Type]) = formals.nonEmpty && isRepeatedParamType(formals.last) + def hasRepeatedParam(tp: Type): Boolean = tp match { + case MethodType(formals, restpe) => isScalaVarArgs(formals) || hasRepeatedParam(restpe) + case PolyType(_, restpe) => hasRepeatedParam(restpe) + case _ => false + } + def isPrimitiveArray(tp: Type) = tp match { case TypeRef(_, ArrayClass, arg :: Nil) => isValueClass(arg.typeSymbol) case _ => false |