mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 12:36:07 +00:00
[clangd] Avoid null result in FindRecordTypeAt()
Fixes https://github.com/clangd/clangd/issues/1743 Differential Revision: https://reviews.llvm.org/D158851
This commit is contained in:
parent
cccf4d6e4a
commit
1994e1173b
@ -1851,7 +1851,8 @@ std::vector<const CXXRecordDecl *> findRecordTypeAt(ParsedAST &AST,
|
||||
|
||||
if (const VarDecl *VD = dyn_cast<VarDecl>(D)) {
|
||||
// If this is a variable, use the type of the variable.
|
||||
Records.push_back(VD->getType().getTypePtr()->getAsCXXRecordDecl());
|
||||
if (const auto *RD = VD->getType().getTypePtr()->getAsCXXRecordDecl())
|
||||
Records.push_back(RD);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -78,6 +78,19 @@ int main() {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(FindRecordTypeAt, Nonexistent) {
|
||||
Annotations Source(R"cpp(
|
||||
int *wa^ldo;
|
||||
)cpp");
|
||||
TestTU TU = TestTU::withCode(Source.code());
|
||||
auto AST = TU.build();
|
||||
|
||||
for (Position Pt : Source.points()) {
|
||||
auto Records = findRecordTypeAt(AST, Pt);
|
||||
ASSERT_THAT(Records, SizeIs(0));
|
||||
}
|
||||
}
|
||||
|
||||
TEST(FindRecordTypeAt, Method) {
|
||||
Annotations Source(R"cpp(
|
||||
struct Child2 {
|
||||
@ -119,7 +132,7 @@ int main() {
|
||||
|
||||
for (Position Pt : Source.points()) {
|
||||
// A field does not unambiguously specify a record type
|
||||
// (possible associated reocrd types could be the field's type,
|
||||
// (possible associated record types could be the field's type,
|
||||
// or the type of the record that the field is a member of).
|
||||
EXPECT_THAT(findRecordTypeAt(AST, Pt), SizeIs(0));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user