aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/parsing/Parsers.scala
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-03-09 15:54:25 +0100
committerFelix Mulder <felix.mulder@gmail.com>2016-04-07 08:40:27 +0200
commitee5413751183d4ab217cf63fc9c1ac7b33ff4710 (patch)
treef2fb4d1c11022068ba640a514a02ede6533d2184 /src/dotty/tools/dotc/parsing/Parsers.scala
parent7f20aef772c1bdc6e0a699a82f179d93934a1555 (diff)
downloaddotty-ee5413751183d4ab217cf63fc9c1ac7b33ff4710.tar.gz
dotty-ee5413751183d4ab217cf63fc9c1ac7b33ff4710.tar.bz2
dotty-ee5413751183d4ab217cf63fc9c1ac7b33ff4710.zip
Add ability to parse nested classes/traits docstrings
Diffstat (limited to 'src/dotty/tools/dotc/parsing/Parsers.scala')
-rw-r--r--src/dotty/tools/dotc/parsing/Parsers.scala34
1 files changed, 18 insertions, 16 deletions
diff --git a/src/dotty/tools/dotc/parsing/Parsers.scala b/src/dotty/tools/dotc/parsing/Parsers.scala
index ad50bf476..3aace28cf 100644
--- a/src/dotty/tools/dotc/parsing/Parsers.scala
+++ b/src/dotty/tools/dotc/parsing/Parsers.scala
@@ -1888,28 +1888,30 @@ object Parsers {
/** TmplDef ::= ([`case'] `class' | `trait') ClassDef
* | [`case'] `object' ObjectDef
*/
- def tmplDef(start: Int, mods: Modifiers): Tree = in.token match {
- case TRAIT =>
- classDef(posMods(start, addFlag(mods, Trait)))
- case CLASS =>
- classDef(posMods(start, mods))
- case CASECLASS =>
- classDef(posMods(start, mods | Case))
- case OBJECT =>
- objectDef(posMods(start, mods | Module))
- case CASEOBJECT =>
- objectDef(posMods(start, mods | Case | Module))
- case _ =>
- syntaxErrorOrIncomplete("expected start of definition")
- EmptyTree
+ def tmplDef(start: Int, mods: Modifiers): Tree = {
+ val docstring = in.getDocString()
+ in.token match {
+ case TRAIT =>
+ classDef(posMods(start, addFlag(mods, Trait)), docstring)
+ case CLASS =>
+ classDef(posMods(start, mods), docstring)
+ case CASECLASS =>
+ classDef(posMods(start, mods | Case), docstring)
+ case OBJECT =>
+ objectDef(posMods(start, mods | Module))
+ case CASEOBJECT =>
+ objectDef(posMods(start, mods | Case | Module))
+ case _ =>
+ syntaxErrorOrIncomplete("expected start of definition")
+ EmptyTree
+ }
}
/** ClassDef ::= Id [ClsTypeParamClause]
* [ConstrMods] ClsParamClauses TemplateOpt
*/
- def classDef(mods: Modifiers): TypeDef = atPos(tokenRange) {
+ def classDef(mods: Modifiers, docstring: Option[String]): TypeDef = atPos(tokenRange) {
val name = ident().toTypeName
- val docstring = in.getDocString()
val constr = atPos(in.offset) {
val tparams = typeParamClauseOpt(ParamOwner.Class)
val cmods = constrModsOpt()