projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
#pragma lib
[m6w6/ext-psi]
/
src
/
types
/
set_stmt.c
diff --git
a/src/types/set_stmt.c
b/src/types/set_stmt.c
index e9f957ba2224b7ec26e3c1dba6348b3736adfde8..80b75c5bc894a88a7e617ca9ce62ea39f0ffe948 100644
(file)
--- a/
src/types/set_stmt.c
+++ b/
src/types/set_stmt.c
@@
-23,13
+23,17
@@
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************/
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 "data.h"
#include "call.h"
struct psi_set_stmt *psi_set_stmt_init(struct psi_set_exp *exp)
{
#include "data.h"
#include "call.h"
struct psi_set_stmt *psi_set_stmt_init(struct psi_set_exp *exp)
{
- struct psi_set_stmt *set =
calloc(1, sizeof(*set)
);
+ struct psi_set_stmt *set =
pecalloc(1, sizeof(*set), 1
);
set->exp = exp;
return set;
}
set->exp = exp;
return set;
}
@@
-46,59
+50,64
@@
void psi_set_stmt_free(struct psi_set_stmt **set_ptr)
*set_ptr = NULL;
psi_set_exp_free(&set->exp);
*set_ptr = NULL;
psi_set_exp_free(&set->exp);
- if (set->token) {
- free(set->token);
- }
+ psi_token_free(&set->token);
free(set);
}
}
free(set);
}
}
-void psi_set_stmt_dump(
int fd
, struct psi_set_stmt *set)
+void psi_set_stmt_dump(
struct psi_dump *dump
, struct psi_set_stmt *set)
{
{
-
dprintf(fd
, "\tset ");
- psi_set_exp_dump(
fd
, set->exp, 1, 1);
-
dprintf(fd
, ";\n");
+
PSI_DUMP(dump
, "\tset ");
+ psi_set_exp_dump(
dump
, set->exp, 1, 1);
+
PSI_DUMP(dump
, ";\n");
}
}
-bool psi_set_stmts_validate(struct psi_data *data, struct psi_
impl *impl
)
+bool psi_set_stmts_validate(struct psi_data *data, struct psi_
validate_scope *scope
)
{
size_t i = 0;
struct psi_set_stmt *set;
/* we can have any count of set stmts; processing out vars */
/* check that set stmts reference known variables */
{
size_t i = 0;
struct psi_set_stmt *set;
/* we can have any count of set stmts; processing out vars */
/* check that set stmts reference known variables */
- while (psi_plist_get(impl->stmts.set, i++, &set)) {
+ while (psi_plist_get(
scope->
impl->stmts.set, i++, &set)) {
if (!set->exp->var) {
data->error(data, set->token, PSI_WARNING,
"Missing variable of `set` statement of implementation '%s'",
if (!set->exp->var) {
data->error(data, set->token, PSI_WARNING,
"Missing variable of `set` statement of implementation '%s'",
-
impl->func->name
);
+
scope->impl->func->name->val
);
return false;
}
return false;
}
- if (!psi_impl_get_arg(impl, set->exp->var)) {
+ if (!psi_impl_get_arg(
scope->
impl, set->exp->var)) {
data->error(data, set->token, PSI_WARNING,
"Unknown variable '%s' of `set` statement of implementation '%s'",
data->error(data, set->token, PSI_WARNING,
"Unknown variable '%s' of `set` statement of implementation '%s'",
- set->exp->var->name
, impl->func->name
);
+ set->exp->var->name
->val, scope->impl->func->name->val
);
return false;
}
return false;
}
+ scope->current_set = set->exp;
+
switch (set->exp->kind) {
case PSI_SET_NUMEXP:
break;
case PSI_SET_FUNC:
switch (set->exp->kind) {
case PSI_SET_NUMEXP:
break;
case PSI_SET_FUNC:
- if (!psi_
decl_get_arg(impl->dec
l, set->exp->data.func->var)) {
- if (!psi_impl_get_temp_let_arg(impl, set->exp->data.func->var)) {
+ if (!psi_
impl_get_decl_arg(scope->imp
l, set->exp->data.func->var)) {
+ if (!psi_impl_get_temp_let_arg(
scope->
impl, set->exp->data.func->var)) {
data->error(data, set->token, PSI_WARNING,
"Unknown variable '%s' of `set` statement of implementation '%s'",
data->error(data, set->token, PSI_WARNING,
"Unknown variable '%s' of `set` statement of implementation '%s'",
- set->exp->data.func->var, impl->func->name);
+ set->exp->data.func->var->name->val, scope->impl->func->name->val);
+ scope->current_set = NULL;
return false;
}
}
}
return false;
}
}
}
+
/* validate the expression itself */
/* validate the expression itself */
- if (!psi_set_exp_validate(data, set->exp, impl, NULL)) {
+ if (!psi_set_exp_validate(data, set->exp, scope)) {
+ scope->current_set = NULL;
return false;
}
return false;
}
+
+ scope->current_set = NULL;
}
return true;
}
return true;