diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-01-25 00:04:03 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-01-25 00:04:03 +0000 |
commit | 14429b918bd2f4cb52abc75546a7fe37142054ca (patch) | |
tree | 4e827248b9a645d660c677319ea7b929f50fb300 /lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp | |
parent | 5286e2ddfd8332520de4c076e49991d6fe557adb (diff) |
[analyzer] Handle the dot syntax for properties in the ExprEngine.
We translate property accesses to obj-c messages by simulating "loads" or "stores" to properties
using a pseudo-location SVal kind (ObjCPropRef).
Checkers can now reason about obj-c messages for both explicit message expressions and implicit
messages due to property accesses.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124161 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp')
-rw-r--r-- | lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp b/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp index e6a40bb597..1f5f233b03 100644 --- a/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp @@ -246,10 +246,11 @@ void CallAndMessageChecker::preVisitObjCMessage(CheckerContext &C, return; } + const char *bugDesc = msg.isPropertySetter() ? + "Argument for property setter is an uninitialized value" + : "Argument in message expression is an uninitialized value"; // Check for any arguments that are uninitialized/undefined. - PreVisitProcessArgs(C, CallOrObjCMessage(msg, state), - "Argument in message expression " - "is an uninitialized value", BT_msg_arg); + PreVisitProcessArgs(C, CallOrObjCMessage(msg, state), bugDesc, BT_msg_arg); } bool CallAndMessageChecker::evalNilReceiver(CheckerContext &C, |