diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index 9ec2f4f804..380edbff32 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -4256,9 +4256,10 @@ fn (mut c Checker) ident(mut node ast.Ident) ast.Type { if typ == 0 { old_c_mod := c.mod c.mod = obj.mod + inside_const := c.inside_const c.inside_const = true typ = c.expr(mut obj.expr) - c.inside_const = false + c.inside_const = inside_const c.mod = old_c_mod if mut obj.expr is ast.CallExpr { diff --git a/vlib/v/tests/consts/const_propagate_result_test.v b/vlib/v/tests/consts/const_propagate_result_test.v new file mode 100644 index 0000000000..58170c9312 --- /dev/null +++ b/vlib/v/tests/consts/const_propagate_result_test.v @@ -0,0 +1,10 @@ +const constant = 5 +const other = init_const(constant)! + +fn test_main() { + assert other == 5 +} + +fn init_const(c int) !int { + return c +}