aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-08-24 17:24:48 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-10-06 17:08:02 +0200
commit567798a8f66343993f93250d3261d02dccb86bfc (patch)
treeaeb1396bedd60e5387ecc0ce88e7703cc9843d78 /src/dotty/tools/dotc
parent30d8135430614573549974e9a6013e324b3d6f8a (diff)
downloaddotty-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.scala9
-rw-r--r--src/dotty/tools/dotc/typer/Typer.scala4
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
}