diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index b024c72eaa..4c752d7d92 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -3708,6 +3708,10 @@ pub fn (mut c Checker) enum_val(mut node ast.EnumVal) ast.Type { c.error('unknown enum `$node.enum_name` (type_idx=0)', node.pos) return ast.void_type } + } else { + // if module prefix specified enum name given + c.error('unknown enum `$node.enum_name` (type_idx=0)', node.pos) + return ast.void_type } } mut typ := ast.new_type(typ_idx) diff --git a/vlib/v/checker/tests/enum_error_module.out b/vlib/v/checker/tests/enum_error_module.out new file mode 100644 index 0000000000..2986e385d7 --- /dev/null +++ b/vlib/v/checker/tests/enum_error_module.out @@ -0,0 +1,7 @@ +vlib/v/checker/tests/enum_error_module.vv:5:13: error: unknown enum `missing_enum.ColoList` (type_idx=0) + 3 | fn main() { + 4 | mut c := me.Color{ + 5 | color: me.ColoList.black + | ~~~~~~~~~~~~~~ + 6 | } + 7 | println(c) \ No newline at end of file diff --git a/vlib/v/checker/tests/enum_error_module.vv b/vlib/v/checker/tests/enum_error_module.vv new file mode 100644 index 0000000000..0fd48526c7 --- /dev/null +++ b/vlib/v/checker/tests/enum_error_module.vv @@ -0,0 +1,8 @@ +import missing_enum as me + +fn main() { + mut c := me.Color{ + color: me.ColoList.black + } + println(c) +} diff --git a/vlib/v/checker/tests/modules/missing_enum.out b/vlib/v/checker/tests/modules/missing_enum.out new file mode 100644 index 0000000000..6a7fe653d5 --- /dev/null +++ b/vlib/v/checker/tests/modules/missing_enum.out @@ -0,0 +1,5 @@ +vlib/v/checker/tests/modules/missing_enum/main.v:1:1: error: project must include a `main` module or be a shared library (compile with `v -shared`) + 1 | module missing_enum + | ^ + 2 | + 3 | pub enum ColorList { diff --git a/vlib/v/checker/tests/modules/missing_enum/main.v b/vlib/v/checker/tests/modules/missing_enum/main.v new file mode 100644 index 0000000000..22b6d22d85 --- /dev/null +++ b/vlib/v/checker/tests/modules/missing_enum/main.v @@ -0,0 +1,12 @@ +module missing_enum + +pub enum ColorList { + red + blue + green + black +} + +pub struct Color { + color ColorList +}