py/scope: Name and use id_kind_type_t.

The function scope_find_or_add_id used to take a scope_kind_t enum and
save it in an uint8_t. Saving an enum in a uint8_t is fine, but
everywhere this function is called it is not actually given a
scope_kind_t but an anonymous enum instead. Let's give this enum a name
and use that as the argument type.

This doesn't change the generated code, but is a C type mismatch that
unfortunately doesn't show up unless you enable -Wenum-conversion.
bound-method-equality
Emil Renner Berthing 2020-10-03 10:42:57 +02:00
parent 6eebdbc495
commit 6324c3e054
2 changed files with 4 additions and 4 deletions

View File

@ -72,7 +72,7 @@ void scope_free(scope_t *scope) {
m_del(scope_t, scope, 1);
}
id_info_t *scope_find_or_add_id(scope_t *scope, qstr qst, scope_kind_t kind) {
id_info_t *scope_find_or_add_id(scope_t *scope, qstr qst, id_info_kind_t kind) {
id_info_t *id_info = scope_find(scope, qst);
if (id_info != NULL) {
return id_info;

View File

@ -29,14 +29,14 @@
#include "py/parse.h"
#include "py/emitglue.h"
enum {
typedef enum {
ID_INFO_KIND_UNDECIDED,
ID_INFO_KIND_GLOBAL_IMPLICIT,
ID_INFO_KIND_GLOBAL_EXPLICIT,
ID_INFO_KIND_LOCAL, // in a function f, written and only referenced by f
ID_INFO_KIND_CELL, // in a function f, read/written by children of f
ID_INFO_KIND_FREE, // in a function f, belongs to the parent of f
};
} id_info_kind_t;
enum {
ID_FLAG_IS_PARAM = 0x01,
@ -92,7 +92,7 @@ typedef struct _scope_t {
scope_t *scope_new(scope_kind_t kind, mp_parse_node_t pn, qstr source_file, mp_uint_t emit_options);
void scope_free(scope_t *scope);
id_info_t *scope_find_or_add_id(scope_t *scope, qstr qstr, scope_kind_t kind);
id_info_t *scope_find_or_add_id(scope_t *scope, qstr qstr, id_info_kind_t kind);
id_info_t *scope_find(scope_t *scope, qstr qstr);
id_info_t *scope_find_global(scope_t *scope, qstr qstr);
void scope_check_to_close_over(scope_t *scope, id_info_t *id);