diff options
author | Martin Odersky <odersky@gmail.com> | 2017-03-01 22:10:17 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2017-03-01 22:11:45 +0100 |
commit | 1d237bb1f0c7aac949b52601e26e96fff0fe4ffd (patch) | |
tree | fc1f8cdcf01bc9939ee50b1d138c00616ddbc72d /compiler/src/dotty/tools/dotc/core/TypeComparer.scala | |
parent | 58b71ca50ded400efa92ac8d92f4378844baaf7d (diff) | |
download | dotty-1d237bb1f0c7aac949b52601e26e96fff0fe4ffd.tar.gz dotty-1d237bb1f0c7aac949b52601e26e96fff0fe4ffd.tar.bz2 dotty-1d237bb1f0c7aac949b52601e26e96fff0fe4ffd.zip |
Make alignArgsInAnd safe and turn it on by default
Turned out hmaps.scala requires the arg alignment to compile.
So we have our first counterexample that we cannot drop this
hack. Now it is made safe in the sense that no constraints get
lost anymore.
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/TypeComparer.scala')
-rw-r--r-- | compiler/src/dotty/tools/dotc/core/TypeComparer.scala | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/TypeComparer.scala b/compiler/src/dotty/tools/dotc/core/TypeComparer.scala index 744112280..6042cc12c 100644 --- a/compiler/src/dotty/tools/dotc/core/TypeComparer.scala +++ b/compiler/src/dotty/tools/dotc/core/TypeComparer.scala @@ -1315,7 +1315,7 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling { // Given two refinements `T1 { X = S1 }` and `T2 { X = S2 }` rwrite to // `T1 & T2 { X B }` where `B` is the conjunction of the bounds of `X` in `T1` and `T2`. // - // However, if `Config.alignArgsInAnd` is set, and both aliases `X = Si` are + // However, if `homogenizeArgs` is set, and both aliases `X = Si` are // nonvariant, and `S1 =:= S2` (possibly by instantiating type parameters), // rewrite instead to `T1 & T2 { X = S1 }`. This rule is contentious because // it cuts the constraint set. On the other hand, without it we would replace @@ -1329,7 +1329,7 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling { case tp: TypeAlias => tp.variance == 0 case _ => false } - if (Config.alignArgsInAnd && + if (homogenizeArgs && isNonvariantAlias(rinfo1) && isNonvariantAlias(rinfo2)) isSameType(rinfo1, rinfo2) |