diff --git a/lib/libesp32/berry/src/be_parser.c b/lib/libesp32/berry/src/be_parser.c index ace085e46..2567410d6 100644 --- a/lib/libesp32/berry/src/be_parser.c +++ b/lib/libesp32/berry/src/be_parser.c @@ -1119,7 +1119,7 @@ static void walrus_expr(bparser *parser, bexpdesc *e) expr(parser, e); check_var(parser, e); if (check_newvar(parser, &e1)) { /* new variable */ - new_var(parser, e1.v.s, e); + new_var(parser, e1.v.s, &e1); } if (be_code_setvar(parser->finfo, &e1, e, btrue /* do not release register */ )) { parser->lexer.linenumber = line; diff --git a/lib/libesp32/berry/tests/walrus.be b/lib/libesp32/berry/tests/walrus.be index 43ef77cfa..a08090e74 100644 --- a/lib/libesp32/berry/tests/walrus.be +++ b/lib/libesp32/berry/tests/walrus.be @@ -70,3 +70,12 @@ class confused_walrus end var ins = confused_walrus() assert(ins.f() == ins) + +# Check overwriting a builtin (https://github.com/berry-lang/berry/issues/416) + +def check_overwrite_builtin() + print := 1 + assert(print == 1) +end + +check_overwrite_builtin()