Fixed a few mini tests issues.

Added 'darwin' and 'Posix' as versions user can't set.
Fixed #80 .
This commit is contained in:
Tomas Lindquist Olsen
2008-09-11 21:10:15 +02:00
parent d474fa027a
commit bba1994b05
8 changed files with 60 additions and 7 deletions

View File

@@ -130,7 +130,7 @@ void VersionCondition::checkPredefined(Loc loc, char *ident)
"DigitalMars", "LLVM", "LLVMDC", "LLVM64",
"X86", "X86_64", "PPC", "PPC64",
"Windows", "Win32", "Win64",
"linux",
"linux", "darwin", "Posix",
"LittleEndian", "BigEndian",
"all",
"none",

View File

@@ -2156,12 +2156,20 @@ DValue* ArrayLiteralExp::toElem(IRState* p)
Logger::cout() << (dyn?"dynamic":"static") << " array literal with length " << len << " of D type: '" << arrayType->toChars() << "' has llvm type: '" << *llType << "'\n";
// llvm storage type
const LLType* llStoType = LLArrayType::get(DtoType(elemType), len);
const LLType* llElemType = DtoTypeNotVoid(elemType);
const LLType* llStoType = LLArrayType::get(llElemType, len);
Logger::cout() << "llvm storage type: '" << *llStoType << "'\n";
// don't allocate storage for zero length dynamic array literals
if (dyn && len == 0)
{
// dmd seems to just make them null...
return new DSliceValue(type, DtoConstSize_t(0), getNullPtr(getPtrToType(llElemType)));
}
// dst pointer
LLValue* dstMem = 0;
dstMem = DtoAlloca(llStoType, "arrayliteral");
// FIXME: dynamic array literals should be allocated with the GC
LLValue* dstMem = DtoAlloca(llStoType, "arrayliteral");
// store elements
for (size_t i=0; i<len; ++i)

View File

@@ -1,4 +1,4 @@
module tangotests.arrays2;
module mini.arrays16;
void main()
{

View File

@@ -1,4 +1,4 @@
module tangotests.arrays3;
module mini.arrays17;
void main()
{

View File

@@ -1,4 +1,4 @@
module tangotests.arrays4;
module mini.arrays18;
struct Str { int a,b; }
void main() {

9
tests/mini/arrays19.d Normal file
View File

@@ -0,0 +1,9 @@
module mini.arrays19;
extern(C) int printf(char*, ...);
void main()
{
bool var = ([] is null);
assert(var);
}

23
tests/mini/arrays20.d Normal file
View File

@@ -0,0 +1,23 @@
module mini.arrays20;
int[] foo()
{
return [2,4,6];
}
int[] bar()
{
return [1,3,5];
}
void main()
{
auto a = foo();
auto b = bar();
assert(b[0] == 1);
assert(a[0] == 2);
assert(b[1] == 3);
assert(a[1] == 4);
assert(b[2] == 5);
assert(a[2] == 6);
}

13
tests/mini/complex5.d Normal file
View File

@@ -0,0 +1,13 @@
module complex5;
void main()
{
cfloat c = 3+2i;
foo(c);
}
void foo(cfloat c)
{
assert(c.re > 2.9999 && c.re < 3.0001);
assert(c.im > 1.9999i && c.im < 2.0001);
}