diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/AST/CommentParser.cpp | 121 | ||||
-rw-r--r-- | lib/AST/CommentSema.cpp | 73 |
2 files changed, 93 insertions, 101 deletions
diff --git a/lib/AST/CommentParser.cpp b/lib/AST/CommentParser.cpp index 63560e197d..8d7716a9d5 100644 --- a/lib/AST/CommentParser.cpp +++ b/lib/AST/CommentParser.cpp @@ -255,44 +255,37 @@ Parser::Parser(Lexer &L, Sema &S, llvm::BumpPtrAllocator &Allocator, consumeToken(); } -ParamCommandComment *Parser::parseParamCommandArgs( - ParamCommandComment *PC, - TextTokenRetokenizer &Retokenizer) { +void Parser::parseParamCommandArgs(ParamCommandComment *PC, + TextTokenRetokenizer &Retokenizer) { Token Arg; // Check if argument looks like direction specification: [dir] // e.g., [in], [out], [in,out] if (Retokenizer.lexDelimitedSeq(Arg, '[', ']')) - PC = S.actOnParamCommandDirectionArg(PC, - Arg.getLocation(), - Arg.getEndLocation(), - Arg.getText()); + S.actOnParamCommandDirectionArg(PC, + Arg.getLocation(), + Arg.getEndLocation(), + Arg.getText()); if (Retokenizer.lexWord(Arg)) - PC = S.actOnParamCommandParamNameArg(PC, - Arg.getLocation(), - Arg.getEndLocation(), - Arg.getText()); - - return PC; + S.actOnParamCommandParamNameArg(PC, + Arg.getLocation(), + Arg.getEndLocation(), + Arg.getText()); } -TParamCommandComment *Parser::parseTParamCommandArgs( - TParamCommandComment *TPC, - TextTokenRetokenizer &Retokenizer) { +void Parser::parseTParamCommandArgs(TParamCommandComment *TPC, + TextTokenRetokenizer &Retokenizer) { Token Arg; if (Retokenizer.lexWord(Arg)) - TPC = S.actOnTParamCommandParamNameArg(TPC, - Arg.getLocation(), - Arg.getEndLocation(), - Arg.getText()); - - return TPC; + S.actOnTParamCommandParamNameArg(TPC, + Arg.getLocation(), + Arg.getEndLocation(), + Arg.getText()); } -BlockCommandComment *Parser::parseBlockCommandArgs( - BlockCommandComment *BC, - TextTokenRetokenizer &Retokenizer, - unsigned NumArgs) { +void Parser::parseBlockCommandArgs(BlockCommandComment *BC, + TextTokenRetokenizer &Retokenizer, + unsigned NumArgs) { typedef BlockCommandComment::Argument Argument; Argument *Args = new (Allocator.Allocate<Argument>(NumArgs)) Argument[NumArgs]; @@ -305,7 +298,7 @@ BlockCommandComment *Parser::parseBlockCommandArgs( ParsedArgs++; } - return S.actOnBlockCommandArgs(BC, llvm::makeArrayRef(Args, ParsedArgs)); + S.actOnBlockCommandArgs(BC, llvm::makeArrayRef(Args, ParsedArgs)); } BlockCommandComment *Parser::parseBlockCommand() { @@ -340,7 +333,13 @@ BlockCommandComment *Parser::parseBlockCommand() { // command has an empty argument. ParagraphComment *Paragraph = S.actOnParagraphComment( ArrayRef<InlineContentComment *>()); - return S.actOnBlockCommandFinish(IsParam ? PC : BC, Paragraph); + if (IsParam) { + S.actOnBlockCommandFinish(PC, Paragraph); + return PC; + } else { + S.actOnBlockCommandFinish(BC, Paragraph); + return BC; + } } if (IsParam || IsTParam || NumArgs > 0) { @@ -349,11 +348,11 @@ BlockCommandComment *Parser::parseBlockCommand() { TextTokenRetokenizer Retokenizer(Allocator, *this); if (IsParam) - PC = parseParamCommandArgs(PC, Retokenizer); + parseParamCommandArgs(PC, Retokenizer); else if (IsTParam) - TPC = parseTParamCommandArgs(TPC, Retokenizer); + parseTParamCommandArgs(TPC, Retokenizer); else - BC = parseBlockCommandArgs(BC, Retokenizer, NumArgs); + parseBlockCommandArgs(BC, Retokenizer, NumArgs); Retokenizer.putBackLeftoverTokens(); } @@ -361,12 +360,17 @@ BlockCommandComment *Parser::parseBlockCommand() { BlockContentComment *Block = parseParagraphOrBlockCommand(); // Since we have checked for a block command, we should have parsed a // paragraph. - if (IsParam) - return S.actOnParamCommandFinish(PC, cast<ParagraphComment>(Block)); - else if (IsTParam) - return S.actOnTParamCommandFinish(TPC, cast<ParagraphComment>(Block)); - else - return S.actOnBlockCommandFinish(BC, cast<ParagraphComment>(Block)); + ParagraphComment *Paragraph = cast<ParagraphComment>(Block); + if (IsParam) { + S.actOnParamCommandFinish(PC, Paragraph); + return PC; + } else if (IsTParam) { + S.actOnTParamCommandFinish(TPC, Paragraph); + return TPC; + } else { + S.actOnBlockCommandFinish(BC, Paragraph); + return BC; + } } InlineCommandComment *Parser::parseInlineCommand() { @@ -442,18 +446,18 @@ HTMLStartTagComment *Parser::parseHTMLStartTag() { } case tok::html_greater: - HST = S.actOnHTMLStartTagFinish(HST, - S.copyArray(llvm::makeArrayRef(Attrs)), - Tok.getLocation(), - /* IsSelfClosing = */ false); + S.actOnHTMLStartTagFinish(HST, + S.copyArray(llvm::makeArrayRef(Attrs)), + Tok.getLocation(), + /* IsSelfClosing = */ false); consumeToken(); return HST; case tok::html_slash_greater: - HST = S.actOnHTMLStartTagFinish(HST, - S.copyArray(llvm::makeArrayRef(Attrs)), - Tok.getLocation(), - /* IsSelfClosing = */ true); + S.actOnHTMLStartTagFinish(HST, + S.copyArray(llvm::makeArrayRef(Attrs)), + Tok.getLocation(), + /* IsSelfClosing = */ true); consumeToken(); return HST; @@ -469,17 +473,18 @@ HTMLStartTagComment *Parser::parseHTMLStartTag() { Tok.is(tok::html_slash_greater)) continue; - return S.actOnHTMLStartTagFinish(HST, - S.copyArray(llvm::makeArrayRef(Attrs)), - SourceLocation(), - /* IsSelfClosing = */ false); + S.actOnHTMLStartTagFinish(HST, + S.copyArray(llvm::makeArrayRef(Attrs)), + SourceLocation(), + /* IsSelfClosing = */ false); + return HST; default: // Not a token from an HTML start tag. Thus HTML tag prematurely ended. - HST = S.actOnHTMLStartTagFinish(HST, - S.copyArray(llvm::makeArrayRef(Attrs)), - SourceLocation(), - /* IsSelfClosing = */ false); + S.actOnHTMLStartTagFinish(HST, + S.copyArray(llvm::makeArrayRef(Attrs)), + SourceLocation(), + /* IsSelfClosing = */ false); bool StartLineInvalid; const unsigned StartLine = SourceMgr.getPresumedLineNumber( HST->getLocation(), @@ -623,14 +628,14 @@ VerbatimBlockComment *Parser::parseVerbatimBlock() { } if (Tok.is(tok::verbatim_block_end)) { - VB = S.actOnVerbatimBlockFinish(VB, Tok.getLocation(), - Tok.getVerbatimBlockName(), - S.copyArray(llvm::makeArrayRef(Lines))); + S.actOnVerbatimBlockFinish(VB, Tok.getLocation(), + Tok.getVerbatimBlockName(), + S.copyArray(llvm::makeArrayRef(Lines))); consumeToken(); } else { // Unterminated \\verbatim block - VB = S.actOnVerbatimBlockFinish(VB, SourceLocation(), "", - S.copyArray(llvm::makeArrayRef(Lines))); + S.actOnVerbatimBlockFinish(VB, SourceLocation(), "", + S.copyArray(llvm::makeArrayRef(Lines))); } return VB; diff --git a/lib/AST/CommentSema.cpp b/lib/AST/CommentSema.cpp index 57f8fda07c..42dd320b5c 100644 --- a/lib/AST/CommentSema.cpp +++ b/lib/AST/CommentSema.cpp @@ -43,21 +43,17 @@ BlockCommandComment *Sema::actOnBlockCommandStart(SourceLocation LocBegin, return new (Allocator) BlockCommandComment(LocBegin, LocEnd, Name); } -BlockCommandComment *Sema::actOnBlockCommandArgs( - BlockCommandComment *Command, - ArrayRef<BlockCommandComment::Argument> Args) { +void Sema::actOnBlockCommandArgs(BlockCommandComment *Command, + ArrayRef<BlockCommandComment::Argument> Args) { Command->setArgs(Args); - return Command; } -BlockCommandComment *Sema::actOnBlockCommandFinish( - BlockCommandComment *Command, - ParagraphComment *Paragraph) { +void Sema::actOnBlockCommandFinish(BlockCommandComment *Command, + ParagraphComment *Paragraph) { Command->setParagraph(Paragraph); checkBlockCommandEmptyParagraph(Command); checkBlockCommandDuplicate(Command); checkReturnsCommand(Command); - return Command; } ParamCommandComment *Sema::actOnParamCommandStart(SourceLocation LocBegin, @@ -74,11 +70,10 @@ ParamCommandComment *Sema::actOnParamCommandStart(SourceLocation LocBegin, return Command; } -ParamCommandComment *Sema::actOnParamCommandDirectionArg( - ParamCommandComment *Command, - SourceLocation ArgLocBegin, - SourceLocation ArgLocEnd, - StringRef Arg) { +void Sema::actOnParamCommandDirectionArg(ParamCommandComment *Command, + SourceLocation ArgLocBegin, + SourceLocation ArgLocEnd, + StringRef Arg) { ParamCommandComment::PassDirection Direction; std::string ArgLower = Arg.lower(); // TODO: optimize: lower Name first (need an API in SmallString for that), @@ -128,14 +123,12 @@ ParamCommandComment *Sema::actOnParamCommandDirectionArg( << ArgRange; } Command->setDirection(Direction, /* Explicit = */ true); - return Command; } -ParamCommandComment *Sema::actOnParamCommandParamNameArg( - ParamCommandComment *Command, - SourceLocation ArgLocBegin, - SourceLocation ArgLocEnd, - StringRef Arg) { +void Sema::actOnParamCommandParamNameArg(ParamCommandComment *Command, + SourceLocation ArgLocBegin, + SourceLocation ArgLocEnd, + StringRef Arg) { // Parser will not feed us more arguments than needed. assert(Command->getNumArgs() == 0); @@ -151,7 +144,7 @@ ParamCommandComment *Sema::actOnParamCommandParamNameArg( if (!isFunctionDecl()) { // We already warned that this \\param is not attached to a function decl. - return Command; + return; } ArrayRef<const ParmVarDecl *> ParamVars = getParamVars(); @@ -169,7 +162,7 @@ ParamCommandComment *Sema::actOnParamCommandParamNameArg( << PrevCommand->getParamNameRange(); } ParamVarDocs[ResolvedParamIndex] = Command; - return Command; + return; } SourceRange ArgRange(ArgLocBegin, ArgLocEnd); @@ -178,7 +171,7 @@ ParamCommandComment *Sema::actOnParamCommandParamNameArg( // No parameters -- can't suggest a correction. if (ParamVars.size() == 0) - return Command; + return; unsigned CorrectedParamIndex = ParamCommandComment::InvalidParamIndex; if (ParamVars.size() == 1) { @@ -197,14 +190,13 @@ ParamCommandComment *Sema::actOnParamCommandParamNameArg( << FixItHint::CreateReplacement(ArgRange, CorrectedII->getName()); } - return Command; + return; } -ParamCommandComment *Sema::actOnParamCommandFinish(ParamCommandComment *Command, - ParagraphComment *Paragraph) { +void Sema::actOnParamCommandFinish(ParamCommandComment *Command, + ParagraphComment *Paragraph) { Command->setParagraph(Paragraph); checkBlockCommandEmptyParagraph(Command); - return Command; } TParamCommandComment *Sema::actOnTParamCommandStart(SourceLocation LocBegin, @@ -221,11 +213,10 @@ TParamCommandComment *Sema::actOnTParamCommandStart(SourceLocation LocBegin, return Command; } -TParamCommandComment *Sema::actOnTParamCommandParamNameArg( - TParamCommandComment *Command, - SourceLocation ArgLocBegin, - SourceLocation ArgLocEnd, - StringRef Arg) { +void Sema::actOnTParamCommandParamNameArg(TParamCommandComment *Command, + SourceLocation ArgLocBegin, + SourceLocation ArgLocEnd, + StringRef Arg) { // Parser will not feed us more arguments than needed. assert(Command->getNumArgs() == 0); @@ -237,7 +228,7 @@ TParamCommandComment *Sema::actOnTParamCommandParamNameArg( if (!isTemplateDecl()) { // We already warned that this \\tparam is not attached to a template decl. - return Command; + return; } const TemplateParameterList *TemplateParameters = @@ -256,7 +247,7 @@ TParamCommandComment *Sema::actOnTParamCommandParamNameArg( << PrevCommand->getParamNameRange(); } TemplateParameterDocs[Arg] = Command; - return Command; + return; } SourceRange ArgRange(ArgLocBegin, ArgLocEnd); @@ -264,7 +255,7 @@ TParamCommandComment *Sema::actOnTParamCommandParamNameArg( << Arg << ArgRange; if (!TemplateParameters || TemplateParameters->size() == 0) - return Command; + return; StringRef CorrectedName; if (TemplateParameters->size() == 1) { @@ -282,15 +273,13 @@ TParamCommandComment *Sema::actOnTParamCommandParamNameArg( << FixItHint::CreateReplacement(ArgRange, CorrectedName); } - return Command; + return; } -TParamCommandComment *Sema::actOnTParamCommandFinish( - TParamCommandComment *Command, - ParagraphComment *Paragraph) { +void Sema::actOnTParamCommandFinish(TParamCommandComment *Command, + ParagraphComment *Paragraph) { Command->setParagraph(Paragraph); checkBlockCommandEmptyParagraph(Command); - return Command; } InlineCommandComment *Sema::actOnInlineCommand(SourceLocation CommandLocBegin, @@ -353,14 +342,13 @@ VerbatimBlockLineComment *Sema::actOnVerbatimBlockLine(SourceLocation Loc, return new (Allocator) VerbatimBlockLineComment(Loc, Text); } -VerbatimBlockComment *Sema::actOnVerbatimBlockFinish( +void Sema::actOnVerbatimBlockFinish( VerbatimBlockComment *Block, SourceLocation CloseNameLocBegin, StringRef CloseName, ArrayRef<VerbatimBlockLineComment *> Lines) { Block->setCloseName(CloseName, CloseNameLocBegin); Block->setLines(Lines); - return Block; } VerbatimLineComment *Sema::actOnVerbatimLine(SourceLocation LocBegin, @@ -380,7 +368,7 @@ HTMLStartTagComment *Sema::actOnHTMLStartTagStart(SourceLocation LocBegin, return new (Allocator) HTMLStartTagComment(LocBegin, TagName); } -HTMLStartTagComment *Sema::actOnHTMLStartTagFinish( +void Sema::actOnHTMLStartTagFinish( HTMLStartTagComment *Tag, ArrayRef<HTMLStartTagComment::Attribute> Attrs, SourceLocation GreaterLoc, @@ -391,7 +379,6 @@ HTMLStartTagComment *Sema::actOnHTMLStartTagFinish( Tag->setSelfClosing(); else if (!isHTMLEndTagForbidden(Tag->getTagName())) HTMLOpenTags.push_back(Tag); - return Tag; } HTMLEndTagComment *Sema::actOnHTMLEndTag(SourceLocation LocBegin, |