aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-06-07 13:28:55 +0200
committerMartin Odersky <odersky@gmail.com>2016-07-11 13:35:01 +0200
commit463e99a48996fbf7148aa62ec6d2f8b28000d2d4 (patch)
tree8e82c76c2de8b671dc3c2036a217a44d272c1a78 /src/dotty/tools/dotc/core/Types.scala
parent68e73e854e04f7bea20a8c95637729bf6889e17d (diff)
downloaddotty-463e99a48996fbf7148aa62ec6d2f8b28000d2d4.tar.gz
dotty-463e99a48996fbf7148aa62ec6d2f8b28000d2d4.tar.bz2
dotty-463e99a48996fbf7148aa62ec6d2f8b28000d2d4.zip
Optionally, check kinds match for & and |
Optionally, check kinds of operands of & and | match.
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r--src/dotty/tools/dotc/core/Types.scala4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index 7a050c412..986a9c292 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -2358,6 +2358,8 @@ object Types {
object AndType {
def apply(tp1: Type, tp2: Type)(implicit ctx: Context) = {
assert(tp1.isInstanceOf[ValueType] && tp2.isInstanceOf[ValueType])
+ if (Config.checkKinds)
+ assert((tp1.knownHK - tp2.knownHK).abs <= 1, i"$tp1 & $tp2 / " + s"$tp1 & $tp2")
unchecked(tp1, tp2)
}
def unchecked(tp1: Type, tp2: Type)(implicit ctx: Context) = {
@@ -2392,6 +2394,8 @@ object Types {
object OrType {
def apply(tp1: Type, tp2: Type)(implicit ctx: Context) = {
assertUnerased()
+ if (Config.checkKinds)
+ assert((tp1.knownHK - tp2.knownHK).abs <= 1, i"$tp1 | $tp2")
unique(new CachedOrType(tp1, tp2))
}
def make(tp1: Type, tp2: Type)(implicit ctx: Context): Type =