[svn r112] Fixed 'case 1,2,3:' style case statements.

Fixed a bunch of bugs with return/break/continue in loops.
Fixed support for the DMDFE hidden implicit return value variable. This can be needed for some foreach statements where the loop body is converted to a nested delegate, but also possibly returns from the function.
Added std.math to phobos.
Added AA runtime support code, done ground work for implementing AAs.
Several other bugfixes.
This commit is contained in:
Tomas Lindquist Olsen
2007-11-20 05:29:20 +01:00
parent adab52fad9
commit a807cbfc91
27 changed files with 8677 additions and 59 deletions
+6
View File
@@ -0,0 +1,6 @@
module aa1;
void main()
{
int[int] aai;
}
+9
View File
@@ -0,0 +1,9 @@
module bug70;
void main()
{
for (;false;)
{
break;
}
}
+20
View File
@@ -0,0 +1,20 @@
module bug71;
void main()
{
static TypeInfo skipCI(TypeInfo valti)
{
while (1)
{
if (valti.classinfo.name.length == 18 &&
valti.classinfo.name[9..18] == "Invariant")
valti = (cast(TypeInfo_Invariant)valti).next;
else if (valti.classinfo.name.length == 14 &&
valti.classinfo.name[9..14] == "Const")
valti = (cast(TypeInfo_Const)valti).next;
else
break;
}
return valti;
}
}
+8
View File
@@ -0,0 +1,8 @@
module bug72;
void main()
{
char c = void;
int i = void;
c += i;
}
+14
View File
@@ -0,0 +1,14 @@
int find(char[] s, dchar c)
{
// c is a universal character
foreach (int i, dchar c2; s)
{
if (c == c2)
return i;
}
return -1;
}
void main()
{
}
+12
View File
@@ -0,0 +1,12 @@
module switch2;
void main()
{
int i = 2;
switch(i)
{
case 0: assert(0);
case 1,2: printf("hello world\n"); break;
default: assert(0);
}
}