blob: b096d944b3b8798a32493c2afa2473855a455480 [file] [log] [blame]
Anna Zaks0344e542012-06-04 21:03:31 +00001// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist -o %t %s
2// RUN: FileCheck --input-file %t %s
3
4#include "undef-value-callee.h"
5
6// This code used to cause a crash since we were not adding fileID of the header to the plist diagnostic.
Anna Zaks80de4872012-08-29 21:22:37 +00007
Anna Zaks0344e542012-06-04 21:03:31 +00008int test_calling_unimportant_callee(int argc, char *argv[]) {
9 int x;
10 callee();
11 return x; // expected-warning {{Undefined or garbage value returned to caller}}
12}
Ted Kremenek7453a722012-06-05 22:00:52 +000013
Anna Zaks80de4872012-08-29 21:22:37 +000014//CHECK: <dict>
15//CHECK: <key>files</key>
16//CHECK: <array>
17//CHECK: </array>
18//CHECK: <key>diagnostics</key>
19//CHECK: <array>
20//CHECK: <dict>
21//CHECK: <key>path</key>
22//CHECK: <array>
23//CHECK: <dict>
24//CHECK: <key>kind</key><string>event</string>
25//CHECK: <key>location</key>
26//CHECK: <dict>
27//CHECK: <key>line</key><integer>9</integer>
28//CHECK: <key>col</key><integer>3</integer>
29//CHECK: <key>file</key><integer>0</integer>
30//CHECK: </dict>
31//CHECK: <key>ranges</key>
32//CHECK: <array>
33//CHECK: <array>
34//CHECK: <dict>
35//CHECK: <key>line</key><integer>9</integer>
36//CHECK: <key>col</key><integer>3</integer>
37//CHECK: <key>file</key><integer>0</integer>
38//CHECK: </dict>
39//CHECK: <dict>
40//CHECK: <key>line</key><integer>9</integer>
41//CHECK: <key>col</key><integer>7</integer>
42//CHECK: <key>file</key><integer>0</integer>
43//CHECK: </dict>
44//CHECK: </array>
45//CHECK: </array>
46//CHECK: <key>depth</key><integer>0</integer>
47//CHECK: <key>extended_message</key>
48//CHECK: <string>Variable &apos;x&apos; declared without an initial value</string>
49//CHECK: <key>message</key>
50//CHECK: <string>Variable &apos;x&apos; declared without an initial value</string>
51//CHECK: </dict>
52//CHECK: <dict>
53//CHECK: <key>kind</key><string>control</string>
54//CHECK: <key>edges</key>
55//CHECK: <array>
56//CHECK: <dict>
57//CHECK: <key>start</key>
58//CHECK: <array>
59//CHECK: <dict>
60//CHECK: <key>line</key><integer>9</integer>
61//CHECK: <key>col</key><integer>3</integer>
62//CHECK: <key>file</key><integer>0</integer>
63//CHECK: </dict>
64//CHECK: <dict>
65//CHECK: <key>line</key><integer>9</integer>
66//CHECK: <key>col</key><integer>5</integer>
67//CHECK: <key>file</key><integer>0</integer>
68//CHECK: </dict>
69//CHECK: </array>
70//CHECK: <key>end</key>
71//CHECK: <array>
72//CHECK: <dict>
73//CHECK: <key>line</key><integer>10</integer>
74//CHECK: <key>col</key><integer>3</integer>
75//CHECK: <key>file</key><integer>0</integer>
76//CHECK: </dict>
77//CHECK: <dict>
78//CHECK: <key>line</key><integer>10</integer>
79//CHECK: <key>col</key><integer>8</integer>
80//CHECK: <key>file</key><integer>0</integer>
81//CHECK: </dict>
82//CHECK: </array>
83//CHECK: </dict>
84//CHECK: </array>
85//CHECK: </dict>
86//CHECK: <dict>
87//CHECK: <key>kind</key><string>control</string>
88//CHECK: <key>edges</key>
89//CHECK: <array>
90//CHECK: <dict>
91//CHECK: <key>start</key>
92//CHECK: <array>
93//CHECK: <dict>
94//CHECK: <key>line</key><integer>10</integer>
95//CHECK: <key>col</key><integer>3</integer>
96//CHECK: <key>file</key><integer>0</integer>
97//CHECK: </dict>
98//CHECK: <dict>
99//CHECK: <key>line</key><integer>10</integer>
100//CHECK: <key>col</key><integer>8</integer>
101//CHECK: <key>file</key><integer>0</integer>
102//CHECK: </dict>
103//CHECK: </array>
104//CHECK: <key>end</key>
105//CHECK: <array>
106//CHECK: <dict>
107//CHECK: <key>line</key><integer>11</integer>
108//CHECK: <key>col</key><integer>3</integer>
109//CHECK: <key>file</key><integer>0</integer>
110//CHECK: </dict>
111//CHECK: <dict>
112//CHECK: <key>line</key><integer>11</integer>
113//CHECK: <key>col</key><integer>8</integer>
114//CHECK: <key>file</key><integer>0</integer>
115//CHECK: </dict>
116//CHECK: </array>
117//CHECK: </dict>
118//CHECK: </array>
119//CHECK: </dict>
120//CHECK: <dict>
121//CHECK: <key>kind</key><string>event</string>
122//CHECK: <key>location</key>
123//CHECK: <dict>
124//CHECK: <key>line</key><integer>11</integer>
125//CHECK: <key>col</key><integer>3</integer>
126//CHECK: <key>file</key><integer>0</integer>
127//CHECK: </dict>
128//CHECK: <key>ranges</key>
129//CHECK: <array>
130//CHECK: <array>
131//CHECK: <dict>
132//CHECK: <key>line</key><integer>11</integer>
133//CHECK: <key>col</key><integer>10</integer>
134//CHECK: <key>file</key><integer>0</integer>
135//CHECK: </dict>
136//CHECK: <dict>
137//CHECK: <key>line</key><integer>11</integer>
138//CHECK: <key>col</key><integer>10</integer>
139//CHECK: <key>file</key><integer>0</integer>
140//CHECK: </dict>
141//CHECK: </array>
142//CHECK: </array>
143//CHECK: <key>depth</key><integer>0</integer>
144//CHECK: <key>extended_message</key>
145//CHECK: <string>Undefined or garbage value returned to caller</string>
146//CHECK: <key>message</key>
147//CHECK: <string>Undefined or garbage value returned to caller</string>
148//CHECK: </dict>
149//CHECK: </array>
150//CHECK: <key>description</key><string>Undefined or garbage value returned to caller</string>
151//CHECK: <key>category</key><string>Logic error</string>
152//CHECK: <key>type</key><string>Garbage return value</string>
153//CHECK: <key>issue_context_kind</key><string>function</string>
154//CHECK: <key>issue_context</key><string>test_calling_unimportant_callee</string>
Anna Zaksc1c6a492013-01-08 00:25:22 +0000155//CHECK: <key>issue_hash</key><string>3</string>
Anna Zaks80de4872012-08-29 21:22:37 +0000156//CHECK: <key>location</key>
157//CHECK: <dict>
158//CHECK: <key>line</key><integer>11</integer>
159//CHECK: <key>col</key><integer>3</integer>
160//CHECK: <key>file</key><integer>0</integer>
161//CHECK: </dict>
162//CHECK: </dict>
163//CHECK: </array>
164//CHECK: </dict>
165//CHECK: </plist>