@@ -244,17 +244,17 @@ static bool fillRanges(MemoryBuffer *Code,
244
244
DiagnosticsEngine Diagnostics (
245
245
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs), DiagOpts);
246
246
SourceManager Sources (Diagnostics, Files);
247
- FileID ID = createInMemoryFile (" <irrelevant>" , *Code, Sources, Files,
248
- InMemoryFileSystem.get ());
247
+ const auto ID = createInMemoryFile (" <irrelevant>" , *Code, Sources, Files,
248
+ InMemoryFileSystem.get ());
249
249
if (!LineRanges.empty ()) {
250
250
if (!Offsets.empty () || !Lengths.empty ()) {
251
251
errs () << " error: cannot use -lines with -offset/-length\n " ;
252
252
return true ;
253
253
}
254
254
255
- for (unsigned i = 0 , e = LineRanges. size (); i < e; ++i ) {
255
+ for (const auto &LineRange : LineRanges) {
256
256
unsigned FromLine, ToLine;
257
- if (parseLineRange (LineRanges[i] , FromLine, ToLine)) {
257
+ if (parseLineRange (LineRange , FromLine, ToLine)) {
258
258
errs () << " error: invalid <start line>:<end line> pair\n " ;
259
259
return true ;
260
260
}
@@ -266,45 +266,38 @@ static bool fillRanges(MemoryBuffer *Code,
266
266
errs () << " error: start line should not exceed end line\n " ;
267
267
return true ;
268
268
}
269
- SourceLocation Start = Sources.translateLineCol (ID, FromLine, 1 );
270
- SourceLocation End = Sources.translateLineCol (ID, ToLine, UINT_MAX);
269
+ const auto Start = Sources.translateLineCol (ID, FromLine, 1 );
270
+ const auto End = Sources.translateLineCol (ID, ToLine, UINT_MAX);
271
271
if (Start.isInvalid () || End.isInvalid ())
272
272
return true ;
273
- unsigned Offset = Sources.getFileOffset (Start);
274
- unsigned Length = Sources.getFileOffset (End) - Offset;
273
+ const auto Offset = Sources.getFileOffset (Start);
274
+ const auto Length = Sources.getFileOffset (End) - Offset;
275
275
Ranges.push_back (tooling::Range (Offset, Length));
276
276
}
277
277
return false ;
278
278
}
279
279
280
280
if (Offsets.empty ())
281
281
Offsets.push_back (0 );
282
- if (Offsets.size () != Lengths.size () &&
283
- !(Offsets.size () == 1 && Lengths.empty ())) {
282
+ if (Offsets.size () == 1 && Lengths.empty ()) {
283
+ Lengths.push_back (Sources.getFileOffset (Sources.getLocForEndOfFile (ID)) -
284
+ Offsets[0 ]);
285
+ } else if (Offsets.size () != Lengths.size ()) {
284
286
errs () << " error: number of -offset and -length arguments must match.\n " ;
285
287
return true ;
286
288
}
287
- for (unsigned i = 0 , e = Offsets.size (); i != e; ++i) {
288
- if (Offsets[i] >= Code->getBufferSize ()) {
289
- errs () << " error: offset " << Offsets[i] << " is outside the file\n " ;
289
+ for (unsigned I = 0 , E = Offsets.size (); I < E; ++I) {
290
+ const auto Offset = Offsets[I];
291
+ if (Offset >= Code->getBufferSize ()) {
292
+ errs () << " error: offset " << Offset << " is outside the file\n " ;
290
293
return true ;
291
294
}
292
- SourceLocation Start =
293
- Sources.getLocForStartOfFile (ID).getLocWithOffset (Offsets[i]);
294
- SourceLocation End;
295
- if (i < Lengths.size ()) {
296
- if (Offsets[i] + Lengths[i] > Code->getBufferSize ()) {
297
- errs () << " error: invalid length " << Lengths[i]
298
- << " , offset + length (" << Offsets[i] + Lengths[i]
299
- << " ) is outside the file.\n " ;
300
- return true ;
301
- }
302
- End = Start.getLocWithOffset (Lengths[i]);
303
- } else {
304
- End = Sources.getLocForEndOfFile (ID);
295
+ const auto Length = Lengths[I];
296
+ if (Offset + Length > Code->getBufferSize ()) {
297
+ errs () << " error: invalid length " << Length << " , offset + length ("
298
+ << Offset + Length << " ) is outside the file.\n " ;
299
+ return true ;
305
300
}
306
- unsigned Offset = Sources.getFileOffset (Start);
307
- unsigned Length = Sources.getFileOffset (End) - Offset;
308
301
Ranges.push_back (tooling::Range (Offset, Length));
309
302
}
310
303
return false ;
0 commit comments