@@ -634,7 +634,7 @@ static bproto* funcbody(bparser *parser, bstring *name, bclass *c, int type)
634
634
new_var (parser , parser_newstr (parser , "_class" ), & e1 ); /* new implicit variable '_class' */
635
635
init_exp (& e2 , ETCONST , 0 );
636
636
be_code_implicit_class (parser -> finfo , & e2 , c );
637
- be_code_setvar (parser -> finfo , & e1 , & e2 , bfalse , bfalse );
637
+ be_code_setvar (parser -> finfo , & e1 , & e2 , bfalse );
638
638
finfo .proto -> varg |= BE_VA_STATICMETHOD ;
639
639
}
640
640
stmtlist (parser ); /* parse statement without final `end` */
@@ -738,7 +738,7 @@ static void map_nextmember(bparser *parser, bexpdesc *l)
738
738
match_token (parser , OptColon ); /* ':' */
739
739
expr (parser , & e ); /* value in `e` */
740
740
check_var (parser , & e ); /* check if value is correct */
741
- be_code_setvar (finfo , & v , & e , bfalse , bfalse ); /* set suffi INDEX value to e */
741
+ be_code_setvar (finfo , & v , & e , bfalse ); /* set suffi INDEX value to e */
742
742
}
743
743
744
744
static void list_expr (bparser * parser , bexpdesc * e )
@@ -1018,7 +1018,7 @@ static void assign_expr(bparser *parser)
1018
1018
if (check_newvar (parser , & e )) { /* new variable */
1019
1019
new_var (parser , e .v .s , & e );
1020
1020
}
1021
- if (be_code_setvar (parser -> finfo , & e , & e1 , bfalse , bfalse )) {
1021
+ if (be_code_setvar (parser -> finfo , & e , & e1 , bfalse )) {
1022
1022
parser -> lexer .linenumber = line ;
1023
1023
parser_error (parser ,
1024
1024
"try to assign constant expressions." );
@@ -1121,7 +1121,7 @@ static void walrus_expr(bparser *parser, bexpdesc *e)
1121
1121
if (check_newvar (parser , & e1 )) { /* new variable */
1122
1122
new_var (parser , e1 .v .s , & e1 );
1123
1123
}
1124
- if (be_code_setvar (parser -> finfo , & e1 , e , btrue /* do not release register */ , bfalse )) {
1124
+ if (be_code_setvar (parser -> finfo , & e1 , e , btrue /* do not release register */ )) {
1125
1125
parser -> lexer .linenumber = line ;
1126
1126
parser_error (parser ,
1127
1127
"try to assign constant expressions." );
@@ -1254,7 +1254,7 @@ static void for_iter(bparser *parser, bstring *var, bexpdesc *it)
1254
1254
finfo -> binfo -> beginpc = finfo -> pc ;
1255
1255
/* itvar = .it() */
1256
1256
init_exp (& e , ETLOCAL , new_localvar (parser , var )); /* new itvar */
1257
- be_code_setvar (finfo , & e , it , bfalse , bfalse ); /* code function to variable '.it' */
1257
+ be_code_setvar (finfo , & e , it , bfalse ); /* code function to variable '.it' */
1258
1258
be_code_call (finfo , e .v .idx , 0 ); /* itvar <- call .it() */
1259
1259
stmtlist (parser );
1260
1260
}
@@ -1435,7 +1435,7 @@ static void classvar_stmt(bparser *parser, bclass *c)
1435
1435
}
1436
1436
}
1437
1437
1438
- static void class_static_assignment_expr (bparser * parser , bexpdesc * e , bstring * name , bbool ismethod )
1438
+ static void class_static_assignment_expr (bparser * parser , bexpdesc * e , bstring * name )
1439
1439
{
1440
1440
if (match_skip (parser , OptAssign )) { /* '=' */
1441
1441
bexpdesc e1 , e2 ;
@@ -1448,32 +1448,22 @@ static void class_static_assignment_expr(bparser *parser, bexpdesc *e, bstring *
1448
1448
key .v .s = name ;
1449
1449
1450
1450
be_code_member (parser -> finfo , & e1 , & key ); /* compute member accessor */
1451
- be_code_setvar (parser -> finfo , & e1 , & e2 , bfalse , ismethod ); /* set member */
1451
+ be_code_setvar (parser -> finfo , & e1 , & e2 , bfalse ); /* set member */
1452
1452
}
1453
1453
}
1454
1454
1455
- static void classdef_stmt (bparser * parser , bclass * c , bexpdesc * e , bbool is_static )
1455
+ static void classdef_stmt (bparser * parser , bclass * c , bbool is_static )
1456
1456
{
1457
- bexpdesc e1 ;
1457
+ bexpdesc e ;
1458
1458
bstring * name ;
1459
1459
bproto * proto ;
1460
1460
/* 'def' ID '(' varlist ')' block 'end' */
1461
- /* 'def' ID = funcname */
1462
- /* 'def' ID = classname '.' method */
1463
1461
scan_next_token (parser ); /* skip 'def' */
1464
- name = func_name (parser , & e1 , 1 );
1465
- check_class_attr (parser , c , name ); /* check that we don't redefine an existing name within the class */
1466
- if (next_type (parser ) == OptAssign ) {
1467
- /* 'def' ID = funcname */
1468
- /* 'def' ID = classname '.' method */
1469
- be_class_member_bind (parser -> vm , c , name , bfalse );
1470
- class_static_assignment_expr (parser , e , name , !is_static );
1471
- } else {
1472
- /* 'def' ID '(' varlist ')' block 'end' */
1473
- proto = funcbody (parser , name , c , is_static ? FUNC_STATIC : FUNC_METHOD );
1474
- be_class_method_bind (parser -> vm , c , proto -> name , proto , is_static );
1475
- be_stackpop (parser -> vm , 1 );
1476
- }
1462
+ name = func_name (parser , & e , 1 );
1463
+ check_class_attr (parser , c , name );
1464
+ proto = funcbody (parser , name , c , is_static ? FUNC_STATIC : FUNC_METHOD );
1465
+ be_class_method_bind (parser -> vm , c , proto -> name , proto , is_static );
1466
+ be_stackpop (parser -> vm , 1 );
1477
1467
}
1478
1468
1479
1469
static void classstaticclass_stmt (bparser * parser , bclass * c_out , bexpdesc * e_out );
@@ -1483,10 +1473,9 @@ static void classstatic_stmt(bparser *parser, bclass *c, bexpdesc *e)
1483
1473
bstring * name ;
1484
1474
/* 'static' ['var'] ID ['=' expr] {',' ID ['=' expr] } */
1485
1475
/* 'static' 'def' ID '(' varlist ')' block 'end' */
1486
- /* 'static' 'def' ID '=' func */
1487
1476
scan_next_token (parser ); /* skip 'static' */
1488
1477
if (next_type (parser ) == KeyDef ) { /* 'static' 'def' ... */
1489
- classdef_stmt (parser , c , e , btrue );
1478
+ classdef_stmt (parser , c , btrue );
1490
1479
} else if (next_type (parser ) == KeyClass ) { /* 'static' 'class' ... */
1491
1480
classstaticclass_stmt (parser , c , e );
1492
1481
} else {
@@ -1496,13 +1485,13 @@ static void classstatic_stmt(bparser *parser, bclass *c, bexpdesc *e)
1496
1485
if (match_id (parser , name ) != NULL ) {
1497
1486
check_class_attr (parser , c , name );
1498
1487
be_class_member_bind (parser -> vm , c , name , bfalse );
1499
- class_static_assignment_expr (parser , e , name , bfalse );
1488
+ class_static_assignment_expr (parser , e , name );
1500
1489
1501
1490
while (match_skip (parser , OptComma )) { /* ',' */
1502
1491
if (match_id (parser , name ) != NULL ) {
1503
1492
check_class_attr (parser , c , name );
1504
1493
be_class_member_bind (parser -> vm , c , name , bfalse );
1505
- class_static_assignment_expr (parser , e , name , bfalse );
1494
+ class_static_assignment_expr (parser , e , name );
1506
1495
} else {
1507
1496
parser_error (parser , "class static error" );
1508
1497
}
@@ -1532,7 +1521,7 @@ static void class_block(bparser *parser, bclass *c, bexpdesc *e)
1532
1521
switch (next_type (parser )) {
1533
1522
case KeyVar : classvar_stmt (parser , c ); break ;
1534
1523
case KeyStatic : classstatic_stmt (parser , c , e ); break ;
1535
- case KeyDef : classdef_stmt (parser , c , e , bfalse ); break ;
1524
+ case KeyDef : classdef_stmt (parser , c , bfalse ); break ;
1536
1525
case OptSemic : scan_next_token (parser ); break ;
1537
1526
default : push_error (parser ,
1538
1527
"unexpected token '%s'" , token2str (parser ));
@@ -1559,7 +1548,7 @@ static void class_stmt(bparser *parser)
1559
1548
bexpdesc e1 ; /* if inline class, we add a second local variable for _class */
1560
1549
init_exp (& e1 , ETLOCAL , 0 );
1561
1550
e1 .v .idx = new_localvar (parser , class_str );
1562
- be_code_setvar (parser -> finfo , & e1 , & e , btrue , bfalse );
1551
+ be_code_setvar (parser -> finfo , & e1 , & e , btrue );
1563
1552
1564
1553
begin_varinfo (parser , class_str );
1565
1554
@@ -1597,7 +1586,7 @@ static void classstaticclass_stmt(bparser *parser, bclass *c_out, bexpdesc *e_ou
1597
1586
key .v .s = name ;
1598
1587
/* assign the class to the static member */
1599
1588
be_code_member (parser -> finfo , & e1 , & key ); /* compute member accessor */
1600
- be_code_setvar (parser -> finfo , & e1 , & e_class , bfalse , bfalse ); /* set member */
1589
+ be_code_setvar (parser -> finfo , & e1 , & e_class , bfalse ); /* set member */
1601
1590
} else {
1602
1591
parser_error (parser , "class name error" );
1603
1592
}
@@ -1649,7 +1638,7 @@ static void var_field(bparser *parser)
1649
1638
init_exp (& e2 , ETNIL , 0 );
1650
1639
}
1651
1640
new_var (parser , name , & e1 ); /* new variable */
1652
- be_code_setvar (parser -> finfo , & e1 , & e2 , bfalse , bfalse );
1641
+ be_code_setvar (parser -> finfo , & e1 , & e2 , bfalse );
1653
1642
}
1654
1643
1655
1644
static void var_stmt (bparser * parser )
0 commit comments