blueloveTH 2024-02-04 19:30:51 +08:00
parent 7bd99279e5
commit b65cf89d22
2 changed files with 39 additions and 1 deletions

View File

@ -1155,6 +1155,17 @@ __EAT_DOTS_END:
case TK("False"): return VAR(false);
case TK("None"): return vm->None;
case TK("..."): return vm->Ellipsis;
case TK("("): {
List cpnts;
while(true) {
cpnts.push_back(read_literal());
if(curr().type == TK(")")) break;
consume(TK(","));
if(curr().type == TK(")")) break;
}
consume(TK(")"));
return VAR(Tuple(std::move(cpnts)));
}
default: break;
}
return nullptr;

View File

@ -92,3 +92,30 @@ S, kwargs = g(1, 2, 3, 4, 5, c=4, e=5, f=6)
assert S == 21
assert kwargs == {'e': 5, 'f': 6}
# test tuple defaults
def f(a=(1,)):
return a
assert f() == (1,)
def f(a=(1,2)):
return a
assert f() == (1,2)
def f(a=(1,2,3)):
return a
assert f() == (1,2,3)
def f(a=(1,2,3,)):
return a
assert f() == (1,2,3)
def f(a=(1,(2,3))):
return a
assert f() == (1,(2,3))
def f(a=((1,2),3), b=(4,)):
return a, b
assert f() == (((1,2),3), (4,))