mirror of https://github.com/arendst/Tasmota.git
Berry `var` allowed in with walrus operator `:=` (#19018)
* Berry `var` allowed in with walrus operator `:=` * fix regression
This commit is contained in:
parent
fc9065d4c8
commit
8f06552eee
|
@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file.
|
|||
- Matter add option to disable bridge mode (#18992)
|
||||
- Support for SGP41 TVOC/NOx Sensor (#18880)
|
||||
- Command ``BrRestart`` to restart the Berry VM (experimental)
|
||||
- Berry `var` allowed in with walrus operator `:=`
|
||||
|
||||
### Breaking Changed
|
||||
- Berry `bool( [] )` and `bool( {} )` now evaluate as `false` (#18986)
|
||||
|
|
Binary file not shown.
|
@ -1135,8 +1135,22 @@ static void sub_expr(bparser *parser, bexpdesc *e, int prio)
|
|||
static void walrus_expr(bparser *parser, bexpdesc *e)
|
||||
{
|
||||
int line = parser->lexer.linenumber;
|
||||
sub_expr(parser, e, ASSIGN_OP_PRIO); /* left expression */
|
||||
btokentype op = next_type(parser);
|
||||
if (op == KeyVar) {
|
||||
/* 'var' ID ':=' expr */
|
||||
scan_next_token(parser); /* skip 'var' */
|
||||
bstring *name;
|
||||
name = next_token(parser).u.s;
|
||||
match_token(parser, TokenId); /* match and skip ID */
|
||||
new_var(parser, name, e); /* new variable */
|
||||
op = next_type(parser);
|
||||
if (op != OptWalrus) {
|
||||
parser_error(parser, "'var' in expr must be followed by ':='");
|
||||
}
|
||||
} else {
|
||||
sub_expr(parser, e, ASSIGN_OP_PRIO); /* left expression */
|
||||
op = next_type(parser);
|
||||
}
|
||||
if (op == OptWalrus) {
|
||||
check_symbol(parser, e);
|
||||
bexpdesc e1 = *e; /* copy var to e1, e will get the result of expression */
|
||||
|
@ -1149,8 +1163,7 @@ static void walrus_expr(bparser *parser, bexpdesc *e)
|
|||
}
|
||||
if (be_code_setvar(parser->finfo, &e1, e, btrue /* do not release register */ )) {
|
||||
parser->lexer.linenumber = line;
|
||||
parser_error(parser,
|
||||
"try to assign constant expressions.");
|
||||
parser_error(parser, "try to assign constant expressions.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue