Skip to content

Commit 925e547

Browse files
committed
Support assert stmt.
1 parent 4669fb4 commit 925e547

1 file changed

Lines changed: 32 additions & 1 deletion

File tree

Modules/parsermodule.c

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -874,6 +874,7 @@ VALIDATER(print_stmt); VALIDATER(del_stmt);
874874
VALIDATER(return_stmt);
875875
VALIDATER(raise_stmt); VALIDATER(import_stmt);
876876
VALIDATER(global_stmt);
877+
VALIDATER(assert_stmt);
877878
VALIDATER(exec_stmt); VALIDATER(compound_stmt);
878879
VALIDATER(while); VALIDATER(for);
879880
VALIDATER(try); VALIDATER(except_clause);
@@ -1333,6 +1334,7 @@ validate_small_stmt(tree)
13331334
|| (TYPE(CHILD(tree, 0)) == flow_stmt)
13341335
|| (TYPE(CHILD(tree, 0)) == import_stmt)
13351336
|| (TYPE(CHILD(tree, 0)) == global_stmt)
1337+
|| (TYPE(CHILD(tree, 0)) == assert_stmt)
13361338
|| (TYPE(CHILD(tree, 0)) == exec_stmt)));
13371339

13381340
if (res)
@@ -1584,6 +1586,32 @@ validate_exec_stmt(tree)
15841586
} /* validate_exec_stmt() */
15851587

15861588

1589+
/* assert_stmt:
1590+
*
1591+
* 'assert' test [',' test]
1592+
*/
1593+
static int
1594+
validate_assert_stmt(tree)
1595+
node *tree;
1596+
{
1597+
int nch = NCH(tree);
1598+
int res = (validate_ntype(tree, assert_stmt)
1599+
&& ((nch == 2) || (nch == 4))
1600+
&& (validate_name(CHILD(tree, 0), "__assert__") ||
1601+
validate_name(CHILD(tree, 0), "assert"))
1602+
&& validate_test(CHILD(tree, 1)));
1603+
1604+
if (!res && !PyErr_Occurred())
1605+
err_string("Illegal assert statement.");
1606+
if (res && (nch > 2))
1607+
res = (validate_comma(CHILD(tree, 2))
1608+
&& validate_test(CHILD(tree, 3)));
1609+
1610+
return (res);
1611+
1612+
} /* validate_assert_stmt() */
1613+
1614+
15871615
static int
15881616
validate_while(tree)
15891617
node *tree;
@@ -2373,7 +2401,7 @@ validate_node(tree)
23732401
case small_stmt:
23742402
/*
23752403
* expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt
2376-
* | import_stmt | global_stmt | exec_stmt
2404+
* | import_stmt | global_stmt | exec_stmt | assert_stmt
23772405
*/
23782406
res = validate_small_stmt(tree);
23792407
break;
@@ -2436,6 +2464,9 @@ validate_node(tree)
24362464
case exec_stmt:
24372465
res = validate_exec_stmt(tree);
24382466
break;
2467+
case assert_stmt:
2468+
res = validate_assert_stmt(tree);
2469+
break;
24392470
case if_stmt:
24402471
res = validate_if(tree);
24412472
break;

0 commit comments

Comments
 (0)