• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // 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.
7 
test_calling_unimportant_callee(int argc,char * argv[])8 int 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 }
13 
14 //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>
155 //CHECK:   <key>issue_hash</key><integer>3</integer>
156 //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>
166