X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fcalc.c;h=f701b5a3fca9388227de8943c42f222861263b8f;hb=5359ad5c181e5772f350fe1cba060cbed3a05b91;hp=fc3e0437d07bdc7ecac18a887b1b20ec506f378b;hpb=b4a3c33fc143fd57288fcfe0878e7a22eeaf61bf;p=m6w6%2Fext-psi diff --git a/src/calc.c b/src/calc.c index fc3e043..f701b5a 100644 --- a/src/calc.c +++ b/src/calc.c @@ -4,6 +4,8 @@ #include "php.h" #include "php_psi.h" +#include "parser.h" +#include "calc.h" static inline int psi_calc_num_exp_value(num_exp *exp, impl_val *strct, impl_val *res) { impl_val *ref, *tmp = NULL; @@ -31,13 +33,15 @@ static inline int psi_calc_num_exp_value(num_exp *exp, impl_val *strct, impl_val } break; + case PSI_T_ENUM: + return psi_calc_num_exp(exp->u.enm->num ?: &exp->u.enm->inc, NULL, res); + break; + case PSI_T_NAME: if (strct) { ref = struct_member_ref(exp->u.dvar->arg, strct, &tmp); - } else if (exp->u.dvar->arg->let) { - ref = exp->u.dvar->arg->let->ptr; } else { - ref = exp->u.dvar->arg->ptr; + ref = exp->u.dvar->arg->let; } switch (real_decl_type(exp->u.dvar->arg->type)->type) { case PSI_T_INT8: