aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Namer.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-01-13 16:57:54 +0100
committerMartin Odersky <odersky@gmail.com>2014-01-13 16:57:54 +0100
commit3b21416e1b1ba9f301e8fc269f656651f99ca0ea (patch)
treeaa699dc3d1ed14c1bb2a504e055aa2174568e3f3 /src/dotty/tools/dotc/typer/Namer.scala
parenta7de2380c1d0864a4b54a3e9630543bebeac2c31 (diff)
downloaddotty-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/dotc/typer/Namer.scala')
-rw-r--r--src/dotty/tools/dotc/typer/Namer.scala6
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