diff --git a/compiler/src/dotty/tools/dotc/core/Comments.scala b/compiler/src/dotty/tools/dotc/core/Comments.scala index 39530d718c3e..c95e56bf525c 100644 --- a/compiler/src/dotty/tools/dotc/core/Comments.scala +++ b/compiler/src/dotty/tools/dotc/core/Comments.scala @@ -121,7 +121,7 @@ object Comments { tree match { case tree: untpd.DefDef => - val newName = (tree.name.show + "$" + codePos + "$doc").toTermName + val newName = ctx.freshNames.newName(tree.name, NameKinds.DocArtifactName) untpd.DefDef(newName, tree.tparams, tree.vparamss, tree.tpt, tree.rhs) case _ => ctx.error(ProperDefinitionNotFound(), codePos) diff --git a/compiler/src/dotty/tools/dotc/core/NameKinds.scala b/compiler/src/dotty/tools/dotc/core/NameKinds.scala index ffe221c02b63..748795f360e8 100644 --- a/compiler/src/dotty/tools/dotc/core/NameKinds.scala +++ b/compiler/src/dotty/tools/dotc/core/NameKinds.scala @@ -290,6 +290,7 @@ object NameKinds { val SkolemName = new UniqueNameKind("?") val LiftedTreeName = new UniqueNameKind("liftedTree") val SuperArgName = new UniqueNameKind("$superArg$") + val DocArtifactName = new UniqueNameKind("$doc") /** A kind of unique extension methods; Unlike other unique names, these can be * unmangled. diff --git a/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala b/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala index 8f700481f111..e69b237d5a84 100644 --- a/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala +++ b/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala @@ -13,7 +13,7 @@ import core.Flags._ import core.Constants._ import core.StdNames._ import core.NameOps._ -import core.NameKinds.OuterSelectName +import core.NameKinds.{DocArtifactName, OuterSelectName} import core.Decorators._ import core.TypeErasure.isErasedType import core.Phases.Phase @@ -379,7 +379,8 @@ class TreeChecker extends Phase with SymTransformer { x.is(Method) && !x.isCompanionMethod && !x.isValueClassConvertMethod && - !(x.is(Macro) && ctx.phase.refChecked) + !(x.is(Macro) && ctx.phase.refChecked) && + !x.name.is(DocArtifactName) val symbolsNotDefined = cls.classInfo.decls.toList.toSet.filter(isNonMagicalMethod) -- impl.body.map(_.symbol) - constr.symbol diff --git a/compiler/src/dotty/tools/dotc/typer/Docstrings.scala b/compiler/src/dotty/tools/dotc/typer/Docstrings.scala index 370844e65d9f..fdbcbb3e4d6e 100644 --- a/compiler/src/dotty/tools/dotc/typer/Docstrings.scala +++ b/compiler/src/dotty/tools/dotc/typer/Docstrings.scala @@ -17,7 +17,7 @@ trait Docstrings { self: Typer => */ def cookComments(syms: List[Symbol], owner: Symbol)(implicit ctx: Context): Unit = ctx.docCtx.foreach { docbase => - val relevantSyms = syms.filter(docbase.docstring(_).isDefined) + val relevantSyms = syms.filter(docbase.docstring(_).exists(!_.isExpanded)) relevantSyms.foreach { sym => expandParentDocs(sym) val usecases = docbase.docstring(sym).map(_.usecases).getOrElse(Nil) diff --git a/doc-tool/test/DottyDocTest.scala b/doc-tool/test/DottyDocTest.scala index 365acc171356..df85aeab0f9f 100644 --- a/doc-tool/test/DottyDocTest.scala +++ b/doc-tool/test/DottyDocTest.scala @@ -25,6 +25,7 @@ trait DottyDocTest extends MessageRendering { ctx.setSetting(ctx.settings.language, List("Scala2")) ctx.setSetting(ctx.settings.YkeepComments, true) ctx.setSetting(ctx.settings.YcookComments, true) + ctx.setSetting(ctx.settings.Ycheck, "all" :: Nil) ctx.setSetting(ctx.settings.YnoInline, true) ctx.setSetting(ctx.settings.wikiSyntax, true) ctx.setProperty(ContextDoc, new ContextDottydoc) diff --git a/doc-tool/test/MarkdownTests.scala b/doc-tool/test/MarkdownTests.scala index 6ac7a3a4e019..b9314d015a0b 100644 --- a/doc-tool/test/MarkdownTests.scala +++ b/doc-tool/test/MarkdownTests.scala @@ -17,6 +17,7 @@ class MarkdownTests extends DottyDocTest { ctx.setSetting(ctx.settings.language, List("Scala2")) ctx.setSetting(ctx.settings.YkeepComments, true) ctx.setSetting(ctx.settings.YnoInline, true) + ctx.setSetting(ctx.settings.Ycheck, "all" :: Nil) // No wiki syntax! ctx.setSetting(ctx.settings.wikiSyntax, false) ctx.setProperty(ContextDoc, new ContextDottydoc)