-bool psi_let_callback_validate(struct psi_data *data, struct psi_let_exp *exp,
- struct psi_let_callback *cb, struct psi_impl *impl)
+
+static inline bool psi_let_callback_validate_decl_args(struct psi_data *data,
+ struct psi_let_callback *cb, struct psi_decl *cb_decl,
+ struct psi_impl *impl)
+{
+ size_t i;
+ struct psi_decl_var *call_arg;
+
+ if (cb->cb_args) {
+ if (psi_plist_count(cb->cb_args) != psi_plist_count(cb_decl->args)) {
+ data->error(data, cb->token, PSI_WARNING,
+ "Argument count of callback statement of implementation '%s'"
+ "does not match argument count of callback declaration '%s'",
+ impl->func->name->val, cb_decl->func->var->name->val);
+ return false;
+ }
+
+ for (i = 0; psi_plist_get(cb->cb_args, i, &call_arg); ++i) {
+ psi_plist_get(cb_decl->args, i, &call_arg->arg);
+ }
+ }
+ return true;
+}
+
+bool psi_let_callback_validate(struct psi_data *data, struct psi_let_callback *cb,
+ struct psi_validate_scope *scope)