Skip to content

Commit ddf3686

Browse files
mbouazizclaude
andcommitted
Add AllowTrackedCall compiler test
Tests @allow_tracked_call with two variants: - trackedCaller1: wraps untracked call in an untracked lambda - trackedCaller2: passes untracked function directly Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent a13e066 commit ddf3686

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
OKOK
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
module TypecheckingAllowTrackedCall;
2+
// @allow_tracked_call lets a tracked function call an untracked function
3+
4+
@allow_tracked_call
5+
untracked fun unsafeUntrackedCall<T>(f: untracked () -> T): T {
6+
f()
7+
}
8+
9+
untracked fun sideEffect(): String {
10+
"OK"
11+
}
12+
13+
// trackedCaller1: wraps sideEffect() in an untracked lambda
14+
fun trackedCaller1(): String {
15+
unsafeUntrackedCall(untracked () -> sideEffect())
16+
}
17+
18+
// trackedCaller2: calls sideEffect() directly via unsafeUntrackedCall
19+
fun trackedCaller2(): String {
20+
unsafeUntrackedCall(sideEffect)
21+
}
22+
23+
untracked fun main(): void {
24+
print_raw(trackedCaller1());
25+
print_raw(trackedCaller2());
26+
}
27+
module end;

0 commit comments

Comments
 (0)