diff options
author | Martin Odersky <odersky@gmail.com> | 2016-06-07 13:28:55 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-07-11 13:35:01 +0200 |
commit | 463e99a48996fbf7148aa62ec6d2f8b28000d2d4 (patch) | |
tree | 8e82c76c2de8b671dc3c2036a217a44d272c1a78 /src/dotty/tools/dotc/core/Types.scala | |
parent | 68e73e854e04f7bea20a8c95637729bf6889e17d (diff) | |
download | dotty-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.scala | 4 |
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 = |