Mercurial > projects > ldc
comparison dmd/constfold.c @ 658:50383e476c7e
Upgraded frontend to DMD 1.035
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Mon, 06 Oct 2008 16:22:11 +0200 |
parents | 29dc68c949b0 |
children | a26b0c5d5942 |
comparison
equal
deleted
inserted
replaced
657:c42173b3557b | 658:50383e476c7e |
---|---|
704 } | 704 } |
705 else if (e1->op == TOKstring && e2->op == TOKstring) | 705 else if (e1->op == TOKstring && e2->op == TOKstring) |
706 { StringExp *es1 = (StringExp *)e1; | 706 { StringExp *es1 = (StringExp *)e1; |
707 StringExp *es2 = (StringExp *)e2; | 707 StringExp *es2 = (StringExp *)e2; |
708 | 708 |
709 assert(es1->sz == es2->sz); | 709 if (es1->sz != es2->sz) |
710 { | |
711 assert(global.errors); | |
712 return EXP_CANT_INTERPRET; | |
713 } | |
710 if (es1->len == es2->len && | 714 if (es1->len == es2->len && |
711 memcmp(es1->string, es2->string, es1->sz * es1->len) == 0) | 715 memcmp(es1->string, es2->string, es1->sz * es1->len) == 0) |
712 cmp = 1; | 716 cmp = 1; |
713 else | 717 else |
714 cmp = 0; | 718 cmp = 0; |
1342 StringExp *es; | 1346 StringExp *es; |
1343 Type *t; | 1347 Type *t; |
1344 size_t len = es1->len + es2->len; | 1348 size_t len = es1->len + es2->len; |
1345 int sz = es1->sz; | 1349 int sz = es1->sz; |
1346 | 1350 |
1347 assert(sz == es2->sz); | 1351 if (sz != es2->sz) |
1352 { | |
1353 /* Can happen with: | |
1354 * auto s = "foo"d ~ "bar"c; | |
1355 */ | |
1356 assert(global.errors); | |
1357 return e; | |
1358 } | |
1348 s = mem.malloc((len + 1) * sz); | 1359 s = mem.malloc((len + 1) * sz); |
1349 memcpy(s, es1->string, es1->len * sz); | 1360 memcpy(s, es1->string, es1->len * sz); |
1350 memcpy((unsigned char *)s + es1->len * sz, es2->string, es2->len * sz); | 1361 memcpy((unsigned char *)s + es1->len * sz, es2->string, es2->len * sz); |
1351 | 1362 |
1352 // Add terminating 0 | 1363 // Add terminating 0 |