mirror of
https://github.com/MaskRay/ccls.git
synced 2025-12-19 05:32:11 +00:00
Compare commits
5 Commits
66e8264729
...
779cd86a06
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
779cd86a06 | ||
|
|
d31cc9f076 | ||
|
|
a7068f13ec | ||
|
|
344e2e6557 | ||
|
|
791f6ba974 |
@ -325,6 +325,9 @@ try_again:
|
||||
switch (tp->getTypeClass()) {
|
||||
case Type::Typedef:
|
||||
d = cast<TypedefType>(tp)->getDecl();
|
||||
tp = cast<TypedefType>(tp)->getDecl()->getUnderlyingType().getTypePtrOrNull();
|
||||
if (tp)
|
||||
goto try_again;
|
||||
break;
|
||||
case Type::ObjCObject:
|
||||
d = cast<ObjCObjectType>(tp)->getInterface();
|
||||
@ -334,11 +337,7 @@ try_again:
|
||||
break;
|
||||
case Type::Record:
|
||||
case Type::Enum:
|
||||
#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
|
||||
d = cast<TagType>(tp)->getOriginalDecl();
|
||||
#else
|
||||
d = cast<TagType>(tp)->getDecl();
|
||||
#endif
|
||||
break;
|
||||
case Type::TemplateTypeParm:
|
||||
d = cast<TemplateTypeParmType>(tp)->getDecl();
|
||||
@ -346,15 +345,10 @@ try_again:
|
||||
case Type::TemplateSpecialization:
|
||||
if (specialization)
|
||||
*specialization = true;
|
||||
if (const RecordType *record = tp->getAs<RecordType>()) {
|
||||
#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
|
||||
d = record->getOriginalDecl();
|
||||
#else
|
||||
if (const RecordType *record = tp->getAs<RecordType>())
|
||||
d = record->getDecl();
|
||||
#endif
|
||||
} else {
|
||||
else
|
||||
d = cast<TemplateSpecializationType>(tp)->getTemplateName().getAsTemplateDecl();
|
||||
}
|
||||
break;
|
||||
|
||||
case Type::Auto:
|
||||
@ -365,11 +359,7 @@ try_again:
|
||||
break;
|
||||
|
||||
case Type::InjectedClassName:
|
||||
#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
|
||||
d = cast<InjectedClassNameType>(tp)->getOriginalDecl();
|
||||
#else
|
||||
d = cast<InjectedClassNameType>(tp)->getDecl();
|
||||
#endif
|
||||
break;
|
||||
|
||||
// FIXME: Template type parameters!
|
||||
@ -427,11 +417,7 @@ bool validateRecord(const RecordDecl *rd) {
|
||||
if (fqt->isIncompleteType() || fqt->isDependentType())
|
||||
return false;
|
||||
if (const RecordType *childType = i->getType()->getAs<RecordType>())
|
||||
#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
|
||||
if (const RecordDecl *child = childType->getOriginalDecl())
|
||||
#else
|
||||
if (const RecordDecl *child = childType->getDecl())
|
||||
#endif
|
||||
if (!validateRecord(child))
|
||||
return false;
|
||||
}
|
||||
@ -705,11 +691,7 @@ public:
|
||||
if (fd->getIdentifier())
|
||||
type.def.vars.emplace_back(getUsr(fd), offset1);
|
||||
else if (const auto *rt1 = fd->getType()->getAs<RecordType>()) {
|
||||
#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
|
||||
if (const RecordDecl *rd1 = rt1->getOriginalDecl())
|
||||
#else
|
||||
if (const RecordDecl *rd1 = rt1->getDecl())
|
||||
#endif
|
||||
if (seen.insert(rd1).second)
|
||||
stack.push_back({rd1, offset1});
|
||||
}
|
||||
@ -1286,7 +1268,7 @@ IndexResult index(WorkingFiles *wfiles, VFS *vfs, const std::string &opt_wdir, c
|
||||
clang->setInvocation(std::move(ci));
|
||||
#endif
|
||||
clang->createDiagnostics(
|
||||
#if LLVM_VERSION_MAJOR >= 20
|
||||
#if LLVM_VERSION_MAJOR >= 20 && LLVM_VERSION_MAJOR < 22
|
||||
*fs,
|
||||
#endif
|
||||
&dc, false);
|
||||
@ -1299,7 +1281,12 @@ IndexResult index(WorkingFiles *wfiles, VFS *vfs, const std::string &opt_wdir, c
|
||||
if (!clang->hasTarget())
|
||||
return {};
|
||||
clang->getPreprocessorOpts().RetainRemappedFileBuffers = true;
|
||||
#if LLVM_VERSION_MAJOR >= 22
|
||||
clang->setVirtualFileSystem(fs);
|
||||
clang->createFileManager();
|
||||
#else
|
||||
clang->createFileManager(fs);
|
||||
#endif
|
||||
clang->setSourceManager(new SourceManager(clang->getDiagnostics(), clang->getFileManager(), true));
|
||||
|
||||
IndexParam param(*vfs, no_linkage);
|
||||
|
||||
@ -345,7 +345,11 @@ void do_initialize(MessageHandler *m, InitializeParam ¶m, ReplyOnce &reply)
|
||||
|
||||
if (g_config->cache.directory.size()) {
|
||||
SmallString<256> path(g_config->cache.directory);
|
||||
#if LLVM_VERSION_MAJOR >= 22
|
||||
sys::path::make_absolute(project_path, path);
|
||||
#else
|
||||
sys::fs::make_absolute(project_path, path);
|
||||
#endif
|
||||
// Use upper case for the Driver letter on Windows.
|
||||
g_config->cache.directory = normalizePath(path.str());
|
||||
ensureEndsInSlash(g_config->cache.directory);
|
||||
|
||||
@ -268,7 +268,7 @@ std::unique_ptr<CompilerInstance> buildCompilerInstance(Session &session, std::u
|
||||
clang->setInvocation(std::move(ci));
|
||||
#endif
|
||||
clang->createDiagnostics(
|
||||
#if LLVM_VERSION_MAJOR >= 20
|
||||
#if LLVM_VERSION_MAJOR >= 20 && LLVM_VERSION_MAJOR < 22
|
||||
*fs,
|
||||
#endif
|
||||
&dc, false);
|
||||
@ -283,7 +283,12 @@ std::unique_ptr<CompilerInstance> buildCompilerInstance(Session &session, std::u
|
||||
// Construct SourceManager with UserFilesAreVolatile: true because otherwise
|
||||
// RequiresNullTerminator: true may cause out-of-bounds read when a file is
|
||||
// mmap'ed but is saved concurrently.
|
||||
#if LLVM_VERSION_MAJOR >= 22
|
||||
clang->setVirtualFileSystem(fs);
|
||||
clang->createFileManager();
|
||||
#else
|
||||
clang->createFileManager(fs);
|
||||
#endif
|
||||
clang->setSourceManager(new SourceManager(clang->getDiagnostics(), clang->getFileManager(), true));
|
||||
auto &isec = clang->getFrontendOpts().Inputs;
|
||||
if (isec.size()) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user