ObjFW  Check-in [a54fb211ea]

Overview
Comment:Fix more shadowed variables

Clang didn't complain about these, but GCC did.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | 0.90
Files: files | file ages | folders
SHA3-256: a54fb211ea7b8120a43bed5b7ca1d1ac157126df699919935b9ebde38435c973
User & Date: js on 2017-10-14 18:53:02
Other Links: branch diff | manifest | tags
Context
2017-10-15
22:51
Rename __GCC_VERSION__ to OF_GCC_VERSION check-in: d6fa7f9bf6 user: js tags: 0.90
2017-10-14
18:53
Fix more shadowed variables check-in: a54fb211ea user: js tags: 0.90
2017-10-11
20:59
Fix shadowed variables and enable -Wshadow check-in: 836314f39a user: js tags: 0.90
Changes

Modified tests/OFDictionaryTests.m from [f2dd61fdb9] to [ed8d42f32f].

78
79
80
81
82
83
84
85

86
87
88
89
90
91
92
93

94
95
96
97
98
99
100
78
79
80
81
82
83
84

85
86
87
88
89
90
91
92

93
94
95
96
97
98
99
100







-
+







-
+







		@throw e;
	}

	return self;
}

- initWithObjects: (const id *)objects
	  forKeys: (const id *)keys
	  forKeys: (const id *)keys_
	    count: (size_t)count
{
	self = [super init];

	@try {
		_dictionary = [[OFMutableDictionary alloc]
		    initWithObjects: objects
			    forKeys: keys
			    forKeys: keys_
			      count: count];
	} @catch (id e) {
		[self release];
		@throw e;
	}

	return self;

Modified tests/OFXMLParserTests.m from [278894d6bc] to [69fc2ecfb9].

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

46
47
48
49
50
51






52
53
54
55
56
57
58
59
60

61
62
63
64

65
66
67
68

69
70
71
72

73
74
75

76
77
78
79

80
81
82
83

84
85
86
87

88
89
90

91
92
93
94
95
96
97
98
99
100

101
102
103

104
105
106
107
108
109
110
111
112
113
114

115
116
117

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132

133
134
135

136
137
138
139
140
141
142
143
144
145
146
147
148
149

150
151
152
153

154
155
156

157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176

177
178
179
180
181

182
183
184

185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203

204
205
206
207

208
209
210

211
212
213
214
215

216
217
218

219
220
221

222
223
224

225
226
227
228

229
230
231

232
233
234
235

236
237
238

239
240
241
242
243
244
245
246

247
248
249
250
251
252






253
254
255
256
257
258
259
260

261
262
263
264
265
266






267
268
269
270
271
272
273

274
275
276
277
278
279






280
281
282
283
284

285
286
287
288
289
290






291
292
293
294
295

296
297
298
299
300
301






302
303
304
305
306

307
308
309
310
311
312






313
314
315
316
317
318
319
26
27
28
29
30
31
32

33
34
35
36
37
38
39
40
41
42
43
44
45






46
47
48
49
50
51
52
53
54
55
56
57
58
59

60
61
62
63

64
65
66
67

68
69
70
71

72
73
74

75
76
77
78

79
80
81
82

83
84
85
86

87
88
89

90
91
92
93
94
95
96
97
98
99

100
101
102

103
104
105
106
107
108
109
110
111
112
113

114
115
116

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

132
133
134

135
136
137
138
139
140
141
142
143
144
145
146
147
148

149
150
151
152

153
154
155

156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175

176
177
178
179
180

181
182
183

184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202

203
204
205
206

207
208
209

210
211
212
213
214

215
216
217

218
219
220

221
222
223

224
225
226
227

228
229
230

231
232
233
234

235
236
237

238
239
240
241
242
243
244
245
246
247






248
249
250
251
252
253
254
255
256
257
258
259
260
261
262






263
264
265
266
267
268
269
270
271
272
273
274
275
276






277
278
279
280
281
282
283
284
285
286
287
288






289
290
291
292
293
294
295
296
297
298
299
300






301
302
303
304
305
306
307
308
309
310
311
312






313
314
315
316
317
318
319
320
321
322
323
324
325







-












+
-
-
-
-
-
-
+
+
+
+
+
+








-
+



-
+



-
+



-
+


-
+



-
+



-
+



-
+


-
+









-
+


-
+










-
+


-
+














-
+


-
+













-
+



-
+


-
+



















-
+




-
+


-
+


















-
+



-
+


-
+




-
+


-
+


-
+


-
+



-
+


-
+



-
+


-
+








+
-
-
-
-
-
-
+
+
+
+
+
+








+
-
-
-
-
-
-
+
+
+
+
+
+







+
-
-
-
-
-
-
+
+
+
+
+
+





+
-
-
-
-
-
-
+
+
+
+
+
+





+
-
-
-
-
-
-
+
+
+
+
+
+





+
-
-
-
-
-
-
+
+
+
+
+
+








#import "OFInvalidEncodingException.h"
#import "OFMalformedXMLException.h"

#import "TestsAppDelegate.h"

static OFString *module = @"OFXMLParser";
static OFXMLParser *parser;
static int i = 0;

enum event_type {
	PROCESSING_INSTRUCTIONS,
	TAG_START,
	TAG_END,
	STRING,
	CDATA,
	COMMENT
};

@implementation TestsAppDelegate (OFXMLParser)
-   (void)parser: (OFXMLParser *)parser
- (void)parserCallbackWithEventType: (enum event_type)et
			       name: (OFString *)name
			     prefix: (OFString *)prefix
			  namespace: (OFString *)ns
			 attributes: (OFArray *)attrs
			     string: (OFString *)string
  didCreateEvent: (enum event_type)type
	    name: (OFString *)name
	  prefix: (OFString *)prefix
       namespace: (OFString *)ns
      attributes: (OFArray *)attrs
	  string: (OFString *)string
{
	OFString *msg;

	i++;
	msg = [OFString stringWithFormat: @"Parsing part #%d", i];

	switch (i) {
	case 1:
		TEST(msg, et == PROCESSING_INSTRUCTIONS &&
		TEST(msg, type == PROCESSING_INSTRUCTIONS &&
		    [string isEqual: @"xml version='1.0'"])
		break;
	case 2:
		TEST(msg, et == PROCESSING_INSTRUCTIONS &&
		TEST(msg, type == PROCESSING_INSTRUCTIONS &&
		    [string isEqual: @"p?i"])
		break;
	case 3:
		TEST(msg, et == TAG_START && [name isEqual: @"root"] &&
		TEST(msg, type == TAG_START && [name isEqual: @"root"] &&
		    prefix == nil && ns == nil && [attrs count] == 0)
		break;
	case 4:
		TEST(msg, et == STRING && [string isEqual: @"\n\n "])
		TEST(msg, type == STRING && [string isEqual: @"\n\n "])
		break;
	case 5:
		TEST(msg, et == CDATA && [string isEqual: @"f<]]]oo]"] &&
		TEST(msg, type == CDATA && [string isEqual: @"f<]]]oo]"] &&
		    [parser lineNumber] == 3)
		break;
	case 6:
		TEST(msg, et == TAG_START && [name isEqual: @"bar"] &&
		TEST(msg, type == TAG_START && [name isEqual: @"bar"] &&
		    prefix == nil && ns == nil && attrs == nil)
		break;
	case 7:
		TEST(msg, et == TAG_END && [name isEqual: @"bar"] &&
		TEST(msg, type == TAG_END && [name isEqual: @"bar"] &&
		    prefix == nil && ns == nil && attrs == nil)
		break;
	case 8:
		TEST(msg, et == STRING && [string isEqual: @"\n "])
		TEST(msg, type == STRING && [string isEqual: @"\n "])
		break;
	case 9:
		TEST(msg, et == TAG_START && [name isEqual: @"foobar"] &&
		TEST(msg, type == TAG_START && [name isEqual: @"foobar"] &&
		    prefix == nil && [ns isEqual: @"urn:objfw:test:foobar"] &&
		    [attrs count] == 1 &&
		    /* xmlns attr */
		    [[[attrs objectAtIndex: 0] name] isEqual: @"xmlns"] &&
		    [[attrs objectAtIndex: 0] namespace] == nil &&
		    [[[attrs objectAtIndex: 0] stringValue] isEqual:
		    @"urn:objfw:test:foobar"])
		break;
	case 10:
		TEST(msg, et == STRING && [string isEqual: @"\n  "])
		TEST(msg, type == STRING && [string isEqual: @"\n  "])
		break;
	case 11:
		TEST(msg, et == TAG_START && [name isEqual: @"qux"] &&
		TEST(msg, type == TAG_START && [name isEqual: @"qux"] &&
		    prefix == nil && [ns isEqual: @"urn:objfw:test:foobar"] &&
		    [attrs count] == 1 &&
		    /* xmlns:foo attr */
		    [[[attrs objectAtIndex: 0] name] isEqual: @"foo"] &&
		    [[[attrs objectAtIndex: 0] namespace] isEqual:
		    @"http://www.w3.org/2000/xmlns/"] &&
		    [[[attrs objectAtIndex: 0] stringValue] isEqual:
		    @"urn:objfw:test:foo"])
		break;
	case 12:
		TEST(msg, et == STRING && [string isEqual: @"\n   "])
		TEST(msg, type == STRING && [string isEqual: @"\n   "])
		break;
	case 13:
		TEST(msg, et == TAG_START && [name isEqual: @"bla"] &&
		TEST(msg, type == TAG_START && [name isEqual: @"bla"] &&
		    [prefix isEqual: @"foo"] &&
		    [ns isEqual: @"urn:objfw:test:foo"] &&
		    [attrs count] == 2 &&
		    /* foo:bla attr */
		    [[[attrs objectAtIndex: 0] name] isEqual: @"bla"] &&
		    [[[attrs objectAtIndex: 0] namespace] isEqual:
		    @"urn:objfw:test:foo"] &&
		    [[[attrs objectAtIndex: 0] stringValue] isEqual: @"bla"] &&
		    /* blafoo attr */
		    [[[attrs objectAtIndex: 1] name] isEqual: @"blafoo"] &&
		    [[attrs objectAtIndex: 1] namespace] == nil &&
		    [[[attrs objectAtIndex: 1] stringValue] isEqual: @"foo"])
		break;
	case 14:
		TEST(msg, et == STRING && [string isEqual: @"\n    "])
		TEST(msg, type == STRING && [string isEqual: @"\n    "])
		break;
	case 15:
		TEST(msg, et == TAG_START && [name isEqual: @"blup"] &&
		TEST(msg, type == TAG_START && [name isEqual: @"blup"] &&
		    prefix == nil && [ns isEqual: @"urn:objfw:test:foobar"] &&
		    [attrs count] == 2 &&
		    /* foo:qux attr */
		    [[[attrs objectAtIndex: 0] name] isEqual: @"qux"] &&
		    [[[attrs objectAtIndex: 0] namespace] isEqual:
		    @"urn:objfw:test:foo"] &&
		    [[[attrs objectAtIndex: 0] stringValue] isEqual: @"asd"] &&
		    /* quxqux attr */
		    [[[attrs objectAtIndex: 1] name] isEqual: @"quxqux"] &&
		    [[attrs objectAtIndex: 1] namespace] == nil &&
		    [[[attrs objectAtIndex: 1] stringValue] isEqual: @"test"])
		break;
	case 16:
		TEST(msg, et == TAG_END && [name isEqual: @"blup"] &&
		TEST(msg, type == TAG_END && [name isEqual: @"blup"] &&
		    prefix == nil && [ns isEqual: @"urn:objfw:test:foobar"])
		break;
	case 17:
		TEST(msg, et == STRING && [string isEqual: @"\n    "])
		TEST(msg, type == STRING && [string isEqual: @"\n    "])
		break;
	case 18:
		TEST(msg, et == TAG_START && [name isEqual: @"bla"] &&
		TEST(msg, type == TAG_START && [name isEqual: @"bla"] &&
		    [prefix isEqual: @"bla"] &&
		    [ns isEqual: @"urn:objfw:test:bla"] && [attrs count] == 3 &&
		    /* xmlns:bla attr */
		    [[[attrs objectAtIndex: 0] name] isEqual: @"bla"] &&
		    [[[attrs objectAtIndex: 0] namespace] isEqual:
		    @"http://www.w3.org/2000/xmlns/"] &&
		    [[[attrs objectAtIndex: 0] stringValue] isEqual:
		    @"urn:objfw:test:bla"] &&
		    /* qux attr */
		    [[[attrs objectAtIndex: 1] name] isEqual: @"qux"] &&
		    [[attrs objectAtIndex: 1] namespace] == nil &&
		    [[[attrs objectAtIndex: 1] stringValue] isEqual: @"qux"] &&
		    /* bla:foo attr */
		    [[[attrs objectAtIndex: 2] name] isEqual: @"foo"] &&
		    [[[attrs objectAtIndex: 2] namespace] isEqual:
		    @"urn:objfw:test:bla"] &&
		    [[[attrs objectAtIndex: 2] stringValue] isEqual: @"blafoo"])
		break;
	case 19:
		TEST(msg, et == TAG_END && [name isEqual: @"bla"] &&
		TEST(msg, type == TAG_END && [name isEqual: @"bla"] &&
		    [prefix isEqual: @"bla"] &&
		    [ns isEqual: @"urn:objfw:test:bla"])
		break;
	case 20:
		TEST(msg, et == STRING && [string isEqual: @"\n    "])
		TEST(msg, type == STRING && [string isEqual: @"\n    "])
		break;
	case 21:
		TEST(msg, et == TAG_START && [name isEqual: @"abc"] &&
		TEST(msg, type == TAG_START && [name isEqual: @"abc"] &&
		    prefix == nil && [ns isEqual: @"urn:objfw:test:abc"] &&
		    [attrs count] == 3 &&
		    /* xmlns attr */
		    [[[attrs objectAtIndex: 0] name] isEqual: @"xmlns"] &&
		    [[attrs objectAtIndex: 0] namespace] == nil &&
		    [[[attrs objectAtIndex: 0] stringValue] isEqual:
		    @"urn:objfw:test:abc"] &&
		    /* abc attr */
		    [[[attrs objectAtIndex: 1] name] isEqual: @"abc"] &&
		    [[attrs objectAtIndex: 1] namespace] == nil &&
		    [[[attrs objectAtIndex: 1] stringValue] isEqual: @"abc"] &&
		    /* foo:abc attr */
		    [[[attrs objectAtIndex: 2] name] isEqual: @"abc"] &&
		    [[[attrs objectAtIndex: 2] namespace] isEqual:
		    @"urn:objfw:test:foo"] &&
		    [[[attrs objectAtIndex: 2] stringValue] isEqual: @"abc"])
		break;
	case 22:
		TEST(msg, et == TAG_END && [name isEqual: @"abc"] &&
		TEST(msg, type == TAG_END && [name isEqual: @"abc"] &&
		    prefix == nil && [ns isEqual: @"urn:objfw:test:abc"])
		break;
	case 23:
		TEST(msg, et == STRING && [string isEqual: @"\n   "])
		TEST(msg, type == STRING && [string isEqual: @"\n   "])
		break;
	case 24:
		TEST(msg, et == TAG_END && [name isEqual: @"bla"] &&
		TEST(msg, type == TAG_END && [name isEqual: @"bla"] &&
		    [prefix isEqual: @"foo"] &&
		    [ns isEqual: @"urn:objfw:test:foo"])
		break;
	case 25:
		TEST(msg, et == STRING && [string isEqual: @"\n   "])
		TEST(msg, type == STRING && [string isEqual: @"\n   "])
		break;
	case 26:
		TEST(msg, et == COMMENT && [string isEqual: @" commänt "])
		TEST(msg, type == COMMENT && [string isEqual: @" commänt "])
		break;
	case 27:
		TEST(msg, et == STRING && [string isEqual: @"\n  "])
		TEST(msg, type == STRING && [string isEqual: @"\n  "])
		break;
	case 28:
		TEST(msg, et == TAG_END && [name isEqual: @"qux"] &&
		TEST(msg, type == TAG_END && [name isEqual: @"qux"] &&
		    prefix == nil && [ns isEqual: @"urn:objfw:test:foobar"])
		break;
	case 29:
		TEST(msg, et == STRING && [string isEqual: @"\n "])
		TEST(msg, type == STRING && [string isEqual: @"\n "])
		break;
	case 30:
		TEST(msg, et == TAG_END && [name isEqual: @"foobar"] &&
		TEST(msg, type == TAG_END && [name isEqual: @"foobar"] &&
		    prefix == nil && [ns isEqual: @"urn:objfw:test:foobar"])
		break;
	case 31:
		TEST(msg, et == STRING && [string isEqual: @"\n"])
		TEST(msg, type == STRING && [string isEqual: @"\n"])
		break;
	case 32:
		TEST(msg, et == TAG_END && [name isEqual: @"root"] &&
		TEST(msg, type == TAG_END && [name isEqual: @"root"] &&
		    prefix == nil && ns == nil);
		break;
	}
}

-		 (void)parser: (OFXMLParser *)parser
  foundProcessingInstructions: (OFString *)pi
{
	[self	    parser: parser
	[self parserCallbackWithEventType: PROCESSING_INSTRUCTIONS
				     name: nil
				   prefix: nil
				namespace: nil
			       attributes: nil
				   string: pi];
	    didCreateEvent: PROCESSING_INSTRUCTIONS
		      name: nil
		    prefix: nil
		 namespace: nil
		attributes: nil
		    string: pi];
}

-    (void)parser: (OFXMLParser *)parser
  didStartElement: (OFString *)name
	   prefix: (OFString *)prefix
	namespace: (OFString *)ns
       attributes: (OFArray *)attrs
{
	[self	    parser: parser
	[self parserCallbackWithEventType: TAG_START
				     name: name
				   prefix: prefix
				namespace: ns
			       attributes: attrs
				   string: nil];
	    didCreateEvent: TAG_START
		      name: name
		    prefix: prefix
		 namespace: ns
		attributes: attrs
		    string: nil];
}

-  (void)parser: (OFXMLParser *)parser
  didEndElement: (OFString *)name
	 prefix: (OFString *)prefix
      namespace: (OFString *)ns
{
	[self	    parser: parser
	[self parserCallbackWithEventType: TAG_END
				     name: name
				   prefix: prefix
				namespace: ns
			       attributes: nil
				   string: nil];
	    didCreateEvent: TAG_END
		      name: name
		    prefix: prefix
		 namespace: ns
		attributes: nil
		    string: nil];
}

-    (void)parser: (OFXMLParser *)parser
  foundCharacters: (OFString *)string
{
	[self	    parser: parser
	[self parserCallbackWithEventType: STRING
				     name: nil
				   prefix: nil
				namespace: nil
			       attributes: nil
				   string: string];
	    didCreateEvent: STRING
		      name: nil
		    prefix: nil
		 namespace: nil
		attributes: nil
		    string: string];
}

- (void)parser: (OFXMLParser *)parser
    foundCDATA: (OFString *)cdata
{
	[self	    parser: parser
	[self parserCallbackWithEventType: CDATA
				     name: nil
				   prefix: nil
				namespace: nil
			       attributes: nil
				   string: cdata];
	    didCreateEvent: CDATA
		      name: nil
		    prefix: nil
		 namespace: nil
		attributes: nil
		    string: cdata];
}

- (void)parser: (OFXMLParser *)parser
  foundComment: (OFString *)comment
{
	[self	    parser: parser
	[self parserCallbackWithEventType: COMMENT
				     name: nil
				   prefix: nil
				namespace: nil
			       attributes: nil
				   string: comment];
	    didCreateEvent: COMMENT
		      name: nil
		    prefix: nil
		 namespace: nil
		attributes: nil
		    string: comment];
}

-      (OFString *)parser: (OFXMLParser *)parser
  foundUnknownEntityNamed: (OFString *)entity
{
	if ([entity isEqual: @"foo"])
		return @"foobar";
335
336
337
338
339
340
341

342
343
344
345
346
347
348
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355







+







	    "     bla:foo='blafoo'/>\n"
	    "    <abc xmlns='urn:objfw:test:abc' abc='abc' foo:abc='abc'/>\n"
	    "   </foo:bla>\n"
	    "   <!-- commänt -->\n"
	    "  </qux>\n"
	    " </foobar>\n"
	    "</root>";
	OFXMLParser *parser;
	size_t j, len;

	TEST(@"+[parser]", (parser = [OFXMLParser parser]))

	TEST(@"-[setDelegate:]", R([parser setDelegate: self]))

	/* Simulate a stream where we only get chunks */