File tree Expand file tree Collapse file tree 1 file changed +7
-0
lines changed
src/dotty/tools/dotc/transform Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Original file line number Diff line number Diff line change @@ -78,6 +78,13 @@ class Erasure extends Phase with DenotTransformer { thisTransformer =>
78
78
case res : tpd.This =>
79
79
assert(! ExplicitOuter .referencesOuter(ctx.owner.enclosingClass, res),
80
80
i " Reference to $res from ${ctx.owner.showLocated}" )
81
+ case ret : tpd.Return =>
82
+ // checked only after erasure, as checking before erasure is complicated
83
+ // due presence of type params in returned types
84
+ val from = if (ret.from.isEmpty) ctx.owner.enclosingMethod else ret.from.symbol
85
+ val rType = from.info.finalResultType
86
+ assert(ret.expr.tpe <:< rType,
87
+ i " Returned value: ${ret.expr} does not conform to result type( ${ret.expr.tpe.widen} of method $from" )
81
88
case _ =>
82
89
}
83
90
}
You can’t perform that action at this time.
0 commit comments