Changeset 262
- Timestamp:
- 11/22/09 09:28:03 (15 years ago)
- Files:
-
- branches/dmd-1.x/src/class.c (modified) (1 diff)
- branches/dmd-1.x/src/freebsd.mak (modified) (1 diff)
- branches/dmd-1.x/src/func.c (modified) (1 diff)
- branches/dmd-1.x/src/linux.mak (modified) (1 diff)
- branches/dmd-1.x/src/osx.mak (modified) (1 diff)
- branches/dmd-1.x/src/win32.mak (modified) (1 diff)
- trunk/src/class.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/dmd-1.x/src/class.c
r253 r262 1147 1147 } 1148 1148 } 1149 1149 i++; 1150 1150 } 1151 1151 1152 1152 interfaces_dim = baseclasses.dim; 1153 1153 interfaces = (BaseClass **)baseclasses.data; 1154 1154 1155 1155 interfaceSemantic(sc); 1156 1156 1157 1157 if (vtblOffset()) 1158 1158 vtbl.push(this); // leave room at vtbl[0] for classinfo 1159 1159 1160 1160 // Cat together the vtbl[]'s from base interfaces 1161 1161 for (i = 0; i < interfaces_dim; i++) 1162 1162 { BaseClass *b = interfaces[i]; 1163 1163 1164 1164 // Skip if b has already appeared 1165 1165 for (int k = 0; k < i; k++) 1166 1166 { 1167 if (b == interfaces[ i])1167 if (b == interfaces[k]) 1168 1168 goto Lcontinue; 1169 1169 } 1170 1170 1171 1171 // Copy vtbl[] from base class 1172 1172 if (b->base->vtblOffset()) 1173 1173 { int d = b->base->vtbl.dim; 1174 1174 if (d > 1) 1175 1175 { 1176 1176 vtbl.reserve(d - 1); 1177 1177 for (int j = 1; j < d; j++) 1178 1178 vtbl.push(b->base->vtbl.data[j]); 1179 1179 } 1180 1180 } 1181 1181 else 1182 1182 { 1183 1183 vtbl.append(&b->base->vtbl); 1184 1184 } 1185 1185 1186 1186 Lcontinue: 1187 1187 ; branches/dmd-1.x/src/freebsd.mak
r241 r262 201 201 202 202 cod2.o: $C/rtlsym.h $C/cod2.c 203 203 $(CC) -c $(MFLAGS) $C/cod2.c 204 204 205 205 cod3.o: $C/rtlsym.h $C/cod3.c 206 206 $(CC) -c $(MFLAGS) $C/cod3.c 207 207 208 208 cod4.o: $C/cod4.c 209 209 $(CC) -c $(MFLAGS) $< 210 210 211 211 cod5.o: $C/cod5.c 212 212 $(CC) -c $(MFLAGS) $< 213 213 214 214 code.o: $C/code.c 215 215 $(CC) -c $(MFLAGS) $< 216 216 217 217 constfold.o: constfold.c 218 218 $(CC) -c $(CFLAGS) $< 219 219 220 220 irstate.o: irstate.h irstate.c 221 $(CC) -c $(MFLAGS) irstate.c221 $(CC) -c $(MFLAGS) -I$(ROOT) irstate.c 222 222 223 223 csymbol.o : $C/symbol.c 224 224 $(CC) -c $(MFLAGS) $C/symbol.c -o csymbol.o 225 225 226 226 dchar.o: $(ROOT)/dchar.c 227 227 $(CC) -c $(GFLAGS) -I$(ROOT) $< 228 228 229 229 cond.o: cond.c 230 230 $(CC) -c $(CFLAGS) $< 231 231 232 232 cppmangle.o: cppmangle.c 233 233 $(CC) -c $(CFLAGS) $< 234 234 235 235 debug.o: $C/debug.c 236 236 $(CC) -c $(MFLAGS) -I. $< 237 237 238 238 declaration.o: declaration.c 239 239 $(CC) -c $(CFLAGS) $< 240 240 241 241 delegatize.o: delegatize.c branches/dmd-1.x/src/func.c
r253 r262 916 916 if (outId) 917 917 error("void functions have no result"); 918 918 } 919 919 else 920 920 { 921 921 if (!outId) 922 922 outId = Id::result; // provide a default 923 923 } 924 924 925 925 if (outId) 926 926 { // Declare result variable 927 927 VarDeclaration *v; 928 928 Loc loc = this->loc; 929 929 930 930 if (fensure) 931 931 loc = fensure->loc; 932 932 933 933 v = new VarDeclaration(loc, type->nextOf(), outId, NULL); 934 934 v->noauto = 1; 935 935 #if DMDV2 936 if (!isVirtual()) 937 v->storage_class |= STCconst; 936 938 if (f->isref) 937 939 { 938 940 v->storage_class |= STCref | STCforeach; 939 941 } 940 942 #endif 941 943 sc2->incontract--; 942 944 v->semantic(sc2); 943 945 sc2->incontract++; 944 946 if (!sc2->insert(v)) 945 947 error("out result %s is already defined", v->toChars()); 946 948 v->parent = this; 947 949 vresult = v; 948 950 949 951 // vresult gets initialized with the function return value 950 952 // in ReturnStatement::semantic() 951 953 } 952 954 953 955 // BUG: need to treat parameters as const 954 956 // BUG: need to disallow returns and throws 955 957 if (fensure) branches/dmd-1.x/src/linux.mak
r220 r262 201 201 202 202 cod2.o: $C/rtlsym.h $C/cod2.c 203 203 $(CC) -c $(MFLAGS) $C/cod2.c 204 204 205 205 cod3.o: $C/rtlsym.h $C/cod3.c 206 206 $(CC) -c $(MFLAGS) $C/cod3.c 207 207 208 208 cod4.o: $C/cod4.c 209 209 $(CC) -c $(MFLAGS) $< 210 210 211 211 cod5.o: $C/cod5.c 212 212 $(CC) -c $(MFLAGS) $< 213 213 214 214 code.o: $C/code.c 215 215 $(CC) -c $(MFLAGS) $< 216 216 217 217 constfold.o: constfold.c 218 218 $(CC) -c $(CFLAGS) $< 219 219 220 220 irstate.o: irstate.h irstate.c 221 $(CC) -c $(MFLAGS) irstate.c221 $(CC) -c $(MFLAGS) -I$(ROOT) irstate.c 222 222 223 223 csymbol.o : $C/symbol.c 224 224 $(CC) -c $(MFLAGS) $C/symbol.c -o csymbol.o 225 225 226 226 dchar.o: $(ROOT)/dchar.c 227 227 $(CC) -c $(GFLAGS) -I$(ROOT) $< 228 228 229 229 cond.o: cond.c 230 230 $(CC) -c $(CFLAGS) $< 231 231 232 232 cppmangle.o: cppmangle.c 233 233 $(CC) -c $(CFLAGS) $< 234 234 235 235 debug.o: $C/debug.c 236 236 $(CC) -c $(MFLAGS) -I. $< 237 237 238 238 declaration.o: declaration.c 239 239 $(CC) -c $(CFLAGS) $< 240 240 241 241 delegatize.o: delegatize.c branches/dmd-1.x/src/osx.mak
r247 r262 208 208 209 209 cod2.o: $C/rtlsym.h $C/cod2.c 210 210 $(CC) -c $(MFLAGS) $C/cod2.c 211 211 212 212 cod3.o: $C/rtlsym.h $C/cod3.c 213 213 $(CC) -c $(MFLAGS) $C/cod3.c 214 214 215 215 cod4.o: $C/cod4.c 216 216 $(CC) -c $(MFLAGS) $< 217 217 218 218 cod5.o: $C/cod5.c 219 219 $(CC) -c $(MFLAGS) $< 220 220 221 221 code.o: $C/code.c 222 222 $(CC) -c $(MFLAGS) $< 223 223 224 224 constfold.o: constfold.c 225 225 $(CC) -c $(CFLAGS) $< 226 226 227 227 irstate.o: irstate.h irstate.c 228 $(CC) -c $(MFLAGS) irstate.c228 $(CC) -c $(MFLAGS) -I$(ROOT) irstate.c 229 229 230 230 csymbol.o : $C/symbol.c 231 231 $(CC) -c $(MFLAGS) $C/symbol.c -o csymbol.o 232 232 233 233 dchar.o: $(ROOT)/dchar.c 234 234 $(CC) -c $(GFLAGS) -I$(ROOT) $< 235 235 236 236 cond.o: cond.c 237 237 $(CC) -c $(CFLAGS) $< 238 238 239 239 cppmangle.o: cppmangle.c 240 240 $(CC) -c $(CFLAGS) $< 241 241 242 242 debug.o: $C/debug.c 243 243 $(CC) -c $(MFLAGS) -I. $< 244 244 245 245 declaration.o: declaration.c 246 246 $(CC) -c $(CFLAGS) $< 247 247 248 248 delegatize.o: delegatize.c branches/dmd-1.x/src/win32.mak
r204 r262 245 245 246 246 cod1.obj : $C\rtlsym.h $C\cod1.c 247 247 $(CC) -c $(MFLAGS) $C\cod1 248 248 249 249 cod2.obj : $C\rtlsym.h $C\cod2.c 250 250 $(CC) -c $(MFLAGS) $C\cod2 251 251 252 252 cod3.obj : $C\rtlsym.h $C\cod3.c 253 253 $(CC) -c $(MFLAGS) $C\cod3 254 254 255 255 cod4.obj : $C\cod4.c 256 256 $(CC) -c $(MFLAGS) $C\cod4 257 257 258 258 cod5.obj : $C\cod5.c 259 259 $(CC) -c $(MFLAGS) $C\cod5 260 260 261 261 code.obj : $C\code.c 262 262 $(CC) -c $(MFLAGS) $C\code 263 263 264 264 irstate.obj : irstate.h irstate.c 265 $(CC) -c $(MFLAGS) irstate265 $(CC) -c $(MFLAGS) -I$(ROOT) irstate 266 266 267 267 csymbol.obj : $C\symbol.c 268 268 $(CC) -c $(MFLAGS) $C\symbol -ocsymbol.obj 269 269 270 270 debug.obj : $C\debug.c 271 271 $(CC) -c $(MFLAGS) -I. $C\debug 272 272 273 273 dt.obj : $C\dt.h $C\dt.c 274 274 $(CC) -c $(MFLAGS) $C\dt 275 275 276 276 ee.obj : $C\ee.c 277 277 $(CC) -c $(MFLAGS) $C\ee 278 278 279 279 eh.obj : $C\cc.h $C\code.h $C\type.h $C\dt.h eh.c 280 280 $(CC) -c $(MFLAGS) eh 281 281 282 282 el.obj : $C\rtlsym.h $C\el.h $C\el.c 283 283 $(CC) -c $(MFLAGS) $C\el 284 284 285 285 evalu8.obj : $C\evalu8.c trunk/src/class.c
r254 r262 1179 1179 storage_class |= b->base->storage_class & STC_TYPECTOR; 1180 1180 #endif 1181 1181 i++; 1182 1182 } 1183 1183 1184 1184 interfaces_dim = baseclasses.dim; 1185 1185 interfaces = (BaseClass **)baseclasses.data; 1186 1186 1187 1187 interfaceSemantic(sc); 1188 1188 1189 1189 if (vtblOffset()) 1190 1190 vtbl.push(this); // leave room at vtbl[0] for classinfo 1191 1191 1192 1192 // Cat together the vtbl[]'s from base interfaces 1193 1193 for (i = 0; i < interfaces_dim; i++) 1194 1194 { BaseClass *b = interfaces[i]; 1195 1195 1196 1196 // Skip if b has already appeared 1197 1197 for (int k = 0; k < i; k++) 1198 1198 { 1199 if (b == interfaces[ i])1199 if (b == interfaces[k]) 1200 1200 goto Lcontinue; 1201 1201 } 1202 1202 1203 1203 // Copy vtbl[] from base class 1204 1204 if (b->base->vtblOffset()) 1205 1205 { int d = b->base->vtbl.dim; 1206 1206 if (d > 1) 1207 1207 { 1208 1208 vtbl.reserve(d - 1); 1209 1209 for (int j = 1; j < d; j++) 1210 1210 vtbl.push(b->base->vtbl.data[j]); 1211 1211 } 1212 1212 } 1213 1213 else 1214 1214 { 1215 1215 vtbl.append(&b->base->vtbl); 1216 1216 } 1217 1217 1218 1218 Lcontinue: 1219 1219 ;
