diff options
Diffstat (limited to 'src/dotty/tools/dotc/typer')
-rw-r--r-- | src/dotty/tools/dotc/typer/Namer.scala | 3 | ||||
-rw-r--r-- | src/dotty/tools/dotc/typer/Typer.scala | 52 |
2 files changed, 30 insertions, 25 deletions
diff --git a/src/dotty/tools/dotc/typer/Namer.scala b/src/dotty/tools/dotc/typer/Namer.scala index 1d2d59208..938b280d1 100644 --- a/src/dotty/tools/dotc/typer/Namer.scala +++ b/src/dotty/tools/dotc/typer/Namer.scala @@ -456,7 +456,8 @@ class Namer { typer: Typer => def setDocstring(sym: Symbol, tree: Tree)(implicit ctx: Context) = tree match { - case t: MemberDef if t.rawComment.isDefined => ctx.docbase.addDocstring(sym, t.rawComment) + case t: MemberDef if t.rawComment.isDefined => + ctx.getDocbase.foreach(_.addDocstring(sym, t.rawComment)) case _ => () } diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala index 3291cb9d0..3ed6c9228 100644 --- a/src/dotty/tools/dotc/typer/Typer.scala +++ b/src/dotty/tools/dotc/typer/Typer.scala @@ -1247,7 +1247,8 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit val dummy = localDummy(cls, impl) val body1 = typedStats(impl.body, dummy)(inClassContext(self1.symbol)) - typedUsecases(body1.map(_.symbol), self1.symbol)(localContext(cdef, cls).setNewScope) + if (ctx.property(DocContext).isDefined) + typedUsecases(body1.map(_.symbol), self1.symbol)(localContext(cdef, cls).setNewScope) checkNoDoubleDefs(cls) val impl1 = cpy.Template(impl)(constr1, parents1, self1, body1) @@ -1537,39 +1538,42 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit tpd.cpy.DefDef(mdef)(rhs = Inliner.bodyToInline(mdef.symbol)) :: Inliner.removeInlineAccessors(mdef.symbol) - private def typedUsecases(syms: List[Symbol], owner: Symbol)(implicit ctx: Context): Unit = { - val relevantSyms = syms.filter(ctx.docbase.docstring(_).isDefined) - relevantSyms.foreach { sym => - expandParentDocs(sym) - val usecases = ctx.docbase.docstring(sym).map(_.usecases).getOrElse(Nil) + private def typedUsecases(syms: List[Symbol], owner: Symbol)(implicit ctx: Context): Unit = + ctx.getDocbase.foreach { docbase => + val relevantSyms = syms.filter(docbase.docstring(_).isDefined) + relevantSyms.foreach { sym => + expandParentDocs(sym) + val usecases = docbase.docstring(sym).map(_.usecases).getOrElse(Nil) - usecases.foreach { usecase => - enterSymbol(createSymbol(usecase.untpdCode)) + usecases.foreach { usecase => + enterSymbol(createSymbol(usecase.untpdCode)) - typedStats(usecase.untpdCode :: Nil, owner) match { - case List(df: tpd.DefDef) => usecase.tpdCode = df - case _ => ctx.error("`@usecase` was not a valid definition", usecase.codePos) + typedStats(usecase.untpdCode :: Nil, owner) match { + case List(df: tpd.DefDef) => usecase.tpdCode = df + case _ => ctx.error("`@usecase` was not a valid definition", usecase.codePos) + } } } } - } private def expandParentDocs(sym: Symbol)(implicit ctx: Context): Unit = - ctx.docbase.docstring(sym).foreach { cmt => - def expandDoc(owner: Symbol): Unit = if (!cmt.isExpanded) { - val tplExp = ctx.docbase.templateExpander - tplExp.defineVariables(sym) + ctx.getDocbase.foreach { docbase => + docbase.docstring(sym).foreach { cmt => + def expandDoc(owner: Symbol): Unit = if (!cmt.isExpanded) { + val tplExp = docbase.templateExpander + tplExp.defineVariables(sym) - val newCmt = cmt - .expand(tplExp.expandedDocComment(sym, owner, _)) - .withUsecases + val newCmt = cmt + .expand(tplExp.expandedDocComment(sym, owner, _)) + .withUsecases - ctx.docbase.addDocstring(sym, Some(newCmt)) - } + docbase.addDocstring(sym, Some(newCmt)) + } - if (sym ne NoSymbol) { - expandParentDocs(sym.owner) - expandDoc(sym.owner) + if (sym ne NoSymbol) { + expandParentDocs(sym.owner) + expandDoc(sym.owner) + } } } |