Skip to content

Commit 76b60c4

Browse files
oderskyDarkDimius
authored andcommitted
Strip byname when assigning default getter result type
If the parameter is of type `=> T`, its default getter is a def with result type `T`.
1 parent b54bc22 commit 76b60c4

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/dotty/tools/dotc/ast/Desugar.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,16 @@ object desugar {
171171

172172
def defaultGetters(vparamss: List[List[ValDef]], n: Int): List[DefDef] = vparamss match {
173173
case (vparam :: vparams) :: vparamss1 =>
174+
def resultTpt = vparam.tpt match {
175+
case ByNameTypeTree(result) => result
176+
case tpt => tpt
177+
}
174178
def defaultGetter: DefDef =
175179
DefDef(
176180
name = meth.name.defaultGetterName(n),
177181
tparams = meth.tparams.map(tparam => dropContextBound(toDefParam(tparam))),
178182
vparamss = takeUpTo(normalizedVparamss, n),
179-
tpt = vparam.tpt,
183+
tpt = resultTpt,
180184
rhs = vparam.rhs
181185
).withMods(Modifiers(mods.flags & AccessFlags, mods.privateWithin))
182186
val rest = defaultGetters(vparams :: vparamss1, n + 1)

0 commit comments

Comments
 (0)