Mercurial > projects > ldc
comparison gen/structs.cpp @ 725:3e143b611c1e
Fix double field toObjFile for structs with AttribDecls.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sat, 25 Oct 2008 22:07:20 +0200 |
parents | 5a2983f97498 |
children | 041c1596d217 |
comparison
equal
deleted
inserted
replaced
724:6de2ed4f0abe | 725:3e143b611c1e |
---|---|
106 sd->ir.irStruct = irstruct; | 106 sd->ir.irStruct = irstruct; |
107 gIR->structs.push_back(irstruct); | 107 gIR->structs.push_back(irstruct); |
108 | 108 |
109 irstruct->packed = ispacked; | 109 irstruct->packed = ispacked; |
110 | 110 |
111 // fields | |
112 Array* arr = &sd->fields; | |
113 for (int k=0; k < arr->dim; k++) { | |
114 VarDeclaration* v = (VarDeclaration*)arr->data[k]; | |
115 v->toObjFile(0); // TODO: multiobj | |
116 } | |
117 | |
118 bool thisModule = false; | 111 bool thisModule = false; |
119 if (sd->getModule() == gIR->dmodule) | 112 if (sd->getModule() == gIR->dmodule) |
120 thisModule = true; | 113 thisModule = true; |
121 | 114 |
122 // methods | 115 // methods, fields |
123 arr = sd->members; | 116 Array* arr = sd->members; |
124 for (int k=0; k < arr->dim; k++) { | 117 for (int k=0; k < arr->dim; k++) { |
125 Dsymbol* s = (Dsymbol*)arr->data[k]; | 118 Dsymbol* s = (Dsymbol*)arr->data[k]; |
126 if (FuncDeclaration* fd = s->isFuncDeclaration()) { | 119 if (FuncDeclaration* fd = s->isFuncDeclaration()) { |
127 if (thisModule || (fd->prot() != PROTprivate)) { | 120 if (thisModule || (fd->prot() != PROTprivate)) { |
128 fd->toObjFile(0); // TODO: multiobj | 121 fd->toObjFile(0); // TODO: multiobj |
129 } | 122 } |
130 } | 123 } |
131 else if (s->isAttribDeclaration()) { | 124 else if (s->isAttribDeclaration() || |
125 s->isVarDeclaration() || | |
126 s->isTemplateMixin()) { | |
132 s->toObjFile(0); // TODO: multiobj | 127 s->toObjFile(0); // TODO: multiobj |
133 } | 128 } |
134 else { | 129 else { |
135 Logger::println("Ignoring dsymbol '%s' in this->members of kind '%s'", s->toPrettyChars(), s->kind()); | 130 Logger::println("Ignoring dsymbol '%s' in this->members of kind '%s'", s->toPrettyChars(), s->kind()); |
136 } | 131 } |