forked from OSchip/llvm-project
[analyzer] Fix JSON dumps for location contexts.
Location context ID is a property of the location context, not of an item within it. It's useful to know the id even when there are no items in the context, eg. for the purposes of figuring out how did contents of the Environment for the same location context changed across states. Differential Revision: https://reviews.llvm.org/D62754 llvm-svn: 363895
This commit is contained in:
parent
3bb7b2ec7f
commit
f9f6cdb1a8
|
@ -527,7 +527,8 @@ void LocationContext::printJson(raw_ostream &Out, const char *NL,
|
|||
|
||||
unsigned Frame = 0;
|
||||
for (const LocationContext *LCtx = this; LCtx; LCtx = LCtx->getParent()) {
|
||||
Indent(Out, Space, IsDot) << "{ \"location_context\": \"";
|
||||
Indent(Out, Space, IsDot)
|
||||
<< "{ \"lctx_id\": " << LCtx->getID() << ", \"location_context\": \"";
|
||||
switch (LCtx->getKind()) {
|
||||
case StackFrame:
|
||||
Out << '#' << Frame << " Call\", \"calling\": \"";
|
||||
|
@ -541,7 +542,7 @@ void LocationContext::printJson(raw_ostream &Out, const char *NL,
|
|||
if (const Stmt *S = cast<StackFrameContext>(LCtx)->getCallSite()) {
|
||||
Out << '\"';
|
||||
printLocation(Out, SM, S->getBeginLoc());
|
||||
Out << '\"';
|
||||
Out << '\"';
|
||||
} else {
|
||||
Out << "null";
|
||||
}
|
||||
|
|
|
@ -261,8 +261,7 @@ void Environment::printJson(raw_ostream &Out, const ASTContext &Ctx,
|
|||
|
||||
const Stmt *S = I->first.getStmt();
|
||||
Indent(Out, InnerSpace, IsDot)
|
||||
<< "{ \"lctx_id\": " << LC->getID()
|
||||
<< ", \"stmt_id\": " << S->getID(Ctx) << ", \"pretty\": ";
|
||||
<< "{ \"stmt_id\": " << S->getID(Ctx) << ", \"pretty\": ";
|
||||
S->printJson(Out, nullptr, PP, /*AddQuotes=*/true);
|
||||
|
||||
Out << ", \"value\": ";
|
||||
|
|
|
@ -149,9 +149,6 @@ public:
|
|||
if (!S)
|
||||
I = getItem().getCXXCtorInitializer();
|
||||
|
||||
// IDs
|
||||
Out << "\"lctx_id\": " << getLocationContext()->getID() << ", ";
|
||||
|
||||
if (S)
|
||||
Out << "\"stmt_id\": " << S->getID(getASTContext());
|
||||
else
|
||||
|
|
|
@ -18,9 +18,9 @@ void foo() {
|
|||
new S;
|
||||
}
|
||||
|
||||
// CHECK: \"location_context\": \"#0 Call\", \"calling\": \"foo\", \"call_line\": null, \"items\": [\l \{ \"lctx_id\": 1, \"stmt_id\": {{[0-9]+}}, \"kind\": \"construct into local variable\", \"argument_index\": null, \"pretty\": \"T t;\", \"value\": \"&t\"
|
||||
// CHECK: \"location_context\": \"#0 Call\", \"calling\": \"foo\", \"call_line\": null, \"items\": [\l \{ \"stmt_id\": {{[0-9]+}}, \"kind\": \"construct into local variable\", \"argument_index\": null, \"pretty\": \"T t;\", \"value\": \"&t\"
|
||||
|
||||
// CHECK: \"location_context\": \"#0 Call\", \"calling\": \"T::T\", \"call_line\": \"16\", \"items\": [\l \{ \"lctx_id\": 2, \"init_id\": {{[0-9]+}}, \"kind\": \"construct into member variable\", \"argument_index\": null, \"pretty\": \"s\", \"value\": \"&t-\>s\"
|
||||
// CHECK: \"location_context\": \"#0 Call\", \"calling\": \"T::T\", \"call_line\": \"16\", \"items\": [\l \{ \"init_id\": {{[0-9]+}}, \"kind\": \"construct into member variable\", \"argument_index\": null, \"pretty\": \"s\", \"value\": \"&t-\>s\"
|
||||
|
||||
// CHECK: \"cluster\": \"t\", \"items\": [\l \{ \"kind\": \"Default\", \"offset\": 0, \"value\": \"conj_$2\{int, LC5, no stmt, #1\}\"
|
||||
|
||||
|
|
|
@ -30,8 +30,8 @@ void foo(int x) {
|
|||
// CHECK-NEXT: ]}
|
||||
// CHECK-NEXT: ],
|
||||
// CHECK-NEXT: "environment": [
|
||||
// CHECK-NEXT: { "location_context": "#0 Call", "calling": "foo", "call_line": null, "items": [
|
||||
// CHECK-NEXT: { "lctx_id": 1, "stmt_id": {{[0-9]+}}, "pretty": "clang_analyzer_printState", "value": "&code{clang_analyzer_printState}" }
|
||||
// CHECK-NEXT: { "lctx_id": 1, "location_context": "#0 Call", "calling": "foo", "call_line": null, "items": [
|
||||
// CHECK-NEXT: { "stmt_id": {{[0-9]+}}, "pretty": "clang_analyzer_printState", "value": "&code{clang_analyzer_printState}" }
|
||||
// CHECK-NEXT: ]}
|
||||
// CHECK-NEXT: ],
|
||||
// CHECK-NEXT: "constraints": [
|
||||
|
|
Loading…
Reference in New Issue