Return fewer NULLs in parsing
This commit is contained in:
14
src/parse.c
14
src/parse.c
@@ -88,7 +88,7 @@ struct ucl_object *ucl_token_next(const char **curr_src) {
|
||||
|
||||
// Unreachable
|
||||
assert(false);
|
||||
return NULL;
|
||||
return ucl_error_create("Unreachable error in ucl_token_next");
|
||||
}
|
||||
|
||||
struct ucl_object *ucl_tokenize(const char *source) {
|
||||
@@ -129,6 +129,9 @@ struct ucl_object *ucl_parse_token_atom(struct ucl_object *maybe_atom) {
|
||||
case UCL_TYPE_COUNT:
|
||||
assert(false);
|
||||
}
|
||||
if (atom == NULL) {
|
||||
return ucl_error_create("Unreachable error in ucl_parse_token_atom");
|
||||
}
|
||||
return atom;
|
||||
}
|
||||
|
||||
@@ -178,11 +181,6 @@ static struct ucl_object *ucl_parse_tokens_recursive(struct ucl_object **token_i
|
||||
|
||||
next_sexp = ucl_parse_tokens_recursive(token_iter);
|
||||
UCL_RET_IF_ERROR(next_sexp);
|
||||
if (next_sexp == NULL) {
|
||||
// Error somewhere in the recursive parsing
|
||||
ucl_object_delete(list);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*next_node = ucl_cell_create(next_sexp, NULL);
|
||||
next_node = &(*next_node)->cell.cdr;
|
||||
@@ -192,7 +190,7 @@ static struct ucl_object *ucl_parse_tokens_recursive(struct ucl_object **token_i
|
||||
}
|
||||
// Any other symbol type should have been an atom, this shouldn't happen
|
||||
assert(false);
|
||||
return ucl_error_create("Unreachable parse error");
|
||||
return ucl_error_create("Unreachable ucl_parse_tokens_recursive error");
|
||||
}
|
||||
|
||||
// parse_tokens -> doesn't care about quotes, terminates on EOF
|
||||
@@ -218,8 +216,6 @@ struct ucl_object *ucl_parse_tokens(struct ucl_object *tokens) {
|
||||
}
|
||||
|
||||
return resultl;
|
||||
error:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// TODO: Should the parse a single sexp (return the last-parsed position), or
|
||||
|
||||
Reference in New Issue
Block a user