Skip to content

Commit d973244

Browse files
He-PinCopilot
andauthored
Update sjsonnet/test/src/sjsonnet/TailCallOptimizationTests.scala
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent cc44c7b commit d973244

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

sjsonnet/test/src/sjsonnet/TailCallOptimizationTests.scala

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,22 @@ object TailCallOptimizationTests extends TestSuite {
131131
) ==> ujson.Arr(ujson.Num(0), ujson.Num(2), ujson.Num(4), ujson.Num(6), ujson.Num(8))
132132
}
133133

134+
test("tailstrictBuiltinFilter") {
135+
// Verify that a builtin using the evalRhs/scope-reuse fast path (std.filter)
136+
// correctly resolves TailCall produced by a user callback that uses tailstrict.
137+
eval(
138+
"""
139+
|std.filter(
140+
| function(x)
141+
| local f(n) =
142+
| if n <= 0 then true
143+
| else f(n - 1) tailstrict;
144+
| f(1000),
145+
| [1]
146+
|)
147+
|""".stripMargin
148+
) ==> ujson.Arr(ujson.Num(1))
149+
}
134150
test("tailstrictZeroArgs") {
135151
// Apply0: zero-argument tailstrict call
136152
eval(

0 commit comments

Comments
 (0)