From ee5413751183d4ab217cf63fc9c1ac7b33ff4710 Mon Sep 17 00:00:00 2001 From: Felix Mulder Date: Wed, 9 Mar 2016 15:54:25 +0100 Subject: Add ability to parse nested classes/traits docstrings --- src/dotty/tools/dotc/parsing/Parsers.scala | 34 ++++++++++++++++-------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'src/dotty/tools/dotc/parsing/Parsers.scala') 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() -- cgit v1.2.3