diff options
author | Martin Odersky <odersky@gmail.com> | 2014-01-13 16:57:54 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-01-13 16:57:54 +0100 |
commit | 3b21416e1b1ba9f301e8fc269f656651f99ca0ea (patch) | |
tree | aa699dc3d1ed14c1bb2a504e055aa2174568e3f3 /src/dotty/tools | |
parent | a7de2380c1d0864a4b54a3e9630543bebeac2c31 (diff) | |
download | dotty-3b21416e1b1ba9f301e8fc269f656651f99ca0ea.tar.gz dotty-3b21416e1b1ba9f301e8fc269f656651f99ca0ea.tar.bz2 dotty-3b21416e1b1ba9f301e8fc269f656651f99ca0ea.zip |
Make sure constructors have at least one non-empty parameter lists
(might want to change this later, but that's how Scala2 does things)
Diffstat (limited to 'src/dotty/tools')
-rw-r--r-- | src/dotty/tools/dotc/typer/Namer.scala | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/typer/Namer.scala b/src/dotty/tools/dotc/typer/Namer.scala index 1ac95052a..317827129 100644 --- a/src/dotty/tools/dotc/typer/Namer.scala +++ b/src/dotty/tools/dotc/typer/Namer.scala @@ -519,7 +519,11 @@ class Namer { typer: Typer => if (isSecondaryConstructor) sym.owner.primaryConstructor.typeParams else tparams map symbolOfTree def wrapMethType(restpe: Type): Type = { - val paramSymss = vparamss.nestedMap(symbolOfTree) + var paramSymss = vparamss.nestedMap(symbolOfTree) + // Make sure constructor has one non-implicit parameter list + if (isConstructor && + (paramSymss.isEmpty || paramSymss.head.nonEmpty && (paramSymss.head.head is Implicit))) + paramSymss = Nil :: paramSymss val restpe1 = // try to make anonymous functions non-dependent, so that they can be used in closures if (name == nme.ANON_FUN) tpd.avoid(restpe, paramSymss.flatten) else restpe |