diff --git a/vlib/v/checker/fn.v b/vlib/v/checker/fn.v index 8084769fd6..d81f800311 100644 --- a/vlib/v/checker/fn.v +++ b/vlib/v/checker/fn.v @@ -1154,6 +1154,7 @@ fn (mut c Checker) fn_call(mut node ast.CallExpr, mut continue_check &bool) ast. } if idx == 0 { c.error('unknown enum `${enum_name}`', node.pos) + continue_check = false return ast.void_type } diff --git a/vlib/v/checker/tests/unkown_enum_call_err.out b/vlib/v/checker/tests/unkown_enum_call_err.out new file mode 100644 index 0000000000..12f163c23d --- /dev/null +++ b/vlib/v/checker/tests/unkown_enum_call_err.out @@ -0,0 +1,18 @@ +vlib/v/checker/tests/unkown_enum_call_err.vv:8:9: error: unknown enum `HashFnX` + 6 | + 7 | fn test_main() { + 8 | assert HashFnX.from_string('sha256') or { HashFn.sha1 } == HashFn.sha256 + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 9 | } +vlib/v/checker/tests/unkown_enum_call_err.vv:8:39: error: unexpected `or` block, the function `HashFnX__static__from_string` does not return an Option or a Result + 6 | + 7 | fn test_main() { + 8 | assert HashFnX.from_string('sha256') or { HashFn.sha1 } == HashFn.sha256 + | ~~~~~~~~~~~~~~~~~~ + 9 | } +vlib/v/checker/tests/unkown_enum_call_err.vv:8:9: error: assert can be used only with `bool` expressions, but found `void` instead + 6 | + 7 | fn test_main() { + 8 | assert HashFnX.from_string('sha256') or { HashFn.sha1 } == HashFn.sha256 + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 9 | } diff --git a/vlib/v/checker/tests/unkown_enum_call_err.vv b/vlib/v/checker/tests/unkown_enum_call_err.vv new file mode 100644 index 0000000000..bb937701bf --- /dev/null +++ b/vlib/v/checker/tests/unkown_enum_call_err.vv @@ -0,0 +1,9 @@ +enum HashFn { + sha1 + sha256 + sha512 +} + +fn test_main() { + assert HashFnX.from_string('sha256') or { HashFn.sha1 } == HashFn.sha256 +}