Lines Matching refs:Expression

40 bool walkPostorder(Expression *e, StoppableVisitor *v);
41 Expression *interpret(Statement *s, InterState *istate);
42 Expression *interpret(Expression *e, InterState *istate, CtfeGoal goal = ctfeNeedRvalue);
43 Expression *semantic(Expression *e, Scope *sc);
46 static Expression *interpret(UnionExp *pue, Expression *e, InterState *istate, CtfeGoal goal = ctfe…
47 static Expression *interpret(UnionExp *pue, Statement *s, InterState *istate);
85 Expression *localThis; // value of 'this', or NULL if none
92 Expression *getThis();
97 void startFrame(Expression *thisexp);
100 Expression *getValue(VarDeclaration *v);
101 void setValue(VarDeclaration *v, Expression *e);
105 void saveGlobalConstant(VarDeclaration *v, Expression *e);
135 Expression *CtfeStack::getThis() in getThis()
146 void CtfeStack::startFrame(Expression *thisexp) in startFrame()
171 Expression *CtfeStack::getValue(VarDeclaration *v) in getValue()
183 void CtfeStack::setValue(VarDeclaration *v, Expression *e) in setValue()
235 void CtfeStack::saveGlobalConstant(VarDeclaration *v, Expression *e) in saveGlobalConstant()
267 static Expression *evaluateIfBuiltin(UnionExp *pue, InterState *istate, Loc loc,
268 FuncDeclaration *fd, Expressions *arguments, Expression *pthis);
269 static Expression *evaluatePostblit(InterState *istate, Expression *e);
270 static Expression *evaluateDtor(InterState *istate, Expression *e);
273 static Expression *scrubArray(Loc loc, Expressions *elems, bool structlit = false);
274 static Expression *scrubStructLiteral(Loc loc, StructLiteralExp *sle);
275 static Expression *scrubReturnValue(Loc loc, Expression *e);
276 static Expression *scrubArrayCache(Expressions *elems);
277 static Expression *scrubStructLiteralCache(StructLiteralExp *sle);
278 static Expression *scrubCacheValue(Expression *e);
304 void onExpression(Expression *e) in onExpression()
316 void visit(Expression *) in onExpression()
348 Expression *ex = isExpression(o); in onExpression()
640 Expression *ctfeInterpret(Expression *e) in ctfeInterpret()
681 Expression *result = interpret(e, NULL); in ctfeInterpret()
692 Expression *ctfeInterpretForPragmaMsg(Expression *e) in ctfeInterpretForPragmaMsg()
714 Expression *g = (*tup->exps)[i]; in ctfeInterpretForPragmaMsg()
715 Expression *h = g; in ctfeInterpretForPragmaMsg()
752 static Expression *interpretFunction(UnionExp *pue, FuncDeclaration *fd, InterState *istate, Expres… in interpretFunction()
806 Expression *earg = (*arguments)[i]; in interpretFunction()
870 Expression *earg = eargs[i]; in interpretFunction()
922 Expression *e = NULL; in interpretFunction()
988 Expression *result;
999 bool exceptionOrCant(Expression *e) in exceptionOrCant()
1047 Expression *e = interpret(pue, s->exp, istate, ctfeNeedNothing); in visit()
1076 Expression *e = interpret(pue, sx, istate); in visit()
1115 Expression *e = NULL; in visit()
1124 Expression *e = interpret(&ue, s->condition, istate); in visit()
1159 static bool stopPointersEscaping(Loc loc, Expression *e) in stopPointersEscaping()
1165 Expression *x = e; in stopPointersEscaping()
1214 Expression *m = (*elems)[i]; in stopPointersEscapingFromArray()
1260 Expression *e = interpret(pue, s->exp, istate); in visit()
1327 Expression *e = interpret(s->_body, istate); in visit()
1382 Expression *ei = interpret(&ueinit, s->_init, istate); in visit()
1392 Expression *e = interpret(&ue, s->condition, istate); in visit()
1400 Expression *e = interpret(pue, s->_body, istate); in visit()
1457 Expression *e = interpret(s->_body, istate); in visit()
1477 Expression *econdition = interpret(&uecond, s->condition, istate); in visit()
1487 Expression *ecase = interpret(&uecase, cs->exp, istate); in visit()
1508 Expression *e = interpret(pue, s->_body, istate); in visit()
1595 Expression *e = NULL; in visit()
1608 Expression *e = interpret(pue, s->_body, istate); in visit()
1642 Expression *eh = interpret(ca->handler, &istatex); in visit()
1695 Expression *e = NULL; in visit()
1703 Expression *ex = interpret(s->_body, istate); in visit()
1716 Expression *bex = interpret(s->_body, &istatex); in visit()
1731 Expression *ey = interpret(s->finalbody, istate); in visit()
1757 Expression *e = interpret(s->exp, istate); in visit()
1787 Expression *e = interpret(s->exp, istate); in visit()
1809 Expression *ex = interpret(s->_body, &istatex); in visit()
1845 void visit(Expression *e) in visit()
1950 Expression *val = getVarExp(e->loc, istate, e->var, goal); in visit()
1964 Expression *elwr = new IntegerExp(e->loc, e->offset / elemsize, Type::tsize_t); in visit()
1965 Expression *eupr = new IntegerExp(e->loc, e->offset / elemsize + d, Type::tsize_t); in visit()
1996 Expression *aggregate = NULL; in visit()
2005 Expression *lwr = interpret(&uelwr, ((SliceExp *)val)->lwr, istate); in visit()
2044 Expression *er = interpret(e->e1, istate, ctfeNeedLvalue); in visit()
2068 Expression *er = interpret(pue, e->e1, istate); in visit()
2085 static Expression *getVarExp(Loc loc, InterState *istate, Declaration *d, CtfeGoal goal) in getVarExp()
2087 Expression *e = CTFEExp::cantexp; in getVarExp()
2248 Expression *ev = getValue(v); in visit()
2292 Expression *ex = isExpression(o); in visit()
2302 Expression *einit; in visit()
2398 if (Expression *ex = isExpression(e->obj)) in visit()
2425 visit((Expression *)e); in visit()
2436 Expression *exp = (*expsx)[i]; in visit()
2437 Expression *ex = interpret(exp, istate); in visit()
2480 Expression *basis = interpret(e->basis, istate); in visit()
2488 Expression *exp = (*expsx)[i]; in visit()
2489 Expression *ex; in visit()
2559 Expression *ekey = (*keysx)[i]; in visit()
2560 Expression *evalue = (*valuesx)[i]; in visit()
2562 Expression *ek = interpret(ekey, istate); in visit()
2565 Expression *ev = interpret(evalue, istate); in visit()
2595 Expression *ekey = (*keysx)[i - 1]; in visit()
2598 Expression *ekey2 = (*keysx)[j]; in visit()
2661 Expression *exp = (*expsx)[i]; in visit()
2662 Expression *ex = NULL; in visit()
2718 …static Expression *recursivelyCreateArrayLiteral(UnionExp *pue, Loc loc, Type *newtype, InterState… in recursivelyCreateArrayLiteral()
2721 Expression *lenExpr = interpret(pue, (*arguments)[argnum], istate); in recursivelyCreateArrayLiteral()
2728 Expression *elem = recursivelyCreateArrayLiteral(pue, loc, elemType, istate, in recursivelyCreateArrayLiteral()
2751 Expression *el = interpret(elemType->defaultInitLiteral(loc), istate); in recursivelyCreateArrayLiteral()
2765 Expression *epre = interpret(pue, e->argprefix, istate, ctfeNeedNothing); in visit()
2778 Expression *se = e->newtype->defaultInitLiteral(e->loc); in visit()
2797 Expression *ex = (*e->arguments)[i]; in visit()
2813 Expression *ev = (result == pue->exp()) ? pue->copy() : result; in visit()
2839 Expression *m; in visit()
2859 Expression *eref = pue->exp(); in visit()
2865Expression *ctorfail = evaluateIfBuiltin(pue, istate, e->loc, e->member, e->arguments, eref); in visit()
2878Expression *ctorfail = interpretFunction(&ue, e->member, istate, e->arguments, eref); in visit()
2893 Expression *newval; in visit()
2922 Expression *e1 = interpret(&ue, e->e1, istate); in visit()
2938 Expression *e1 = interpret(&ue, e->e1, istate); in visit()
2952 bool evalOperand(UnionExp *pue, Expression *e, Expression *ex, Expression *&er) in evalOperand()
2975 Expression *e1 = interpret(&ue1, e->e1, istate); in interpretCommon()
2979 Expression *e2 = interpret(&ue2, e->e2, istate); in interpretCommon()
2989 Expression *e1 = interpret(&ue1, e->e1, istate); in interpretCommon()
2993 Expression *e2 = interpret(&ue2, e->e2, istate); in interpretCommon()
3003 Expression *e1 = interpret(&ue1, e->e1, istate); in interpretCommon()
3007 Expression *e2 = interpret(&ue2, e->e2, istate); in interpretCommon()
3022 Expression *e1; in interpretCommon()
3026 Expression *e2; in interpretCommon()
3053 Expression *e1 = interpret(&ue1, e->e1, istate); in interpretCompareCommon()
3056 Expression *e2 = interpret(&ue2, e->e2, istate); in interpretCompareCommon()
3061 Expression *agg1 = getAggregateFromPointer(e1, &ofs1); in interpretCompareCommon()
3062 Expression *agg2 = getAggregateFromPointer(e2, &ofs2); in interpretCompareCommon()
3079 Expression *e1 = interpret(&ue1, e->e1, istate); in interpretCompareCommon()
3088 Expression *e2 = interpret(&ue2, e->e2, istate); in interpretCompareCommon()
3144 static VarDeclaration *findParentVar(Expression *e) in findParentVar()
3169 Expression *e1 = e->e1;
3212 Expression *newval = interpret(e->e2, istate, ctfeNeedLvalue);
3241 Expression *lastIndex = NULL;
3242 Expression *oldval = NULL;
3266 Expression *aggregate = interpret(ie->e1, istate);
3288 Expression *ekey = interpret(xe->e2, istate);
3333 Expression *newaae = oldval;
3336 Expression *ekey = interpret(((IndexExp *)e1)->e2, istate);
3388 Expression *ex = interpret(ultimateVar->type->defaultInitLiteral(e->loc), istate);
3415 Expression *newval = interpret(e->e2, istate);
3599 Expression *e1x = interpret(((SliceExp*)e->e1)->e1, istate, ctfeNeedLvalue);
3603 Expression *ex = dve->e1;
3624 if (Expression *ex = assignToLvalue(e, e1, newval))
3642 Expression *e = (*sle->elements)[i]; in stompOverlappedFields()
3648 Expression *assignToLvalue(BinExp *e, Expression *e1, Expression *newval) in assignToLvalue()
3651 Expression **payload = NULL; // dead-store to prevent spurious warning in assignToLvalue()
3652 Expression *oldval; in assignToLvalue()
3664 Expression *ex = ((DotVarExp *)e1)->e1; in assignToLvalue()
3702 Expression *aggregate; in assignToLvalue()
3784 Expression *oldelem = (*oldelems)[i]; in assignToLvalue()
3785 Expression *newelem = paintTypeOntoLiteral(elemtype, (*newelems)[i]); in assignToLvalue()
3789 if (Expression *ex = evaluatePostblit(istate, newelem)) in assignToLvalue()
3793 if (Expression *ex = evaluateDtor(istate, oldelem)) in assignToLvalue()
3807 if (Expression *ex = evaluatePostblit(istate, newval)) in assignToLvalue()
3839 Expression *interpretAssignToSlice(UnionExp *pue, BinExp *e, in interpretAssignToSlice()
3840 Expression *e1, Expression *newval, bool isBlockAssignment) in interpretAssignToSlice()
3845 Expression *aggregate; in interpretAssignToSlice()
3857 Expression *oldval = interpret(se->e1, istate); in interpretAssignToSlice()
3863 Expression *dollarExp = new IntegerExp(e1->loc, dollar, Type::tsize_t); in interpretAssignToSlice()
3867 Expression *lwr = interpret(se->lwr, istate); in interpretAssignToSlice()
3874 Expression *upr = interpret(se->upr, istate); in interpretAssignToSlice()
3963 Expression *aggr2 = se->e1; in interpretAssignToSlice()
3975 Expression *orignewval = newval; in interpretAssignToSlice()
4032 Expression *aggr2 = se->e1; in interpretAssignToSlice()
4058 Expression *oldelem = (*oldelems)[(size_t)(i + firstIndex)]; in interpretAssignToSlice()
4059 Expression *newelem = (*newelems)[(size_t)(i + srclower)]; in interpretAssignToSlice()
4064 if (Expression *x = evaluatePostblit(istate, newelem)) in interpretAssignToSlice()
4067 if (Expression *x = evaluateDtor(istate, oldelem)) in interpretAssignToSlice()
4077 Expression *oldelem = (*oldelems)[(size_t)(i + firstIndex)]; in interpretAssignToSlice()
4078 Expression *newelem = (*newelems)[(size_t)(i + srclower)]; in interpretAssignToSlice()
4083 if (Expression *x = evaluatePostblit(istate, newelem)) in interpretAssignToSlice()
4086 if (Expression *x = evaluateDtor(istate, oldelem)) in interpretAssignToSlice()
4103 Expression *orignewval = newval; in interpretAssignToSlice()
4131 Expression *newelem = (*newelems)[j]; in interpretAssignToSlice()
4135 Expression *x = evaluatePostblit(istate, newelem); in interpretAssignToSlice()
4152 Expression *newval; in interpretAssignToSlice()
4157 Expression *assignTo(ArrayLiteralExp *ae) in interpretAssignToSlice()
4162 Expression *assignTo(ArrayLiteralExp *ae, size_t lwr, size_t upr) in interpretAssignToSlice()
4175 if (Expression *ex = assignTo((ArrayLiteralExp *)(*w)[k])) in interpretAssignToSlice()
4188 Expression *oldelem = (*w)[k]; in interpretAssignToSlice()
4189 Expression *tmpelem = needsDtor ? copyLiteral(oldelem).copy() : NULL; in interpretAssignToSlice()
4195 if (Expression *ex = evaluatePostblit(istate, oldelem)) in interpretAssignToSlice()
4201 if (Expression *ex = evaluateDtor(istate, tmpelem)) in interpretAssignToSlice()
4225 if (Expression *ex = rb.assignTo(existingAE, lowerbound, upperbound)) in interpretAssignToSlice()
4282 static int isPointerCmpExp(Expression *e, Expression **p1, Expression **p2) in isPointerCmpExp()
4354 Expression *p1 = NULL; in interpretFourPointerRelation()
4355 Expression *p2 = NULL; in interpretFourPointerRelation()
4356 Expression *p3 = NULL; in interpretFourPointerRelation()
4357 Expression *p4 = NULL; in interpretFourPointerRelation()
4380 Expression *agg1 = getAggregateFromPointer(p1, &ofs1); in interpretFourPointerRelation()
4381 Expression *agg2 = getAggregateFromPointer(p2, &ofs2); in interpretFourPointerRelation()
4393 Expression *except = NULL; in interpretFourPointerRelation()
4417 Expression *agg3 = getAggregateFromPointer(p3, &ofs3); in interpretFourPointerRelation()
4418 Expression *agg4 = getAggregateFromPointer(p4, &ofs4); in interpretFourPointerRelation()
4448 Expression *ex = e->e1; in interpretFourPointerRelation()
4619 Expression *pthis = NULL; in visit()
4622 Expression *ecall = interpret(e->e1, istate); in visit()
4647 Expression *ea = (*e->arguments)[0]; in visit()
4831 Expression *newval = initializerToExpression(v->_init); in visit()
4848 Expression *e1 = interpret(&ue, e->e1, istate, ctfeNeedNothing); in visit()
4859 Expression *econd; in visit()
4887 Expression *e1 = interpret(&ue1, e->e1, istate); in visit()
4912 static Expression *interpretVectorToArray(UnionExp *pue, VectorExp *e) in interpretVectorToArray()
4948 Expression *e1 = interpret(pue, e->e1, istate); in visit()
4970 Expression *e1 = interpret(pue, e->e1, istate); in visit()
4987 Expression *e1 = interpret(pue, e->e1, istate); in visit()
4997 Expression *e1 = interpret(pue, e->e1, istate); in visit()
5005 …static bool resolveIndexing(IndexExp *e, InterState *istate, Expression **pagg, uinteger_t *pidx, … in resolveIndexing()
5012 Expression *e1 = interpret(e->e1, istate); in resolveIndexing()
5016 Expression *e2 = interpret(e->e2, istate); in resolveIndexing()
5022 Expression *agg = getAggregateFromPointer(e1, &ofs); in resolveIndexing()
5067 Expression *e1 = interpret(e->e1, istate); in resolveIndexing()
5096 Expression *dollarExp = new IntegerExp(e->loc, len, Type::tsize_t); in resolveIndexing()
5100 Expression *e2 = interpret(e->e2, istate); in resolveIndexing()
5144 Expression *agg; in visit()
5178 Expression *e1 = interpret(e->e1, istate); in visit()
5192 Expression *e2 = interpret(e->e2, istate); in visit()
5222 Expression *agg; in visit()
5232 Expression *e2 = new IntegerExp(e->e2->loc, indexToAccess, Type::tsize_t); in visit()
5257 Expression *e1 = interpret(e->e1, istate); in visit()
5269 Expression *lwr = interpret(e->lwr, istate); in visit()
5272 Expression *upr = interpret(e->upr, istate); in visit()
5279 Expression *agg = getAggregateFromPointer(e1, &ofs); in visit()
5326 Expression *e1 = interpret(e->e1, istate); in visit()
5360 Expression *lwr = interpret(e->lwr, istate); in visit()
5367 Expression *upr = interpret(e->upr, istate); in visit()
5426 Expression *e1 = interpret(e->e1, istate); in visit()
5429 Expression *e2 = interpret(e->e2, istate); in visit()
5467 Expression *e1 = interpret(&ue1, e->e1, istate); in visit()
5472 Expression *e2 = interpret(&ue2, e->e2, istate); in visit()
5511 Expression *ex = evaluatePostblit(istate, (*ale->elements)[i]); in visit()
5619 Expression *el = (*ale->elements)[i]; in visit()
5637 Expression *e1 = interpret(e->e1, istate, goal); in visit()
5733 Expression *xx = (*ale->elements)[indx]; in visit()
5772 Expression *lwr = ie->e2; in visit()
5773Expression *upr = new IntegerExp(ie->e2->loc, ie->e2->toInteger() + dim, Type::tsize_t); in visit()
5867 Expression *e1 = interpret(pue, e->e1, istate); in visit()
5919 Expression *x = ae11->e1; in visit()
5935 Expression *ex = interpret(ade->e1, istate); in visit()
5995 Expression *ex = interpret(e->e1, istate); in visit()
6059 Expression *ev = (*se->elements)[i]; in visit()
6118 Expression *agg = interpret(e->e1, istate); in visit()
6121 Expression *index = interpret(e->e2, istate); in visit()
6136 Expression *ekey = (*keysx)[j]; in visit()
6184 static Expression *interpret(UnionExp *pue, Expression *e, InterState *istate, CtfeGoal goal) in interpret()
6190 Expression *ex = v.result; in interpret()
6196 Expression *interpret(Expression *e, InterState *istate, CtfeGoal goal) in interpret()
6199 Expression *result = interpret(&ue, e, istate, goal); in interpret()
6217 static Expression *interpret(UnionExp *pue, Statement *s, InterState *istate) in interpret()
6226 Expression *interpret(Statement *s, InterState *istate) in interpret()
6229 Expression *result = interpret(&ue, s, istate); in interpret()
6242 Expression *scrubReturnValue(Loc loc, Expression *e) in scrubReturnValue()
6247 if (Expression *ex = scrubStructLiteral(loc, sle)) in scrubReturnValue()
6261 if (Expression *ex = scrubStructLiteral(loc, sle)) in scrubReturnValue()
6272 if (Expression *ex = scrubArray(loc, ale->elements)) in scrubReturnValue()
6279 if (Expression *ex = scrubArray(loc, aae->keys)) in scrubReturnValue()
6281 if (Expression *ex = scrubArray(loc, aae->values)) in scrubReturnValue()
6293 if (Expression *ex = scrubArray(loc, ale->elements)) in scrubReturnValue()
6303 static bool isVoid(Expression *e, bool checkArray = false)
6326 Expression *e = (*elems)[i]; in isEntirelyVoid()
6336 Expression *scrubArray(Loc loc, Expressions *elems, bool structlit) in scrubArray()
6340 Expression *e = (*elems)[i]; in scrubArray()
6363 Expression *scrubStructLiteral(Loc loc, StructLiteralExp *sle) in scrubStructLiteral()
6370 if (Expression *ex = scrubArray(loc, sle->elements, true)) in scrubStructLiteral()
6380 Expression *scrubCacheValue(Expression *e) in scrubCacheValue()
6388 if (Expression *ex = scrubStructLiteralCache(sle)) in scrubCacheValue()
6394 if (Expression *ex = scrubStructLiteralCache(sle)) in scrubCacheValue()
6405 if (Expression *ex = scrubArrayCache(ale->elements)) in scrubCacheValue()
6412 if (Expression *ex = scrubArrayCache(aae->keys)) in scrubCacheValue()
6414 if (Expression *ex = scrubArrayCache(aae->values)) in scrubCacheValue()
6425 if (Expression *ex = scrubArrayCache(ale->elements)) in scrubCacheValue()
6432 Expression *scrubArrayCache(Expressions *elems) in scrubArrayCache()
6436 Expression *e = (*elems)[i]; in scrubArrayCache()
6442 Expression *scrubStructLiteralCache(StructLiteralExp *sle) in scrubStructLiteralCache()
6449 if (Expression *ex = scrubArrayCache(sle->elements)) in scrubStructLiteralCache()
6458 static Expression *interpret_length(UnionExp *pue, InterState *istate, Expression *earg) in interpret_length()
6473 static Expression *interpret_keys(UnionExp *pue, InterState *istate, Expression *earg, Type *return… in interpret_keys()
6493 static Expression *interpret_values(UnionExp *pue, InterState *istate, Expression *earg, Type *retu… in interpret_values()
6514 Expression *interpret_dup(UnionExp *pue, InterState *istate, Expression *earg) in interpret_dup()
6530 if (Expression *e = evaluatePostblit(istate, (*aae->keys)[i])) in interpret_dup()
6532 if (Expression *e = evaluatePostblit(istate, (*aae->values)[i])) in interpret_dup()
6541 Expression *interpret_aaApply(UnionExp *pue, InterState *istate, Expression *aa, Expression *deleg) in interpret_aaApply()
6553 Expression *pthis = NULL; in interpret_aaApply()
6576 Expression *eresult; in interpret_aaApply()
6580 Expression *ekey = (*ae->keys)[i]; in interpret_aaApply()
6581 Expression *evalue = (*ae->values)[i]; in interpret_aaApply()
6609 static Expression *foreachApplyUtf(UnionExp *pue, InterState *istate, Expression *str, Expression *… in foreachApplyUtf()
6612 Expression *pthis = NULL; in foreachApplyUtf()
6651 Expression *eresult = NULL; // ded-store to prevent spurious warning in foreachApplyUtf()
6684 Expression * r = (*ale->elements)[indx]; in foreachApplyUtf()
6696 Expression * r = (*ale->elements)[indx + i]; in foreachApplyUtf()
6709 Expression * r = (*ale->elements)[indx]; in foreachApplyUtf()
6722 Expression * r = (*ale->elements)[indx + i]; in foreachApplyUtf()
6734 Expression * r = (*ale->elements)[indx]; in foreachApplyUtf()
6825 Expression *val = NULL; in foreachApplyUtf()
6865 Expression *evaluateIfBuiltin(UnionExp *pue, InterState *istate, Loc loc, in evaluateIfBuiltin()
6866 FuncDeclaration *fd, Expressions *arguments, Expression *pthis) in evaluateIfBuiltin()
6868 Expression *e = NULL; in evaluateIfBuiltin()
6878 Expression *earg = (*arguments)[i]; in evaluateIfBuiltin()
6894 Expression *firstarg = nargs > 0 ? (*arguments)[0] : NULL; in evaluateIfBuiltin()
6919 … return interpret_aaApply(pue, istate, firstarg, (Expression *)(arguments->data[2])); in evaluateIfBuiltin()
6921 … return interpret_aaApply(pue, istate, firstarg, (Expression *)(arguments->data[2])); in evaluateIfBuiltin()
6966 Expression *str = (*arguments)[0]; in evaluateIfBuiltin()
6977 Expression *evaluatePostblit(InterState *istate, Expression *e) in evaluatePostblit()
7012 Expression *evaluateDtor(InterState *istate, Expression *e) in evaluateDtor()
7056 Expression *getValue(VarDeclaration *vd) in getValue()
7067 void setValueWithoutChecking(VarDeclaration *vd, Expression *newval) in setValueWithoutChecking()
7072 void setValue(VarDeclaration *vd, Expression *newval) in setValue()