diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-08-24 17:24:48 +0200 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2016-10-06 17:08:02 +0200 |
commit | 567798a8f66343993f93250d3261d02dccb86bfc (patch) | |
tree | aeb1396bedd60e5387ecc0ce88e7703cc9843d78 /src/dotty/tools/dotc | |
parent | 30d8135430614573549974e9a6013e324b3d6f8a (diff) | |
download | dotty-567798a8f66343993f93250d3261d02dccb86bfc.tar.gz dotty-567798a8f66343993f93250d3261d02dccb86bfc.tar.bz2 dotty-567798a8f66343993f93250d3261d02dccb86bfc.zip |
Typecheck usecases
Diffstat (limited to 'src/dotty/tools/dotc')
-rw-r--r-- | src/dotty/tools/dotc/typer/Namer.scala | 9 | ||||
-rw-r--r-- | src/dotty/tools/dotc/typer/Typer.scala | 4 |
2 files changed, 12 insertions, 1 deletions
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 } |