diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-07-16 13:09:24 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-07-16 13:09:24 +1000 |
commit | 32fc8fc3bf4201bbb68426b134d5aac95c641e5f (patch) | |
tree | 1311833758e48c64cb983e242f4ab8d0df3e8e0f /src | |
parent | 11dcf82910b388046e675d76d277b09b931d5363 (diff) | |
download | scala-32fc8fc3bf4201bbb68426b134d5aac95c641e5f.tar.gz scala-32fc8fc3bf4201bbb68426b134d5aac95c641e5f.tar.bz2 scala-32fc8fc3bf4201bbb68426b134d5aac95c641e5f.zip |
SI-7668 Better return type inheritance for dep. method types
Return type inheritance already handles substitution of
type parameters of the overriding method for those of the
overriding.
This commit extends this to do the same for parameter symbols.
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index 1282cfb416..08837d9a54 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -1084,6 +1084,9 @@ trait Namers extends MethodSynthesis { overriddenTp = overriddenTp.resultType } + // SI-7668 Substitute parameters from the parent method with those of the overriding method. + overriddenTp = overriddenTp.substSym(overridden.paramss.flatten, vparamss.flatten.map(_.symbol)) + overriddenTp match { case NullaryMethodType(rtpe) => overriddenTp = rtpe case MethodType(List(), rtpe) => overriddenTp = rtpe |