comparison dmd2/init.c @ 1577:e4f7b5d9c68a

DMD 2.032 Merge.
author Robert Clipsham <robert@octarineparrot.com>
date Tue, 08 Sep 2009 10:07:56 +0100
parents 54b3c1394d62
children
comparison
equal deleted inserted replaced
1576:4551475bc6b6 1577:e4f7b5d9c68a
410 edim = ((TypeSArray *)t)->dim->toInteger(); 410 edim = ((TypeSArray *)t)->dim->toInteger();
411 break; 411 break;
412 412
413 case Tpointer: 413 case Tpointer:
414 case Tarray: 414 case Tarray:
415 edim = dim; 415 edim = dim;
416 break; 416 break;
417 417
418 default: 418 default:
419 assert(0); 419 assert(0);
420 } 420 }
421 } 421 }
422 else 422 else
423 {
423 edim = value.dim; 424 edim = value.dim;
425 for (size_t i = 0, j = 0; i < value.dim; i++, j++)
426 {
427 if (index.data[i])
428 j = ((Expression *)index.data[i])->toInteger();
429 if (j >= edim)
430 edim = j + 1;
431 }
432 }
424 433
425 elements = new Expressions(); 434 elements = new Expressions();
426 elements->setDim(edim); 435 elements->setDim(edim);
427 for (size_t i = 0, j = 0; i < value.dim; i++, j++) 436 for (size_t i = 0, j = 0; i < value.dim; i++, j++)
428 { 437 {
462 } 471 }
463 472
464 Lno: 473 Lno:
465 delete elements; 474 delete elements;
466 error(loc, "array initializers as expressions are not allowed"); 475 error(loc, "array initializers as expressions are not allowed");
467 return NULL; 476 return new ErrorExp();
468 } 477 }
469 478
470 479
471 /******************************** 480 /********************************
472 * If possible, convert array initializer to associative array initializer. 481 * If possible, convert array initializer to associative array initializer.