Mercurial > projects > ldc
diff gen/structs.cpp @ 656:a15ccbf7451d
Support structs that are merely a forward reference. See mini/forwdecl1.d
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Mon, 06 Oct 2008 14:06:55 +0200 |
parents | 26fce59fe80a |
children | 5a2983f97498 |
line wrap: on
line diff
--- a/gen/structs.cpp Mon Oct 06 12:46:57 2008 +0200 +++ b/gen/structs.cpp Mon Oct 06 14:06:55 2008 +0200 @@ -131,10 +131,16 @@ Logger::println("DtoResolveStruct(%s): %s", sd->toChars(), sd->loc.toChars()); LOG_SCOPE; - if (sd->prot() == PROTprivate && sd->getModule() != gIR->dmodule) - Logger::println("using a private struct from outside its module"); + TypeStruct* ts = (TypeStruct*)sd->type->toBasetype(); - TypeStruct* ts = (TypeStruct*)sd->type->toBasetype(); + // this struct is a forward declaration + // didn't even know had those ... + if (sd->sizeok != 1) + { + sd->ir.irStruct = new IrStruct(ts); + ts->ir.type = new llvm::PATypeHolder(llvm::OpaqueType::get()); + return; + } bool ispacked = (ts->alignsize() == 1);