+static inline int validate_impl_args(PSI_Data *data, impl *impl) {
+ int def = 0;
+ size_t i;
+
+ for (i = 0; i < impl->func->args->count; ++i) {
+ impl_arg *iarg = impl->func->args->args[i];
+
+ if (iarg->def) {
+ def = 1;
+ } else if (def) {
+ data->error(impl->func->token, PSI_WARNING,
+ "Non-optional argument %zu '$%s' of implementation '%s'"
+ " follows optional argument",
+ i+1, iarg->var->name, impl->func->name);
+ return 0;
+ }
+ }
+
+ return 1;
+}
+static inline int validate_impl(PSI_Data *data, impl *impl) {
+ if (!validate_impl_args(data, impl)) {
+ return 0;
+ }
+ return validate_impl_stmts(data, impl);
+}
+