diff options
Diffstat (limited to 'contrib/llvm-project/clang/include/clang/Tooling/Transformer/SourceCode.h')
-rw-r--r-- | contrib/llvm-project/clang/include/clang/Tooling/Transformer/SourceCode.h | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/contrib/llvm-project/clang/include/clang/Tooling/Transformer/SourceCode.h b/contrib/llvm-project/clang/include/clang/Tooling/Transformer/SourceCode.h index bc9cc3d2a258..2c7eb65371cf 100644 --- a/contrib/llvm-project/clang/include/clang/Tooling/Transformer/SourceCode.h +++ b/contrib/llvm-project/clang/include/clang/Tooling/Transformer/SourceCode.h @@ -20,9 +20,10 @@ namespace clang { namespace tooling { -/// Extends \p Range to include the token \p Next, if it immediately follows the -/// end of the range. Otherwise, returns \p Range unchanged. -CharSourceRange maybeExtendRange(CharSourceRange Range, tok::TokenKind Next, +/// Extends \p Range to include the token \p Terminator, if it immediately +/// follows the end of the range. Otherwise, returns \p Range unchanged. +CharSourceRange maybeExtendRange(CharSourceRange Range, + tok::TokenKind Terminator, ASTContext &Context); /// Returns the source range spanning the node, extended to include \p Next, if @@ -35,6 +36,13 @@ CharSourceRange getExtendedRange(const T &Node, tok::TokenKind Next, Next, Context); } +/// Returns the logical source range of the node extended to include associated +/// comments and whitespace before and after the node, and associated +/// terminators. The returned range consists of file locations, if valid file +/// locations can be found for the associated content; otherwise, an invalid +/// range is returned. +CharSourceRange getAssociatedRange(const Decl &D, ASTContext &Context); + /// Returns the source-code text in the specified range. StringRef getText(CharSourceRange Range, const ASTContext &Context); @@ -73,13 +81,18 @@ StringRef getExtendedText(const T &Node, tok::TokenKind Next, return getText(getExtendedRange(Node, Next, Context), Context); } -// Attempts to resolve the given range to one that can be edited by a rewrite; -// generally, one that starts and ends within a particular file. It supports -// a limited set of cases involving source locations in macro expansions. +/// Determines whether \p Range is one that can be edited by a rewrite; +/// generally, one that starts and ends within a particular file. +llvm::Error validateEditRange(const CharSourceRange &Range, + const SourceManager &SM); + +/// Attempts to resolve the given range to one that can be edited by a rewrite; +/// generally, one that starts and ends within a particular file. It supports a +/// limited set of cases involving source locations in macro expansions. If a +/// value is returned, it satisfies \c validateEditRange. llvm::Optional<CharSourceRange> getRangeForEdit(const CharSourceRange &EditRange, const SourceManager &SM, const LangOptions &LangOpts); - inline llvm::Optional<CharSourceRange> getRangeForEdit(const CharSourceRange &EditRange, const ASTContext &Context) { return getRangeForEdit(EditRange, Context.getSourceManager(), |