File tree Expand file tree Collapse file tree 2 files changed +22
-3
lines changed Expand file tree Collapse file tree 2 files changed +22
-3
lines changed Original file line number Diff line number Diff line change @@ -278,6 +278,8 @@ fn (mut g Gen) comptime_if(node ast.IfExpr) {
278
278
line := if node.is_expr {
279
279
stmt_str := g.go_before_stmt (0 )
280
280
g.write (util.tabs (g.indent))
281
+ styp := g.typ (node.typ)
282
+ g.writeln ('${styp} ${tmp_var} ;' )
281
283
stmt_str.trim_space ()
282
284
} else {
283
285
''
@@ -320,21 +322,27 @@ fn (mut g Gen) comptime_if(node ast.IfExpr) {
320
322
len := branch.stmts.len
321
323
if len > 0 {
322
324
last := branch.stmts.last () as ast.ExprStmt
323
- styp := g.typ (node.typ)
324
325
if len > 1 {
325
326
g.indent++
326
- g.writeln ('${styp} ${tmp_var} ;' )
327
327
g.writeln ('{' )
328
328
g.stmts (branch.stmts[..len - 1 ])
329
+ g.set_current_pos_as_last_stmt_pos ()
330
+ prev_skip_stmt_pos := g.skip_stmt_pos
331
+ g.skip_stmt_pos = true
329
332
g.write ('\t ${tmp_var} = ' )
330
333
g.stmt (last)
334
+ g.skip_stmt_pos = prev_skip_stmt_pos
331
335
g.writeln (';' )
332
336
g.writeln ('}' )
333
337
g.indent--
334
338
} else {
335
339
g.indent++
336
- g.write ('${styp} ${tmp_var} = ' )
340
+ g.set_current_pos_as_last_stmt_pos ()
341
+ prev_skip_stmt_pos := g.skip_stmt_pos
342
+ g.skip_stmt_pos = true
343
+ g.write ('${tmp_var} = ' )
337
344
g.stmt (last)
345
+ g.skip_stmt_pos = prev_skip_stmt_pos
338
346
g.writeln (';' )
339
347
g.indent--
340
348
}
Original file line number Diff line number Diff line change
1
+ import os
2
+
3
+ fn test_comptime_if_expr_with_result_call () {
4
+ config_dir := $if windows {
5
+ os.home_dir ()
6
+ } $else {
7
+ os.config_dir () or { os.home_dir () }
8
+ }
9
+ println (config_dir)
10
+ assert true
11
+ }
You can’t perform that action at this time.
0 commit comments