Clang: Fix build with Clang/LLVM 10

Change-Id: I740286c9dcfd325b1c31ab863fb5c91bf9c6ec70
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Orgad Shaneh
2020-02-17 23:21:17 +02:00
committed by Orgad Shaneh
parent 79612417e3
commit 44023c8f43
9 changed files with 92 additions and 21 deletions

View File

@@ -78,7 +78,8 @@ void ClangQuery::findLocations()
std::make_move_iterator(asts.end()),
[&] (std::unique_ptr<clang::ASTUnit> &&ast) {
Diagnostics diagnostics;
auto optionalMatcher = Parser::parseMatcherExpression({m_query.data(), m_query.size()},
llvm::StringRef query{m_query.data(), m_query.size()};
auto optionalMatcher = Parser::parseMatcherExpression(query,
nullptr,
&diagnostics);
parseDiagnostics(diagnostics);

View File

@@ -48,7 +48,11 @@ class CollectSymbolsAction : public clang::WrapperFrontendAction
public:
CollectSymbolsAction(std::shared_ptr<IndexDataConsumer> indexDataConsumer)
: clang::WrapperFrontendAction(
clang::index::createIndexingAction(indexDataConsumer, createIndexingOptions(), nullptr))
clang::index::createIndexingAction(indexDataConsumer, createIndexingOptions()
#if LLVM_VERSION_MAJOR < 10
, nullptr
#endif
))
, m_indexDataConsumer(indexDataConsumer)
{}

View File

@@ -118,11 +118,16 @@ bool IndexDataConsumer::isAlreadyParsed(clang::FileID fileId, SourcesManager &so
return sourcesManager.alreadyParsed(filePathId(fileEntry), fileEntry->getModificationTime());
}
bool IndexDataConsumer::handleDeclOccurence(const clang::Decl *declaration,
clang::index::SymbolRoleSet symbolRoles,
llvm::ArrayRef<clang::index::SymbolRelation> /*symbolRelations*/,
clang::SourceLocation sourceLocation,
IndexDataConsumer::ASTNodeInfo /*astNodeInfo*/)
#if LLVM_VERSION_MAJOR >= 10
bool IndexDataConsumer::handleDeclOccurrence(
#else
bool IndexDataConsumer::handleDeclOccurence(
#endif
const clang::Decl *declaration,
clang::index::SymbolRoleSet symbolRoles,
llvm::ArrayRef<clang::index::SymbolRelation> /*symbolRelations*/,
clang::SourceLocation sourceLocation,
IndexDataConsumer::ASTNodeInfo /*astNodeInfo*/)
{
const auto *namedDeclaration = clang::dyn_cast<clang::NamedDecl>(declaration);
if (namedDeclaration) {
@@ -175,10 +180,15 @@ SourceLocationKind macroSymbolType(clang::index::SymbolRoleSet roles)
} // namespace
bool IndexDataConsumer::handleMacroOccurence(const clang::IdentifierInfo *identifierInfo,
const clang::MacroInfo *macroInfo,
clang::index::SymbolRoleSet roles,
clang::SourceLocation sourceLocation)
#if LLVM_VERSION_MAJOR >= 10
bool IndexDataConsumer::handleMacroOccurrence(
#else
bool IndexDataConsumer::handleMacroOccurence(
#endif
const clang::IdentifierInfo *identifierInfo,
const clang::MacroInfo *macroInfo,
clang::index::SymbolRoleSet roles,
clang::SourceLocation sourceLocation)
{
if (macroInfo && sourceLocation.isFileID()
&& !isAlreadyParsed(m_sourceManager->getFileID(sourceLocation), m_macroSourcesManager)

View File

@@ -57,16 +57,26 @@ public:
IndexDataConsumer(const IndexDataConsumer &) = delete;
IndexDataConsumer &operator=(const IndexDataConsumer &) = delete;
bool handleDeclOccurence(const clang::Decl *declaration,
clang::index::SymbolRoleSet symbolRoles,
llvm::ArrayRef<clang::index::SymbolRelation> symbolRelations,
clang::SourceLocation sourceLocation,
ASTNodeInfo astNodeInfo) override;
#if LLVM_VERSION_MAJOR >= 10
bool handleDeclOccurrence(
#else
bool handleDeclOccurence(
#endif
const clang::Decl *declaration,
clang::index::SymbolRoleSet symbolRoles,
llvm::ArrayRef<clang::index::SymbolRelation> symbolRelations,
clang::SourceLocation sourceLocation,
ASTNodeInfo astNodeInfo) override;
bool handleMacroOccurence(const clang::IdentifierInfo *identifierInfo,
const clang::MacroInfo *macroInfo,
clang::index::SymbolRoleSet roles,
clang::SourceLocation sourceLocation) override;
#if LLVM_VERSION_MAJOR >= 10
bool handleMacroOccurrence(
#else
bool handleMacroOccurence(
#endif
const clang::IdentifierInfo *identifierInfo,
const clang::MacroInfo *macroInfo,
clang::index::SymbolRoleSet roles,
clang::SourceLocation sourceLocation) override;
void finish() override;

View File

@@ -74,7 +74,11 @@ std::unique_ptr<clang::tooling::FrontendActionFactory> newFrontendActionFactory(
: m_action(consumerFactory)
{}
#if LLVM_VERSION_MAJOR >= 10
std::unique_ptr<clang::FrontendAction> create() override { return std::make_unique<AdaptorAction>(m_action); }
#else
clang::FrontendAction *create() override { return new AdaptorAction(m_action); }
#endif
private:
class AdaptorAction : public clang::ASTFrontendAction