xo-reader2: DExpectFormalArglistSsm parses multiple formals

This commit is contained in:
Roland Conybeare 2026-01-29 13:48:24 -05:00
commit 6df599673a
4 changed files with 67 additions and 54 deletions

View file

@ -215,7 +215,7 @@ namespace xo {
/** Walkthrough parsing input equivalent to:
*
* lambda (n : i64;
* lambda (n : i64,
*
**/
@ -279,11 +279,10 @@ namespace xo {
REQUIRE(result.is_incomplete());
}
#ifdef NOT_YET
{
auto & result = parser.on_token(Token::i64_token("777"));
auto & result = parser.on_token(Token::comma_token());
log && log("after i64 token:");
log && log("after comma token:");
log && log(xtag("parser", &parser));
log && log(xtag("result", result));
@ -292,6 +291,43 @@ namespace xo {
REQUIRE(result.is_incomplete());
}
{
auto & result = parser.on_token(Token::symbol_token("r"));
log && log("after symbol(r) token:");
log && log(xtag("parser", &parser));
log && log(xtag("result", result));
REQUIRE(parser.has_incomplete_expr() == true);
REQUIRE(!result.is_error());
REQUIRE(result.is_incomplete());
}
{
auto & result = parser.on_token(Token::colon_token());
log && log("after colon token:");
log && log(xtag("parser", &parser));
log && log(xtag("result", result));
REQUIRE(parser.has_incomplete_expr() == true);
REQUIRE(!result.is_error());
REQUIRE(result.is_incomplete());
}
{
auto & result = parser.on_token(Token::symbol_token("i64"));
log && log("after symbol(i64) token:");
log && log(xtag("parser", &parser));
log && log(xtag("result", result));
REQUIRE(parser.has_incomplete_expr() == true);
REQUIRE(!result.is_error());
REQUIRE(result.is_incomplete());
}
#ifdef NOT_YET
{
auto & result = parser.on_token(Token::else_token());