diff --git a/py/lexer.c b/py/lexer.c index e778510206..536208e41f 100644 --- a/py/lexer.c +++ b/py/lexer.c @@ -58,33 +58,33 @@ STATIC bool is_physical_newline(mp_lexer_t *lex) { return lex->chr0 == '\n'; } -STATIC bool is_char(mp_lexer_t *lex, char c) { +STATIC bool is_char(mp_lexer_t *lex, byte c) { return lex->chr0 == c; } -STATIC bool is_char_or(mp_lexer_t *lex, char c1, char c2) { +STATIC bool is_char_or(mp_lexer_t *lex, byte c1, byte c2) { return lex->chr0 == c1 || lex->chr0 == c2; } -STATIC bool is_char_or3(mp_lexer_t *lex, char c1, char c2, char c3) { +STATIC bool is_char_or3(mp_lexer_t *lex, byte c1, byte c2, byte c3) { return lex->chr0 == c1 || lex->chr0 == c2 || lex->chr0 == c3; } /* -STATIC bool is_char_following(mp_lexer_t *lex, char c) { +STATIC bool is_char_following(mp_lexer_t *lex, byte c) { return lex->chr1 == c; } */ -STATIC bool is_char_following_or(mp_lexer_t *lex, char c1, char c2) { +STATIC bool is_char_following_or(mp_lexer_t *lex, byte c1, byte c2) { return lex->chr1 == c1 || lex->chr1 == c2; } -STATIC bool is_char_following_following_or(mp_lexer_t *lex, char c1, char c2) { +STATIC bool is_char_following_following_or(mp_lexer_t *lex, byte c1, byte c2) { return lex->chr2 == c1 || lex->chr2 == c2; } -STATIC bool is_char_and(mp_lexer_t *lex, char c1, char c2) { +STATIC bool is_char_and(mp_lexer_t *lex, byte c1, byte c2) { return lex->chr0 == c1 && lex->chr1 == c2; } diff --git a/py/lexer.h b/py/lexer.h index 3118df62c8..17c472d983 100644 --- a/py/lexer.h +++ b/py/lexer.h @@ -141,7 +141,8 @@ typedef enum _mp_token_kind_t { // the next-byte function must return the next byte in the stream // it must return MP_LEXER_EOF if end of stream // it can be called again after returning MP_LEXER_EOF, and in that case must return MP_LEXER_EOF -#define MP_LEXER_EOF (-1) +#define MP_LEXER_EOF ((unichar)(-1)) + typedef mp_uint_t (*mp_lexer_stream_next_byte_t)(void*); typedef void (*mp_lexer_stream_close_t)(void*); diff --git a/py/modbuiltins.c b/py/modbuiltins.c index 78fa4afc33..0440fc72b7 100644 --- a/py/modbuiltins.c +++ b/py/modbuiltins.c @@ -41,6 +41,10 @@ #include #endif +#if MICROPY_PY_IO +extern mp_uint_t mp_sys_stdout_obj; // type is irrelevant, just need pointer +#endif + // args[0] is function from class body // args[1] is class name // args[2:] are base objects @@ -403,7 +407,6 @@ STATIC mp_obj_t mp_builtin_print(mp_uint_t n_args, const mp_obj_t *args, mp_map_ end_data = mp_obj_str_get_data(end_elem->value, &end_len); } #if MICROPY_PY_IO - extern mp_uint_t mp_sys_stdout_obj; // type is irrelevant, just need pointer mp_obj_t stream_obj = &mp_sys_stdout_obj; mp_map_elem_t *file_elem = mp_map_lookup(kwargs, MP_OBJ_NEW_QSTR(MP_QSTR_file), MP_MAP_LOOKUP); if (file_elem != NULL && file_elem->value != mp_const_none) { @@ -440,7 +443,6 @@ MP_DEFINE_CONST_FUN_OBJ_KW(mp_builtin_print_obj, 0, mp_builtin_print); STATIC mp_obj_t mp_builtin___repl_print__(mp_obj_t o) { if (o != mp_const_none) { #if MICROPY_PY_IO - extern mp_uint_t mp_sys_stdout_obj; // type is irrelevant, just need pointer pfenv_t pfenv; pfenv.data = &mp_sys_stdout_obj; pfenv.print_strn = (void (*)(void *, const char *, mp_uint_t))mp_stream_write; diff --git a/py/objarray.c b/py/objarray.c index 85b73ae7f5..8c1caaceaf 100644 --- a/py/objarray.c +++ b/py/objarray.c @@ -220,6 +220,8 @@ mp_obj_t mp_obj_new_memoryview(byte typecode, mp_uint_t nitems, void *items) { } STATIC mp_obj_t memoryview_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) { + (void)type_in; + // TODO possibly allow memoryview constructor to take start/stop so that one // can do memoryview(b, 4, 8) instead of memoryview(b)[4:8] (uses less RAM) diff --git a/py/objstrunicode.c b/py/objstrunicode.c index abef2343f2..1cf4ed4743 100644 --- a/py/objstrunicode.c +++ b/py/objstrunicode.c @@ -53,7 +53,7 @@ STATIC void uni_print_quoted(void (*print)(void *env, const char *fmt, ...), voi has_double_quote = true; } } - int quote_char = '\''; + unichar quote_char = '\''; if (has_single_quote && !has_double_quote) { quote_char = '"'; }