don't let impls leak into decls
[m6w6/ext-psi] / src / calc.c
index fc3e0437d07bdc7ecac18a887b1b20ec506f378b..f701b5a3fca9388227de8943c42f222861263b8f 100644 (file)
@@ -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: