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