1// RUN: %exploded_graph_rewriter %s | FileCheck %s
2
3// CHECK: <b>Program points:</b>
4// CHECK-SAME: <table border="0" align="left" width="0">
5// CHECK-SAME:   <tr>
6// CHECK-SAME:     <td width="0">
7// CHECK-SAME:     </td>
8// CHECK-SAME:     <td align="left" width="0">
9// CHECK-SAME:       <font color="gold3">BlockEdge</font>
10// CHECK-SAME:     </td>
11// CHECK-SAME:     <td align="left">
12// CHECK-SAME:     [B0] -&gt; [B1]
13// CHECK-SAME:     </td>
14// CHECK-SAME:   </tr>
15// CHECK-SAME:   <tr>
16// CHECK-SAME:     <td width="0">
17// CHECK-SAME:     </td>
18// CHECK-SAME:     <td align="left" width="0">
19// CHECK-SAME:       <font color="gold3">BlockEntrance</font>
20// CHECK-SAME:     </td>
21// CHECK-SAME:     <td align="left">
22// CHECK-SAME:     [B1]
23// CHECK-SAME:     </td>
24// CHECK-SAME:   </tr>
25// CHECK-SAME: </table>
26Node0x1 [shape=record,label=
27 "{
28    {
29      "state_id": 0, "program_state": null, "program_points": [
30      {
31        "kind": "Edge",
32        "src_id": 0,
33        "dst_id": 1,
34        "terminator": null,
35        "term_kind": null,
36        "tag": null,
37        "node_id": 1,
38        "has_report": 0,
39        "is_sink": 0
40      },
41      {
42        "kind": "BlockEntrance",
43        "block_id": 1,
44        "terminator": null,
45        "term_kind": null,
46        "tag": null,
47        "node_id": 2,
48        "has_report": 0,
49        "is_sink": 0
50      }
51    ]}
52\l}"];
53
54// CHECK-NEXT: <b>Program point:</b>
55// CHECK-SAME: <table border="0" align="left" width="0">
56// CHECK-SAME:   <tr>
57// CHECK-SAME:     <td align="left" width="0">
58// CHECK-SAME:       main.cpp:<b>4</b>:<b>5</b>:
59// CHECK-SAME:     </td>
60// CHECK-SAME:     <td align="left" width="0">
61// CHECK-SAME:       <font color="cyan4">DeclRefExpr</font>
62// CHECK-SAME:     </td>
63// CHECK-SAME:     <td align="left"><i>S3</i></td>
64// CHECK-SAME:     <td align="left">
65// CHECK-SAME:       <font color="cyan3">PreStmt</font>
66// CHECK-SAME:     </td>
67// CHECK-SAME:     <td align="left">x</td>
68// CHECK-SAME:   </tr>
69// CHECK-SAME:   <tr>
70// CHECK-SAME:     <td width="0">
71// CHECK-SAME:     </td>
72// CHECK-SAME:     <td colspan="3" align="left">
73// CHECK-SAME:       <b>Tag: </b>
74// CHECK-SAME:       <font color="crimson">ExprEngine : Clean Node</font>
75// CHECK-SAME:     </td>
76// CHECK-SAME:   </tr>
77// CHECK-SAME: </table>
78Node0x3 [shape=record,label=
79 "{
80    { "state_id": 0, "program_state": null, "program_points": [
81      {
82        "kind": "Statement",
83        "stmt_kind": "DeclRefExpr",
84        "stmt_point_kind": "PreStmt",
85        "stmt_id": 3,
86        "pointer": "0x3",
87        "pretty": "x",
88        "location": {
89          "file": "main.cpp",
90          "line": 4,
91          "column": 5
92        },
93        "tag": "ExprEngine : Clean Node",
94        "node_id": 3,
95        "pointer": "0x3",
96        "has_report": 0,
97        "is_sink": 0
98      }
99    ]}
100\l}"];
101
102// Test collapsing large pretty prints with braces.
103
104// CHECK-NEXT: <b>Program point:</b>
105// CHECK-SAME: <td align="left">\{ ... \}</td>
106Node0x4 [shape=record,label=
107 "{
108    {
109      "state_id": 0, "program_state": null, "program_points": [
110      {
111        "kind": "Statement",
112        "stmt_kind": "CompoundStmt",
113        "stmt_point_kind": "PostStmt",
114        "stmt_id": 6,
115        "pointer": "0x6",
116        "pretty": "{ very very very very very very long pretty print }",
117        "location": {
118          "line": 7,
119          "column": 8
120        },
121        "tag": "ExprEngine : Clean Node",
122        "node_id": 4,
123        "has_report": 0,
124        "is_sink": 0
125      }
126    ]}
127\l}"];
128
129// CHECK-NEXT: <b>Program point:</b>
130// CHECK-SAME: <table border="0" align="left" width="0">
131// CHECK-SAME:   <tr>
132// CHECK-SAME:     <td align="left" width="0">
133// CHECK-SAME:       main.cpp:<b>8</b>:<b>9</b>:
134// CHECK-SAME:     </td>
135// CHECK-SAME:     <td align="left" width="0">
136// CHECK-SAME:       <font color="cyan4">
137// CHECK-SAME:         ImplicitCastExpr (LValueToRValue)
138// CHECK-SAME:       </font>
139// CHECK-SAME:     </td>
140// CHECK-SAME:     <td align="left"><i>S5</i></td>
141// CHECK-SAME:     <td align="left">
142// CHECK-SAME:       <font color="cyan3">PreStmt</font>
143// CHECK-SAME:     </td>
144// CHECK-SAME:     <td align="left">y</td>
145// CHECK-SAME:   </tr>
146// CHECK-SAME:   <tr>
147// CHECK-SAME:     <td width="0">
148// CHECK-SAME:     </td>
149// CHECK-SAME:     <td colspan="3" align="left">
150// CHECK-SAME:       <b>Tag: </b>
151// CHECK-SAME:       <font color="crimson">ExprEngine : Clean Node</font>
152// CHECK-SAME:     </td>
153// CHECK-SAME:   </tr>
154// CHECK-SAME: </table>
155Node0x5 [shape=record,label=
156 "{
157    { "state_id": 0, "program_state": null, "program_points": [
158      {
159        "kind": "Statement",
160        "stmt_kind": "ImplicitCastExpr",
161        "cast_kind": "LValueToRValue",
162        "stmt_point_kind": "PreStmt",
163        "stmt_id": 5,
164        "pointer": "0x6",
165        "pretty": "y",
166        "location": {
167          "file": "main.cpp",
168          "line": 8,
169          "column": 9
170        },
171        "tag": "ExprEngine : Clean Node",
172        "node_id": 5,
173        "has_report": 0,
174        "is_sink": 0
175      }
176    ]}
177\l}"];
178