mirror of
https://github.com/MaskRay/ccls.git
synced 2025-12-19 05:32:11 +00:00
Compare commits
4 Commits
0d5dbb2060
...
3c7586c814
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c7586c814 | ||
|
|
5660367c77 | ||
|
|
cfc7c0208f | ||
|
|
536033c204 |
@ -325,9 +325,6 @@ 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();
|
||||
@ -337,7 +334,11 @@ 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();
|
||||
@ -345,10 +346,15 @@ try_again:
|
||||
case Type::TemplateSpecialization:
|
||||
if (specialization)
|
||||
*specialization = true;
|
||||
if (const RecordType *record = tp->getAs<RecordType>())
|
||||
if (const RecordType *record = tp->getAs<RecordType>()) {
|
||||
#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
|
||||
d = record->getOriginalDecl();
|
||||
#else
|
||||
d = record->getDecl();
|
||||
else
|
||||
#endif
|
||||
} else {
|
||||
d = cast<TemplateSpecializationType>(tp)->getTemplateName().getAsTemplateDecl();
|
||||
}
|
||||
break;
|
||||
|
||||
case Type::Auto:
|
||||
@ -359,7 +365,11 @@ 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!
|
||||
@ -417,7 +427,11 @@ 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;
|
||||
}
|
||||
@ -691,7 +705,11 @@ 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});
|
||||
}
|
||||
@ -1268,7 +1286,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 && LLVM_VERSION_MAJOR < 22
|
||||
#if LLVM_VERSION_MAJOR >= 20
|
||||
*fs,
|
||||
#endif
|
||||
&dc, false);
|
||||
@ -1281,12 +1299,7 @@ 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,11 +345,7 @@ 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 && LLVM_VERSION_MAJOR < 22
|
||||
#if LLVM_VERSION_MAJOR >= 20
|
||||
*fs,
|
||||
#endif
|
||||
&dc, false);
|
||||
@ -283,12 +283,7 @@ 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