aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dark@d-d.me>2017-03-15 13:04:43 +0100
committerGitHub <noreply@github.com>2017-03-15 13:04:43 +0100
commit72d5aaadbac78ccdf4aab9f2b2f426a1e34c9974 (patch)
treea63a056c25100d3aa0a6a7bf7db049a70016b20e /compiler/src/dotty/tools/dotc/core/Types.scala
parent141fb4b8c63e5b9cbbb1b92f55412e676a38cbf0 (diff)
parent864432373dc31b62529e5c221e3b8dca238aec18 (diff)
downloaddotty-72d5aaadbac78ccdf4aab9f2b2f426a1e34c9974.tar.gz
dotty-72d5aaadbac78ccdf4aab9f2b2f426a1e34c9974.tar.bz2
dotty-72d5aaadbac78ccdf4aab9f2b2f426a1e34c9974.zip
Merge pull request #2096 from dotty-staging/fix-i2051
Fix #2051: allow override T with => T or ()T
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/Types.scala')
-rw-r--r--compiler/src/dotty/tools/dotc/core/Types.scala7
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/Types.scala b/compiler/src/dotty/tools/dotc/core/Types.scala
index 8e852a9a9..abc496ec0 100644
--- a/compiler/src/dotty/tools/dotc/core/Types.scala
+++ b/compiler/src/dotty/tools/dotc/core/Types.scala
@@ -727,8 +727,8 @@ object Types {
/** Is this type a legal type for a member that overrides another
* member of type `that`? This is the same as `<:<`, except that
- * the types ()T and => T are identified, and T is seen as overriding
- * either type.
+ * the types `()T`, `=> T` and `T` are seen as overriding
+ * each other.
*/
final def overrides(that: Type)(implicit ctx: Context) = {
def result(tp: Type): Type = tp match {
@@ -737,7 +737,8 @@ object Types {
}
(this frozen_<:< that) || {
val rthat = result(that)
- (rthat ne that) && (result(this) frozen_<:< rthat)
+ val rthis = result(this)
+ (rthat.ne(that) || rthis.ne(this)) && (rthis frozen_<:< rthat)
}
}