summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/internal/Definitions.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-09-28 21:52:39 +0000
committerPaul Phillips <paulp@improving.org>2011-09-28 21:52:39 +0000
commit898755056642cc3771d33260295f1f51cabc6513 (patch)
tree0cc88da9e1d3b293f998140d24d8b7bd11f3e96e /src/compiler/scala/reflect/internal/Definitions.scala
parent3a1332c451c8bd9b987ab3dbe775ef5a08360705 (diff)
downloadscala-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.scala6
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