diff options
author | Martin Odersky <odersky@gmail.com> | 2015-12-11 09:56:40 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-12-11 10:06:14 +0100 |
commit | fd44a171340a87359e267aeb63072bc5a8873b10 (patch) | |
tree | 45bf12dbad8d185ba69fd37fc5440d01bce3b591 /src/dotty/tools/dotc/typer/Checking.scala | |
parent | 1c77b03cb9909c3a1bf4477e49e58d81b25f47b2 (diff) | |
download | dotty-fd44a171340a87359e267aeb63072bc5a8873b10.tar.gz dotty-fd44a171340a87359e267aeb63072bc5a8873b10.tar.bz2 dotty-fd44a171340a87359e267aeb63072bc5a8873b10.zip |
Disallow hk type parameters in lower bounds.
Also: various cleanups to comments.
Diffstat (limited to 'src/dotty/tools/dotc/typer/Checking.scala')
-rw-r--r-- | src/dotty/tools/dotc/typer/Checking.scala | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/typer/Checking.scala b/src/dotty/tools/dotc/typer/Checking.scala index 9dfe46232..57032c4d9 100644 --- a/src/dotty/tools/dotc/typer/Checking.scala +++ b/src/dotty/tools/dotc/typer/Checking.scala @@ -401,6 +401,17 @@ trait Checking { errorTree(tpt, d"missing type parameter for ${tpt.tpe}") } else tpt + + def checkLowerNotHK(sym: Symbol, tparams: List[Symbol], pos: Position)(implicit ctx: Context) = + if (tparams.nonEmpty) + sym.info match { + case info: TypeAlias => // ok + case TypeBounds(lo, _) => + for (tparam <- tparams) + if (tparam.typeRef.occursIn(lo)) + ctx.error(i"type parameter ${tparam.name} may not occur in lower bound $lo", pos) + case _ => + } } trait NoChecking extends Checking { @@ -414,4 +425,5 @@ trait NoChecking extends Checking { override def checkNoDoubleDefs(cls: Symbol)(implicit ctx: Context): Unit = () override def checkParentCall(call: Tree, caller: ClassSymbol)(implicit ctx: Context) = () override def checkSimpleKinded(tpt: Tree)(implicit ctx: Context): Tree = tpt + override def checkLowerNotHK(sym: Symbol, tparams: List[Symbol], pos: Position)(implicit ctx: Context) = () } |