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    { "node_id": 1, "pointer": "0x1", "has_report": false, "is_sink": false,
32      "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      },
41      {
42        "kind": "BlockEntrance",
43        "block_id": 1,
44        "terminator": null,
45        "term_kind": null,
46        "tag": null
47      }
48    ]}
49\l}"];
50
51// CHECK-NEXT: <b>Program point:</b>
52// CHECK-SAME: <table border="0" align="left" width="0">
53// CHECK-SAME:   <tr>
54// CHECK-SAME:     <td align="left" width="0">
55// CHECK-SAME:       main.cpp:<b>4</b>:<b>5</b>:
56// CHECK-SAME:     </td>
57// CHECK-SAME:     <td align="left" width="0">
58// CHECK-SAME:       <font color="cyan4">DeclRefExpr</font>
59// CHECK-SAME:     </td>
60// CHECK-SAME:     <td align="left"><i>S3</i></td>
61// CHECK-SAME:     <td align="left">
62// CHECK-SAME:       <font color="cyan3">PreStmt</font>
63// CHECK-SAME:     </td>
64// CHECK-SAME:     <td align="left">x</td>
65// CHECK-SAME:   </tr>
66// CHECK-SAME:   <tr>
67// CHECK-SAME:     <td width="0">
68// CHECK-SAME:     </td>
69// CHECK-SAME:     <td colspan="3" align="left">
70// CHECK-SAME:       <b>Tag: </b>
71// CHECK-SAME:       <font color="crimson">ExprEngine : Clean Node</font>
72// CHECK-SAME:     </td>
73// CHECK-SAME:   </tr>
74// CHECK-SAME: </table>
75Node0x2 [shape=record,label=
76 "{
77    { "node_id": 2, "pointer": "0x2", "has_report": false, "is_sink": false,
78      "program_state": null, "program_points": [
79      {
80        "kind": "Statement",
81        "stmt_kind": "DeclRefExpr",
82        "stmt_point_kind": "PreStmt",
83        "stmt_id": 3,
84        "pointer": "0x3",
85        "pretty": "x",
86        "location": {
87          "file": "main.cpp",
88          "line": 4,
89          "column": 5
90        },
91        "tag": "ExprEngine : Clean Node"
92      }
93    ]}
94\l}"];
95
96// Test collapsing large pretty prints with braces.
97
98// CHECK-NEXT: <b>Program point:</b>
99// CHECK-SAME: <td align="left">\{ ... \}</td>
100Node0x3 [shape=record,label=
101 "{
102    { "node_id": 3, "pointer": "0x3", "has_report": false, "is_sink": false,
103      "program_state": null, "program_points": [
104      {
105        "kind": "Statement",
106        "stmt_kind": "CompoundStmt",
107        "stmt_point_kind": "PostStmt",
108        "stmt_id": 6,
109        "pointer": "0x6",
110        "pretty": "{ very very very very very very long pretty print }",
111        "location": {
112          "line": 7,
113          "column": 8
114        },
115        "tag": "ExprEngine : Clean Node"
116      }
117    ]}
118\l}"];
119