comparison dmd/ArrayInitializer.d @ 191:52188e7e3fb5

Fixed deprecated features, now compiles with DMD2.058 Also changed Array allocation policy: Now doesn't reallocate but malloc's, followed by a memcpy (no free). (this fixes a crash while compiling druntime. Same bug in dmd)
author korDen@korDen-pc
date Sun, 25 Mar 2012 03:11:12 +0400
parents b0d41ff5e0df
children
comparison
equal deleted inserted replaced
190:80660782bffe 191:52188e7e3fb5
326 Type tb = type.toBasetype(); 326 Type tb = type.toBasetype();
327 Type tn = tb.nextOf().toBasetype(); 327 Type tn = tb.nextOf().toBasetype();
328 328
329 scope dts = new Vector!(dt_t*)(); 329 scope dts = new Vector!(dt_t*)();
330 uint size; 330 uint size;
331 uint length; 331 uint length_;
332 uint i; 332 uint i;
333 dt_t* dt; 333 dt_t* dt;
334 dt_t* d; 334 dt_t* d;
335 dt_t** pdtend; 335 dt_t** pdtend;
336 336
338 dts.setDim(dim); 338 dts.setDim(dim);
339 dts.zero(); 339 dts.zero();
340 340
341 size = cast(uint)tn.size(); 341 size = cast(uint)tn.size();
342 342
343 length = 0; 343 length_ = 0;
344 for (i = 0; i < index.dim; i++) 344 for (i = 0; i < index.dim; i++)
345 { 345 {
346 Expression idx; 346 Expression idx;
347 Initializer val; 347 Initializer val;
348 348
349 idx = index[i]; 349 idx = index[i];
350 if (idx) 350 if (idx)
351 length = cast(uint)idx.toInteger(); 351 length_ = cast(uint)idx.toInteger();
352 //printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim); 352 //printf("\tindex[%d] = %p, length_ = %u, dim = %u\n", i, idx, length_, dim);
353 353
354 assert(length < dim); 354 assert(length_ < dim);
355 val = value[i]; 355 val = value[i];
356 dt = val.toDt(); 356 dt = val.toDt();
357 if (dts[length]) 357 if (dts[length_])
358 error(loc, "duplicate initializations for index %d", length); 358 error(loc, "duplicate initializations for index %d", length_);
359 dts[length] = dt; 359 dts[length_] = dt;
360 length++; 360 length_++;
361 } 361 }
362 362
363 Expression edefault = tb.nextOf().defaultInit(Loc(0)); 363 Expression edefault = tb.nextOf().defaultInit(Loc(0));
364 364
365 uint n = 1; 365 uint n = 1;