From 35c2d5538200db966db23259b46e6d4c382a5142 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 14 Apr 2024 15:58:30 +0200 Subject: [PATCH] Berry upstream walrus fix (#21175) --- lib/libesp32/berry/src/be_parser.c | 2 +- lib/libesp32/berry/tests/walrus.be | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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()