Adapt to Clang trunk SourceManager::getImmediateExpansionRange changes
...of <http://llvm.org/viewvc/llvm-project?view=revision&revision=331155> "PR37189 Fix incorrect end source location and spelling for a split '>>' token", changing (among others) the return type of getImmediateExpansionRange from a std::pair of token locations to CharSourceRange (which will typically also represent token locations, but might also represent char locations). For now, map the return value of getImmediateExpansionRange back to a std::pair (as expected by our compilerplugins code in its current form), and mark the char location case with a TODO (which will need to be addressed if any of our plugins starts to produce wrong results due to not handling that char location case). In the long run, we should instead adapt our code to use the new return type of getImmediateExpansionRange directly. Change-Id: Idc2f5dc43830af4798b55bf605976c4ab146c522 Reviewed-on: https://gerrit.libreoffice.org/53817 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#define INCLUDED_COMPILERPLUGINS_CLANG_COMPAT_HXX
|
||||
|
||||
#include <cstddef>
|
||||
#include <utility>
|
||||
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
@@ -49,6 +50,17 @@ inline clang::FunctionDecl::param_const_range parameters(
|
||||
}
|
||||
#endif
|
||||
|
||||
inline std::pair<clang::SourceLocation, clang::SourceLocation> getImmediateExpansionRange(
|
||||
clang::SourceManager const & SM, clang::SourceLocation Loc)
|
||||
{
|
||||
#if CLANG_VERSION >= 70000
|
||||
auto const csr = SM.getImmediateExpansionRange(Loc);
|
||||
if (csr.isCharRange()) { /*TODO*/ }
|
||||
return {csr.getBegin(), csr.getEnd()};
|
||||
#else
|
||||
return SM.getImmediateExpansionRange(Loc);
|
||||
#endif
|
||||
}
|
||||
|
||||
inline bool isPointWithin(
|
||||
clang::SourceManager const & SM, clang::SourceLocation Location, clang::SourceLocation Start,
|
||||
|
Reference in New Issue
Block a user