diff options
author | Martin Odersky <odersky@gmail.com> | 2014-01-11 02:15:22 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-01-11 02:15:22 +0100 |
commit | 561e2e864daa2cd017aa938a73739e5af6c4c306 (patch) | |
tree | 288e61b727e48f07790850c97baf87004746ba25 /src/dotty/tools/dotc/typer/Applications.scala | |
parent | 937dbdcf1d15548a6870c18514441d7b4e0bf234 (diff) | |
download | dotty-561e2e864daa2cd017aa938a73739e5af6c4c306.tar.gz dotty-561e2e864daa2cd017aa938a73739e5af6c4c306.tar.bz2 dotty-561e2e864daa2cd017aa938a73739e5af6c4c306.zip |
Strip implicit parameters when deciding specifity of methods.
Diffstat (limited to 'src/dotty/tools/dotc/typer/Applications.scala')
-rw-r--r-- | src/dotty/tools/dotc/typer/Applications.scala | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/typer/Applications.scala b/src/dotty/tools/dotc/typer/Applications.scala index d70c19f96..9ed05ff97 100644 --- a/src/dotty/tools/dotc/typer/Applications.scala +++ b/src/dotty/tools/dotc/typer/Applications.scala @@ -763,10 +763,16 @@ trait Applications extends Compatibility { self: Typer => } }} + /** Drop any implicit parameter section */ + def stripImplicit(tp: Type) = tp match { + case mt: ImplicitMethodType if !mt.isDependent => mt.resultType // todo: make sure implicit method types are not dependent + case _ => tp + } + val owner1 = alt1.symbol.owner val owner2 = alt2.symbol.owner - val tp1 = alt1.widen - val tp2 = alt2.widen + val tp1 = stripImplicit(alt1.widen) + val tp2 = stripImplicit(alt2.widen) def winsOwner1 = isDerived(owner1, owner2) def winsType1 = isAsSpecific(alt1, tp1, alt2, tp2) |