OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************/
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
#include <assert.h>
#include "context.h"
#include "call.h"
#include "calc.h"
+#include "debug.h"
struct psi_num_exp *psi_num_exp_init_ternary(token_t op,
struct psi_num_exp *cond, struct psi_num_exp *truthy,
psi_plist_top(list, &ntoken);
ntoken = psi_token_init(PSI_T_COLON, ":", 1, ntoken->col+ntoken->text->len, ntoken->line, ntoken->file);
list = psi_plist_add(list, &ntoken);
- list = psi_plist_add(list, &ntoken);
list = psi_num_exp_tokens(exp->data.t.falsy, list);
break;
case PSI_T_CAST:
PSI_DUMP(dump, "(");
- psi_decl_type_dump(1, exp->data.c.typ, 0);
+ psi_decl_type_dump(dump, exp->data.c.typ, 0);
PSI_DUMP(dump, ")");
+ psi_num_exp_dump(dump, exp->data.c.num);
break;
case PSI_T_NOT:
switch (exp->op) {
case PSI_T_NUMBER:
- return psi_number_validate(data, exp->data.n, scope);
+ if (!psi_number_validate(data, exp->data.n, scope)) {
+ smart_str str = {0};
+ struct psi_dump dump = {{.hn = &str},
+ .fun = (psi_dump_cb) psi_smart_str_printf};
+
+ psi_num_exp_dump(&dump, exp);
+ smart_str_0(&str);
+ data->error(data, exp->token, PSI_WARNING,
+ "Invalid numeric expression: '%s'",
+ str.s->val);
+ return false;
+ }
+ return true;
case PSI_T_CAST:
return psi_num_exp_validate(data, exp->data.c.num, scope)