aboutsummaryrefslogtreecommitdiff
path: root/definitions.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2021-09-23 14:38:46 -0700
committerBruce Hill <bruce@bruce-hill.com>2021-09-23 14:38:46 -0700
commit89c5888dd66c09cb304d21e2ce6f96c9cc42461f (patch)
treec66fc21d73e481f9890f62669b6e573cc267af1c /definitions.c
parent86404d0ab3651ad5347aeada02566bd5b8eaa0af (diff)
Switched to using an optional type
Diffstat (limited to 'definitions.c')
-rw-r--r--definitions.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/definitions.c b/definitions.c
index 5309c8b..ed7d71a 100644
--- a/definitions.c
+++ b/definitions.c
@@ -34,10 +34,10 @@ def_t *with_def(def_t *defs, size_t namelen, const char *name, pat_t *pat)
def_t *load_grammar(def_t *defs, file_t *f)
{
const char *str = after_spaces(f->start, true);
- pat_t *pat = bp_pattern(f, str);
- if (!pat) file_err(f, str, f->end, "Could not parse this file");
- if (pat->end < f->end) file_err(f, pat->end, f->end, "Could not parse this part of the file");
- for (pat_t *p = pat; p && p->type == BP_DEFINITION; p = p->args.def.pat)
+ maybe_pat_t maybe_pat = bp_pattern(f, str);
+ if (!maybe_pat.success)
+ file_err(f, maybe_pat.value.error.start, maybe_pat.value.error.end, maybe_pat.value.error.msg);
+ for (pat_t *p = maybe_pat.value.pat; p && p->type == BP_DEFINITION; p = p->args.def.pat)
defs = with_def(defs, p->args.def.namelen, p->args.def.name, p->args.def.def);
return defs;
}