1
1
package dotty .tools .repl
2
2
3
- import dotty .tools .backend .jvm .GenBCode
4
3
import dotty .tools .dotc .ast .Trees ._
5
4
import dotty .tools .dotc .ast .{tpd , untpd }
6
5
import dotty .tools .dotc .ast .tpd .TreeOps
@@ -14,11 +13,10 @@ import dotty.tools.dotc.core.Phases.Phase
14
13
import dotty .tools .dotc .core .StdNames ._
15
14
import dotty .tools .dotc .core .Symbols ._
16
15
import dotty .tools .dotc .reporting .diagnostic .messages
17
- import dotty .tools .dotc .typer .{FrontEnd , ImportInfo }
16
+ import dotty .tools .dotc .typer .{FrontEnd , ImportInfo , Typer }
18
17
import dotty .tools .dotc .util .Positions ._
19
18
import dotty .tools .dotc .util .SourceFile
20
19
import dotty .tools .dotc .{CompilationUnit , Compiler , Run }
21
- import dotty .tools .io ._
22
20
import dotty .tools .repl .results ._
23
21
24
22
import scala .collection .mutable
@@ -186,13 +184,18 @@ class ReplCompiler extends Compiler {
186
184
val stat = stats.last.asInstanceOf [tpd.Tree ]
187
185
if (stat.tpe.isError) stat.tpe.show
188
186
else {
189
- val docCtx = ctx.docCtx.get
190
187
val symbols = extractSymbols(stat)
191
- val doc = symbols.collectFirst {
192
- case sym if docCtx.docstrings.contains(sym) =>
193
- docCtx.docstrings(sym).raw
194
- }
195
- doc.getOrElse(s " // No doc for ` ${expr}` " )
188
+ val typer = new Typer ()
189
+ val doc = for {
190
+ sym <- symbols
191
+ owner = sym.owner
192
+ cookingCtx = ctx.withOwner(owner)
193
+ cooked <- typer.cookComment(sym, owner)(cookingCtx)
194
+ body <- cooked.expandedBody
195
+ } yield body
196
+
197
+ if (doc.hasNext) doc.next()
198
+ else s " // No doc for ` $expr` "
196
199
}
197
200
198
201
case _ =>
0 commit comments