Wiki Roadmap Timeline Tickets New Ticket Source Search Help / Guide About Trac Login

Changeset 656:a15ccbf7451d

Show
Ignore:
Timestamp:
10/06/08 08:06:55 (3 months ago)
Author:
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
branch:
default
Message:

Support structs that are merely a forward reference. See mini/forwdecl1.d

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gen/structs.cpp

    r622 r656  
    132132    LOG_SCOPE; 
    133133 
    134     if (sd->prot() == PROTprivate && sd->getModule() != gIR->dmodule) 
    135         Logger::println("using a private struct from outside its module"); 
    136  
    137134    TypeStruct* ts = (TypeStruct*)sd->type->toBasetype(); 
     135 
     136    // this struct is a forward declaration 
     137    // didn't even know had those ... 
     138    if (sd->sizeok != 1) 
     139    { 
     140        sd->ir.irStruct = new IrStruct(ts); 
     141        ts->ir.type = new llvm::PATypeHolder(llvm::OpaqueType::get()); 
     142        return; 
     143    } 
    138144 
    139145    bool ispacked = (ts->alignsize() == 1); 
  • gen/toir.cpp

    r643 r656  
    130130                vd->toObjFile(0); // TODO: multiobj 
    131131            } 
    132             if (!vd->ir.isSet() || !vd->ir.getIrValue() || DtoType(vd->type)->isAbstract()) { 
    133                 error("global variable %s not resolved", vd->toChars()); 
     132            if (!vd->ir.isSet() || !vd->ir.getIrValue()) { 
     133                error("variable %s not resolved", vd->toChars()); 
    134134                if (Logger::enabled()) 
    135                     Logger::cout() << "unresolved global had type: " << *DtoType(vd->type) << '\n'; 
     135                    Logger::cout() << "unresolved variable had type: " << *DtoType(vd->type) << '\n'; 
    136136                fatal(); 
    137137            } 
Copyright © 2008, LDC Development Team.