ZJIT: More tests for parsing param forms

This commit is contained in:
Alan Wu 2025-05-09 01:17:37 +09:00
parent 37d6de5331
commit 4eff1727e3
Notes: git 2025-05-14 11:13:39 +00:00

View File

@ -3139,15 +3139,49 @@ mod opt_tests {
}
#[test]
fn test_rest_param_get_bb_param() {
fn test_param_forms_get_bb_param() {
eval("
def rest(*array) = array
def kw(k:) = k
def kw_rest(**k) = k
def post(*rest, post) = post
def block(&b) = nil
def forwardable(...) = nil
");
assert_optimized_method_hir("rest", expect![[r#"
fn rest:
bb0(v0:ArrayExact):
Return v0
"#]]);
// extra hidden param for the set of specified keywords
assert_optimized_method_hir("kw", expect![[r#"
fn kw:
bb0(v0:BasicObject, v1:BasicObject):
Return v0
"#]]);
assert_optimized_method_hir("kw_rest", expect![[r#"
fn kw_rest:
bb0(v0:BasicObject):
Return v0
"#]]);
assert_optimized_method_hir("block", expect![[r#"
fn block:
bb0(v0:BasicObject):
v2:NilClassExact = Const Value(nil)
Return v2
"#]]);
assert_optimized_method_hir("post", expect![[r#"
fn post:
bb0(v0:ArrayExact, v1:BasicObject):
Return v1
"#]]);
assert_optimized_method_hir("forwardable", expect![[r#"
fn forwardable:
bb0(v0:BasicObject):
v2:NilClassExact = Const Value(nil)
Return v2
"#]]);
}
#[test]