diff options
Diffstat (limited to 'include/clang/AST/CommentSema.h')
-rw-r--r-- | include/clang/AST/CommentSema.h | 254 |
1 files changed, 0 insertions, 254 deletions
diff --git a/include/clang/AST/CommentSema.h b/include/clang/AST/CommentSema.h deleted file mode 100644 index 6a80383..0000000 --- a/include/clang/AST/CommentSema.h +++ /dev/null @@ -1,254 +0,0 @@ -//===--- CommentSema.h - Doxygen comment semantic analysis ------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file defines the semantic analysis class for Doxygen comments. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_CLANG_AST_COMMENTSEMA_H -#define LLVM_CLANG_AST_COMMENTSEMA_H - -#include "clang/AST/Comment.h" -#include "clang/Basic/Diagnostic.h" -#include "clang/Basic/SourceLocation.h" -#include "llvm/ADT/ArrayRef.h" -#include "llvm/ADT/StringMap.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/Allocator.h" - -namespace clang { -class Decl; -class SourceMgr; -class Preprocessor; - -namespace comments { -class CommandTraits; - -class Sema { - Sema(const Sema &) = delete; - void operator=(const Sema &) = delete; - - /// Allocator for AST nodes. - llvm::BumpPtrAllocator &Allocator; - - /// Source manager for the comment being parsed. - const SourceManager &SourceMgr; - - DiagnosticsEngine &Diags; - - CommandTraits &Traits; - - const Preprocessor *PP; - - /// Information about the declaration this comment is attached to. - DeclInfo *ThisDeclInfo; - - /// Comment AST nodes that correspond to parameter names in - /// \c TemplateParameters. - /// - /// Contains a valid value if \c DeclInfo->IsFilled is true. - llvm::StringMap<TParamCommandComment *> TemplateParameterDocs; - - /// AST node for the \\brief command and its aliases. - const BlockCommandComment *BriefCommand; - - /// AST node for the \\headerfile command. - const BlockCommandComment *HeaderfileCommand; - - DiagnosticBuilder Diag(SourceLocation Loc, unsigned DiagID) { - return Diags.Report(Loc, DiagID); - } - - /// A stack of HTML tags that are currently open (not matched with closing - /// tags). - SmallVector<HTMLStartTagComment *, 8> HTMLOpenTags; - -public: - Sema(llvm::BumpPtrAllocator &Allocator, const SourceManager &SourceMgr, - DiagnosticsEngine &Diags, CommandTraits &Traits, - const Preprocessor *PP); - - void setDecl(const Decl *D); - - /// Returns a copy of array, owned by Sema's allocator. - template<typename T> - ArrayRef<T> copyArray(ArrayRef<T> Source) { - if (!Source.empty()) - return Source.copy(Allocator); - return None; - } - - ParagraphComment *actOnParagraphComment( - ArrayRef<InlineContentComment *> Content); - - BlockCommandComment *actOnBlockCommandStart(SourceLocation LocBegin, - SourceLocation LocEnd, - unsigned CommandID, - CommandMarkerKind CommandMarker); - - void actOnBlockCommandArgs(BlockCommandComment *Command, - ArrayRef<BlockCommandComment::Argument> Args); - - void actOnBlockCommandFinish(BlockCommandComment *Command, - ParagraphComment *Paragraph); - - ParamCommandComment *actOnParamCommandStart(SourceLocation LocBegin, - SourceLocation LocEnd, - unsigned CommandID, - CommandMarkerKind CommandMarker); - - void actOnParamCommandDirectionArg(ParamCommandComment *Command, - SourceLocation ArgLocBegin, - SourceLocation ArgLocEnd, - StringRef Arg); - - void actOnParamCommandParamNameArg(ParamCommandComment *Command, - SourceLocation ArgLocBegin, - SourceLocation ArgLocEnd, - StringRef Arg); - - void actOnParamCommandFinish(ParamCommandComment *Command, - ParagraphComment *Paragraph); - - TParamCommandComment *actOnTParamCommandStart(SourceLocation LocBegin, - SourceLocation LocEnd, - unsigned CommandID, - CommandMarkerKind CommandMarker); - - void actOnTParamCommandParamNameArg(TParamCommandComment *Command, - SourceLocation ArgLocBegin, - SourceLocation ArgLocEnd, - StringRef Arg); - - void actOnTParamCommandFinish(TParamCommandComment *Command, - ParagraphComment *Paragraph); - - InlineCommandComment *actOnInlineCommand(SourceLocation CommandLocBegin, - SourceLocation CommandLocEnd, - unsigned CommandID); - - InlineCommandComment *actOnInlineCommand(SourceLocation CommandLocBegin, - SourceLocation CommandLocEnd, - unsigned CommandID, - SourceLocation ArgLocBegin, - SourceLocation ArgLocEnd, - StringRef Arg); - - InlineContentComment *actOnUnknownCommand(SourceLocation LocBegin, - SourceLocation LocEnd, - StringRef CommandName); - - InlineContentComment *actOnUnknownCommand(SourceLocation LocBegin, - SourceLocation LocEnd, - unsigned CommandID); - - TextComment *actOnText(SourceLocation LocBegin, - SourceLocation LocEnd, - StringRef Text); - - VerbatimBlockComment *actOnVerbatimBlockStart(SourceLocation Loc, - unsigned CommandID); - - VerbatimBlockLineComment *actOnVerbatimBlockLine(SourceLocation Loc, - StringRef Text); - - void actOnVerbatimBlockFinish(VerbatimBlockComment *Block, - SourceLocation CloseNameLocBegin, - StringRef CloseName, - ArrayRef<VerbatimBlockLineComment *> Lines); - - VerbatimLineComment *actOnVerbatimLine(SourceLocation LocBegin, - unsigned CommandID, - SourceLocation TextBegin, - StringRef Text); - - HTMLStartTagComment *actOnHTMLStartTagStart(SourceLocation LocBegin, - StringRef TagName); - - void actOnHTMLStartTagFinish(HTMLStartTagComment *Tag, - ArrayRef<HTMLStartTagComment::Attribute> Attrs, - SourceLocation GreaterLoc, - bool IsSelfClosing); - - HTMLEndTagComment *actOnHTMLEndTag(SourceLocation LocBegin, - SourceLocation LocEnd, - StringRef TagName); - - FullComment *actOnFullComment(ArrayRef<BlockContentComment *> Blocks); - - void checkBlockCommandEmptyParagraph(BlockCommandComment *Command); - - void checkReturnsCommand(const BlockCommandComment *Command); - - /// Emit diagnostics about duplicate block commands that should be - /// used only once per comment, e.g., \\brief and \\returns. - void checkBlockCommandDuplicate(const BlockCommandComment *Command); - - void checkDeprecatedCommand(const BlockCommandComment *Comment); - - void checkFunctionDeclVerbatimLine(const BlockCommandComment *Comment); - - void checkContainerDeclVerbatimLine(const BlockCommandComment *Comment); - - void checkContainerDecl(const BlockCommandComment *Comment); - - /// Resolve parameter names to parameter indexes in function declaration. - /// Emit diagnostics about unknown parametrs. - void resolveParamCommandIndexes(const FullComment *FC); - - bool isFunctionDecl(); - bool isAnyFunctionDecl(); - - /// \returns \c true if declaration that this comment is attached to declares - /// a function pointer. - bool isFunctionPointerVarDecl(); - bool isFunctionOrMethodVariadic(); - bool isObjCMethodDecl(); - bool isObjCPropertyDecl(); - bool isTemplateOrSpecialization(); - bool isRecordLikeDecl(); - bool isClassOrStructDecl(); - bool isUnionDecl(); - bool isObjCInterfaceDecl(); - bool isObjCProtocolDecl(); - bool isClassTemplateDecl(); - bool isFunctionTemplateDecl(); - - ArrayRef<const ParmVarDecl *> getParamVars(); - - /// Extract all important semantic information from - /// \c ThisDeclInfo->ThisDecl into \c ThisDeclInfo members. - void inspectThisDecl(); - - /// Returns index of a function parameter with a given name. - unsigned resolveParmVarReference(StringRef Name, - ArrayRef<const ParmVarDecl *> ParamVars); - - /// Returns index of a function parameter with the name closest to a given - /// typo. - unsigned correctTypoInParmVarReference(StringRef Typo, - ArrayRef<const ParmVarDecl *> ParamVars); - - bool resolveTParamReference(StringRef Name, - const TemplateParameterList *TemplateParameters, - SmallVectorImpl<unsigned> *Position); - - StringRef correctTypoInTParamReference( - StringRef Typo, - const TemplateParameterList *TemplateParameters); - - InlineCommandComment::RenderKind - getInlineCommandRenderKind(StringRef Name) const; -}; - -} // end namespace comments -} // end namespace clang - -#endif - |