File tree 2 files changed +15
-1
lines changed 2 files changed +15
-1
lines changed Original file line number Diff line number Diff line change @@ -505,7 +505,7 @@ llvm::Optional<StringRef> setterVariableName(const CXXMethodDecl *CMD) {
505
505
if (auto *CE = llvm::dyn_cast<CallExpr>(RHS->IgnoreCasts ())) {
506
506
if (CE->getNumArgs () != 1 )
507
507
return llvm::None;
508
- auto *ND = llvm::dyn_cast <NamedDecl>(CE->getCalleeDecl ());
508
+ auto *ND = llvm::dyn_cast_or_null <NamedDecl>(CE->getCalleeDecl ());
509
509
if (!ND || !ND->getIdentifier () || ND->getName () != " move" ||
510
510
!ND->isInStdNamespace ())
511
511
return llvm::None;
Original file line number Diff line number Diff line change @@ -2438,6 +2438,20 @@ TEST(Hover, DocsFromAST) {
2438
2438
}
2439
2439
}
2440
2440
2441
+ TEST (Hover, NoCrash) {
2442
+ Annotations T (R"cpp(
2443
+ /* error-ok */
2444
+ template<typename T> T foo(T);
2445
+
2446
+ // Setter variable heuristic might fail if the callexpr is broken.
2447
+ struct X { int Y; void [[^setY]](float) { Y = foo(undefined); } };)cpp" );
2448
+
2449
+ TestTU TU = TestTU::withCode (T.code ());
2450
+ auto AST = TU.build ();
2451
+ for (const auto &P : T.points ())
2452
+ getHover (AST, P, format::getLLVMStyle (), nullptr );
2453
+ }
2454
+
2441
2455
TEST (Hover, DocsFromMostSpecial) {
2442
2456
Annotations T (R"cpp(
2443
2457
// doc1
You can’t perform that action at this time.
0 commit comments