mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-10 18:11:19 +00:00
[clangd] Fix isInsideMainFile to be aware of preamble.
Reviewers: kadircet Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D75460
This commit is contained in:
parent
37549464c1
commit
2be4569719
@ -420,7 +420,10 @@ static SourceRange getTokenFileRange(SourceLocation Loc,
|
||||
}
|
||||
|
||||
bool isInsideMainFile(SourceLocation Loc, const SourceManager &SM) {
|
||||
return Loc.isValid() && SM.isWrittenInMainFile(SM.getExpansionLoc(Loc));
|
||||
if (!Loc.isValid())
|
||||
return false;
|
||||
FileID FID = SM.getFileID(SM.getExpansionLoc(Loc));
|
||||
return FID == SM.getMainFileID() || FID == SM.getPreambleFileID();
|
||||
}
|
||||
|
||||
llvm::Optional<SourceRange> toHalfOpenFileRange(const SourceManager &SM,
|
||||
|
@ -461,10 +461,12 @@ TEST(SourceCodeTests, IsInsideMainFile){
|
||||
class Header {};
|
||||
)cpp";
|
||||
TU.Code = R"cpp(
|
||||
#define DEFINE_MAIN4 class Main4{};
|
||||
class Main1 {};
|
||||
DEFINE_CLASS(Main2)
|
||||
DEFINE_YY
|
||||
class Main {};
|
||||
DEFINE_MAIN4
|
||||
)cpp";
|
||||
TU.ExtraArgs.push_back("-DHeader=Header3");
|
||||
TU.ExtraArgs.push_back("-DMain=Main3");
|
||||
@ -474,10 +476,13 @@ TEST(SourceCodeTests, IsInsideMainFile){
|
||||
return findDecl(AST, Name).getLocation();
|
||||
};
|
||||
for (const auto *HeaderDecl : {"Header1", "Header2", "Header3"})
|
||||
EXPECT_FALSE(isInsideMainFile(DeclLoc(HeaderDecl), SM));
|
||||
EXPECT_FALSE(isInsideMainFile(DeclLoc(HeaderDecl), SM)) << HeaderDecl;
|
||||
|
||||
for (const auto *MainDecl : {"Main1", "Main2", "Main3", "YY"})
|
||||
EXPECT_TRUE(isInsideMainFile(DeclLoc(MainDecl), SM));
|
||||
for (const auto *MainDecl : {"Main1", "Main2", "Main3", "Main4", "YY"})
|
||||
EXPECT_TRUE(isInsideMainFile(DeclLoc(MainDecl), SM)) << MainDecl;
|
||||
|
||||
// Main4 is *spelled* in the preamble, but in the main-file part of it.
|
||||
EXPECT_TRUE(isInsideMainFile(SM.getSpellingLoc(DeclLoc("Main4")), SM));
|
||||
}
|
||||
|
||||
// Test for functions toHalfOpenFileRange and getHalfOpenFileRange
|
||||
|
Loading…
x
Reference in New Issue
Block a user