// RUN: %exploded_graph_rewriter %s | FileCheck %s
// CHECK: Program points:
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME: BlockEdge
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME: [B0] -> [B1]
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME: BlockEntrance
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME: [B1]
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME:
Node0x1 [shape=record,label=
"{
{
"state_id": 0, "program_state": null, "program_points": [
{
"kind": "Edge",
"src_id": 0,
"dst_id": 1,
"terminator": null,
"term_kind": null,
"tag": null,
"node_id": 1,
"has_report": 0,
"is_sink": 0
},
{
"kind": "BlockEntrance",
"block_id": 1,
"terminator": null,
"term_kind": null,
"tag": null,
"node_id": 2,
"has_report": 0,
"is_sink": 0
}
]}
\l}"];
// CHECK-NEXT: Program point:
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME: main.cpp:4:5:
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME: DeclRefExpr
// CHECK-SAME: |
// CHECK-SAME: S3 |
// CHECK-SAME:
// CHECK-SAME: PreStmt
// CHECK-SAME: |
// CHECK-SAME: x |
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME: Tag:
// CHECK-SAME: ExprEngine : Clean Node
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME:
Node0x3 [shape=record,label=
"{
{ "state_id": 0, "program_state": null, "program_points": [
{
"kind": "Statement",
"stmt_kind": "DeclRefExpr",
"stmt_point_kind": "PreStmt",
"stmt_id": 3,
"pointer": "0x3",
"pretty": "x",
"location": {
"file": "main.cpp",
"line": 4,
"column": 5
},
"tag": "ExprEngine : Clean Node",
"node_id": 3,
"pointer": "0x3",
"has_report": 0,
"is_sink": 0
}
]}
\l}"];
// Test collapsing large pretty prints with braces.
// CHECK-NEXT: Program point:
// CHECK-SAME: \{ ... \} |
Node0x4 [shape=record,label=
"{
{
"state_id": 0, "program_state": null, "program_points": [
{
"kind": "Statement",
"stmt_kind": "CompoundStmt",
"stmt_point_kind": "PostStmt",
"stmt_id": 6,
"pointer": "0x6",
"pretty": "{ very very very very very very long pretty print }",
"location": {
"line": 7,
"column": 8
},
"tag": "ExprEngine : Clean Node",
"node_id": 4,
"has_report": 0,
"is_sink": 0
}
]}
\l}"];
// CHECK-NEXT: Program point:
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME: main.cpp:8:9:
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME: ImplicitCastExpr (LValueToRValue)
// CHECK-SAME:
// CHECK-SAME: |
// CHECK-SAME: S5 |
// CHECK-SAME:
// CHECK-SAME: PreStmt
// CHECK-SAME: |
// CHECK-SAME: y |
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME:
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME: Tag:
// CHECK-SAME: ExprEngine : Clean Node
// CHECK-SAME: |
// CHECK-SAME:
// CHECK-SAME:
Node0x5 [shape=record,label=
"{
{ "state_id": 0, "program_state": null, "program_points": [
{
"kind": "Statement",
"stmt_kind": "ImplicitCastExpr",
"cast_kind": "LValueToRValue",
"stmt_point_kind": "PreStmt",
"stmt_id": 5,
"pointer": "0x6",
"pretty": "y",
"location": {
"file": "main.cpp",
"line": 8,
"column": 9
},
"tag": "ExprEngine : Clean Node",
"node_id": 5,
"has_report": 0,
"is_sink": 0
}
]}
\l}"];