nsc: Rename nstr_exec_val() to nstr_eval() and tighten contract
nstr_exec_val() can produce three different error values: NSC_NOTYPE on invalid category, invalid type with zero val_as.lng on invalid type (this is a bug), and the wanted type with zero val_s when it can't coerce. None of these should ever happen. Fix it to always produce an NSC_NOTYPE error value. Fix up callers to check for it. Specify the result's type is promoted on success. Ensure it is even when the argument is NSC_VAL with an unpromoted type, which is invalid. Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
5a1544f925
commit
143a4e4e6f
6 changed files with 29 additions and 20 deletions
|
@ -286,8 +286,8 @@ extern struct symbol sector_navigation[];
|
|||
|
||||
/* src/lib/common/nstreval.c */
|
||||
extern struct valstr *nstr_mksymval(struct valstr *, struct castr *, int);
|
||||
extern struct valstr *nstr_exec_val(struct valstr *, natid, void *,
|
||||
enum nsc_type);
|
||||
extern struct valstr *nstr_eval(struct valstr *, natid, void *,
|
||||
enum nsc_type);
|
||||
extern int nstr_promote(int);
|
||||
extern char *symbol_by_value(int, struct symbol *);
|
||||
/* src/lib/global/nsc.c */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue