1// RUN: %exploded_graph_rewriter -d %s | FileCheck %s
2
3// No diffs on the first node, nothing to check.
4Node0x1 [shape=record,label=
5 "{
6    {
7      "state_id": 2,
8      "program_points": [
9        {
10          "kind": "BlockEntrance", "block_id": 1,
11          "terminator": null, "term_kind": null,
12          "tag": null, "node_id": 1,
13          "has_report": 0, "is_sink": 0
14        }
15      ],
16      "program_state": {
17        "store": null,
18        "constraints": null,
19        "dynamic_types": null,
20        "constructing_objects": null,
21        "checker_messages": null,
22        "environment": {
23          "pointer": "0x2",
24          "items": [
25            {
26              "location_context": "#0 Call",
27              "lctx_id": 3,
28              "calling": "foo",
29              "location": null,
30              "items": [
31                {
32                  "stmt_id": 5,
33                  "pretty": "bar()",
34                  "value": "Unknown"
35                }
36              ]
37            }
38          ]
39        }
40      }
41    }
42\l}"];
43
44Node0x1 -> Node0x6;
45
46// CHECK: Node0x6 [
47// CHECK-SAME: <tr>
48// CHECK-SAME:   <td><font color="red">-</font></td>
49// CHECK-SAME:   <td align="left"><i>S5</i></td>
50// CHECK-SAME:   <td align="left">bar()</td>
51// CHECK-SAME:   <td align="left">Unknown</td>
52// CHECK-SAME: </tr>
53// CHECK-SAME: <tr>
54// CHECK-SAME:   <td><font color="forestgreen">+</font></td>
55// CHECK-SAME:   <td align="left"><i>S9</i></td>
56// CHECK-SAME:   <td align="left">baz()</td>
57// CHECK-SAME:   <td align="left">Undefined</td>
58// CHECK-SAME: </tr>
59Node0x6 [shape=record,label=
60 "{
61    {
62      "state_id": 7,
63      "program_points": [
64        {
65          "kind": "BlockEntrance", "block_id": 1,
66          "terminator": null, "term_kind": null,
67          "tag": null, "node_id": 1,
68          "has_report": 0, "is_sink": 0
69        }
70      ],
71      "program_state": {
72        "store": null,
73        "constraints": null,
74        "dynamic_types": null,
75        "constructing_objects": null,
76        "checker_messages": null,
77        "environment": {
78          "pointer": "0x2",
79          "items": [
80            {
81              "location_context": "#0 Call",
82              "lctx_id": 3,
83              "calling": "foo",
84              "location": null,
85              "items": [
86                {
87                  "stmt_id": 9,
88                  "pretty": "baz()",
89                  "value": "Undefined"
90                }
91              ]
92            }
93          ]
94        }
95      }
96    }
97\l}"];
98
99Node0x6 -> Node0x9;
100// Make sure that the last node in the path is not diffed.
101// CHECK: Node0x9 [
102// CHECK-SAME: <tr>
103// CHECK-SAME:   <td></td>
104// CHECK-SAME:   <td align="left"><i>S9</i></td>
105// CHECK-SAME:   <td align="left">baz()</td>
106// CHECK-SAME:   <td align="left">Undefined</td>
107// CHECK-SAME: </tr>
108Node0x9 [shape=record,label=
109 "{
110    {
111      "state_id": 7,
112      "program_points": [
113        {
114          "kind": "BlockEntrance", "block_id": 1,
115          "terminator": null, "term_kind": null,
116          "tag": null, "node_id": 1,
117          "has_report": 0, "is_sink": 0
118        }
119      ],
120      "program_state": {
121        "store": null,
122        "constraints": null,
123        "dynamic_types": null,
124        "constructing_objects": null,
125        "checker_messages": null,
126        "environment": {
127          "pointer": "0x2",
128          "items": [
129            {
130              "location_context": "#0 Call",
131              "lctx_id": 3,
132              "calling": "foo",
133              "location": null,
134              "items": [
135                {
136                  "stmt_id": 9,
137                  "pretty": "baz()",
138                  "value": "Undefined"
139                }
140              ]
141            }
142          ]
143        }
144      }
145    }
146\l}"];
147