diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index b0f2e4fe4e..307e2f051f 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -3873,7 +3873,8 @@ pub fn (mut c Checker) index_expr(mut node ast.IndexExpr) ast.Type { } } if typ_sym.kind !in [.array, .array_fixed, .string, .map] && !typ.is_ptr() - && typ !in [ast.byteptr_type, ast.charptr_type] && !typ.has_flag(.variadic) { + && typ !in [ast.byteptr_type, ast.charptr_type] && !typ.has_flag(.variadic) + && typ != ast.void_type { c.error('type `$typ_sym.name` does not support indexing', node.pos) } if typ.has_flag(.optional) { diff --git a/vlib/v/checker/if.v b/vlib/v/checker/if.v index 05648fb399..72f80205e4 100644 --- a/vlib/v/checker/if.v +++ b/vlib/v/checker/if.v @@ -48,7 +48,8 @@ pub fn (mut c Checker) if_expr(mut node ast.IfExpr) ast.Type { c.expected_type = ast.bool_type cond_typ := c.unwrap_generic(c.expr(branch.cond)) if (cond_typ.idx() != ast.bool_type_idx || cond_typ.has_flag(.optional)) - && !c.pref.translated && !c.file.is_translated { + && !c.pref.translated && !c.file.is_translated + && cond_typ.idx() != ast.void_type_idx { c.error('non-bool type `${c.table.type_to_str(cond_typ)}` used as if condition', branch.cond.pos()) }