comparison dmd/interpret.c @ 336:aaade6ded589 trunk

[svn r357] Merged DMD 1.033
author lindquist
date Sat, 12 Jul 2008 19:38:31 +0200
parents 5acec6b2eef8
children 870652a9af23
comparison
equal deleted inserted replaced
335:17b844102023 336:aaade6ded589
727 if (key) 727 if (key)
728 key->value = keysave; 728 key->value = keysave;
729 return e; 729 return e;
730 } 730 }
731 731
732 #if V2 732 #if DMDV2
733 Expression *ForeachRangeStatement::interpret(InterState *istate) 733 Expression *ForeachRangeStatement::interpret(InterState *istate)
734 { 734 {
735 #if LOG 735 #if LOG
736 printf("ForeachRangeStatement::interpret()\n"); 736 printf("ForeachRangeStatement::interpret()\n");
737 #endif 737 #endif
987 Expression *e = EXP_CANT_INTERPRET; 987 Expression *e = EXP_CANT_INTERPRET;
988 VarDeclaration *v = d->isVarDeclaration(); 988 VarDeclaration *v = d->isVarDeclaration();
989 SymbolDeclaration *s = d->isSymbolDeclaration(); 989 SymbolDeclaration *s = d->isSymbolDeclaration();
990 if (v) 990 if (v)
991 { 991 {
992 #if V2 992 #if DMDV2
993 if ((v->isConst() || v->isInvariant()) && v->init && !v->value) 993 if ((v->isConst() || v->isInvariant()) && v->init && !v->value)
994 #else 994 #else
995 if (v->isConst() && v->init) 995 if (v->isConst() && v->init)
996 #endif 996 #endif
997 { e = v->init->toExpression(); 997 { e = v->init->toExpression();
1043 if (ie) 1043 if (ie)
1044 e = ie->exp->interpret(istate); 1044 e = ie->exp->interpret(istate);
1045 else if (v->init->isVoidInitializer()) 1045 else if (v->init->isVoidInitializer())
1046 e = NULL; 1046 e = NULL;
1047 } 1047 }
1048 #if V2 1048 #if DMDV2
1049 else if (s == v && (v->isConst() || v->isInvariant()) && v->init) 1049 else if (s == v && (v->isConst() || v->isInvariant()) && v->init)
1050 #else 1050 #else
1051 else if (s == v && v->isConst() && v->init) 1051 else if (s == v && v->isConst() && v->init)
1052 #endif 1052 #endif
1053 { e = v->init->toExpression(); 1053 { e = v->init->toExpression();
1853 if (e1->op == TOKvar) 1853 if (e1->op == TOKvar)
1854 { 1854 {
1855 FuncDeclaration *fd = ((VarExp *)e1)->var->isFuncDeclaration(); 1855 FuncDeclaration *fd = ((VarExp *)e1)->var->isFuncDeclaration();
1856 if (fd) 1856 if (fd)
1857 { 1857 {
1858 #if V2 1858 #if DMDV2
1859 enum BUILTIN b = fd->isBuiltin(); 1859 enum BUILTIN b = fd->isBuiltin();
1860 if (b) 1860 if (b)
1861 { Expressions args; 1861 { Expressions args;
1862 args.setDim(arguments->dim); 1862 args.setDim(arguments->dim);
1863 for (size_t i = 0; i < args.dim; i++) 1863 for (size_t i = 0; i < args.dim; i++)