[analyzer] Fix assertion in ReturnVisitor for body-farm synthesized getters

Don't emit a path note marking the return site if the return statement does not
have a valid location. This fixes an assertion failure I introduced in r265839.

llvm-svn: 266031
This commit is contained in:
Devin Coughlin 2016-04-12 00:53:26 +00:00
parent 5933eb84d3
commit b40d14f3d5
2 changed files with 16 additions and 0 deletions

View File

@ -324,6 +324,9 @@ public:
}
PathDiagnosticLocation L(Ret, BRC.getSourceManager(), StackFrame);
if (!L.isValid() || !L.asLocation().isValid())
return nullptr;
return new PathDiagnosticEventPiece(L, Out.str());
}

View File

@ -45,6 +45,8 @@ __attribute__((objc_root_class))
@property(readonly) int *propertyReturningNull;
@property(readonly) int *synthesizedProperty;
@end
@implementation SomeClass
@ -72,3 +74,14 @@ void testPropertyReturningNull(SomeClass *sc) {
// expected-warning@-2 {{Dereference of null pointer}}
#endif
}
void testSynthesizedPropertyReturningNull(SomeClass *sc) {
if (sc.synthesizedProperty)
return;
int *result = sc.synthesizedProperty;
*result = 1;
#ifndef SUPPRESSED
// expected-warning@-2 {{Dereference of null pointer}}
#endif
}