From 567798a8f66343993f93250d3261d02dccb86bfc Mon Sep 17 00:00:00 2001 From: Felix Mulder Date: Wed, 24 Aug 2016 17:24:48 +0200 Subject: Typecheck usecases --- src/dotty/tools/dotc/typer/Namer.scala | 9 ++++++++- src/dotty/tools/dotc/typer/Typer.scala | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src/dotty/tools/dotc') diff --git a/src/dotty/tools/dotc/typer/Namer.scala b/src/dotty/tools/dotc/typer/Namer.scala index 2e714ab6d..b34eaa605 100644 --- a/src/dotty/tools/dotc/typer/Namer.scala +++ b/src/dotty/tools/dotc/typer/Namer.scala @@ -456,7 +456,14 @@ class Namer { typer: Typer => def setDocstring(sym: Symbol, tree: Tree)(implicit ctx: Context) = tree match { - case t: MemberDef => ctx.docbase.addDocstring(sym, t.rawComment) + case t: MemberDef if t.rawComment.isDefined => + val cmt = t.rawComment + ctx.docbase.addDocstring(sym, cmt) + + cmt.get.usecases.foreach { usecase => + usecase.symbol = enterSymbol(createSymbol(usecase.untpdCode)) + } + case _ => () } diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala index 3aff69bdb..56571116a 100644 --- a/src/dotty/tools/dotc/typer/Typer.scala +++ b/src/dotty/tools/dotc/typer/Typer.scala @@ -1181,6 +1181,10 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit // function types so no dependencies on parameters are allowed. tpt1 = tpt1.withType(avoid(tpt1.tpe, vparamss1.flatMap(_.map(_.symbol)))) } + + /** Type usecases */ + ctx.docbase.docstring(sym).map(_.usecases.map(_.typeTree())) + assignType(cpy.DefDef(ddef)(name, tparams1, vparamss1, tpt1, rhs1), sym) //todo: make sure dependent method types do not depend on implicits or by-name params } -- cgit v1.2.3