- if (sub_var && sub_args && !psi_decl_arg_get_by_var(sub_var, sub_args, NULL)) {
- /* remove expr for portability with different struct members */
- psi_plist_del(func->inner, --i, NULL);
- psi_set_exp_free(&inner);
- } else if (!psi_set_exp_validate(data, inner, impl, cb_decl)) {
- /* remove exp for portability */
- psi_plist_del(func->inner, --i, NULL);
+ if (sub_var && sub_args) {
+ if (!psi_decl_arg_get_by_var(sub_var, sub_args, NULL)) {
+ goto fail;
+ }
+ }
+
+ if (psi_set_exp_validate(data, inner, scope)) {
+ scope->current_set = set;
+ continue;