aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Checking.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-12-11 09:56:40 +0100
committerMartin Odersky <odersky@gmail.com>2015-12-11 10:06:14 +0100
commitfd44a171340a87359e267aeb63072bc5a8873b10 (patch)
tree45bf12dbad8d185ba69fd37fc5440d01bce3b591 /src/dotty/tools/dotc/typer/Checking.scala
parent1c77b03cb9909c3a1bf4477e49e58d81b25f47b2 (diff)
downloaddotty-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.scala12
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) = ()
}