Skip to content

Commit ec7e058

Browse files
authored
checker: fix comptime ident checking on defer stmt (fix #20719) (#20723)
1 parent abd2b64 commit ec7e058

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

vlib/v/checker/checker.v

+2-1
Original file line numberDiff line numberDiff line change
@@ -2036,7 +2036,8 @@ fn (mut c Checker) stmt(mut node ast.Stmt) {
20362036
for i, ident in node.defer_vars {
20372037
mut id := ident
20382038
if mut id.info is ast.IdentVar {
2039-
if id.comptime && id.name in ast.valid_comptime_not_user_defined {
2039+
if id.comptime && (id.tok_kind == .question
2040+
|| id.name in ast.valid_comptime_not_user_defined) {
20402041
node.defer_vars[i] = ast.Ident{
20412042
scope: unsafe { nil }
20422043
name: ''

vlib/v/tests/defer_if_comptime_test.v

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
fn test_main() {
2+
defer {
3+
$if foo ? {
4+
assert false
5+
} $else {
6+
assert true
7+
}
8+
}
9+
}

0 commit comments

Comments
 (0)