From 71d98717dcdb4a65aad1574f3be45af47147321b Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Fri, 28 Jan 2022 10:27:37 +0200 Subject: [PATCH] checker: small cleanup of commit edc6c9e --- vlib/v/checker/checker.v | 5 +++-- vlib/v/checker/tests/enum_error_module.out | 11 +++++------ vlib/v/checker/tests/enum_error_module.vv | 7 ++----- vlib/v/checker/tests/modules/missing_enum.out | 5 ----- vlib/v/checker/tests/modules/missing_enum/main.v | 12 ------------ 5 files changed, 10 insertions(+), 30 deletions(-) delete mode 100644 vlib/v/checker/tests/modules/missing_enum.out delete mode 100644 vlib/v/checker/tests/modules/missing_enum/main.v diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index 4c752d7d92..f507760f76 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -3708,8 +3708,9 @@ 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 + } + if typ_idx == 0 { + // the actual type is still unknown, produce an error, instead of panic: c.error('unknown enum `$node.enum_name` (type_idx=0)', node.pos) return ast.void_type } diff --git a/vlib/v/checker/tests/enum_error_module.out b/vlib/v/checker/tests/enum_error_module.out index 2986e385d7..0d2badc319 100644 --- a/vlib/v/checker/tests/enum_error_module.out +++ b/vlib/v/checker/tests/enum_error_module.out @@ -1,7 +1,6 @@ -vlib/v/checker/tests/enum_error_module.vv:5:13: error: unknown enum `missing_enum.ColoList` (type_idx=0) +vlib/v/checker/tests/enum_error_module.vv:4:12: error: unknown enum `time.NonExistingEnum` (type_idx=0) + 2 | 3 | fn main() { - 4 | mut c := me.Color{ - 5 | color: me.ColoList.black - | ~~~~~~~~~~~~~~ - 6 | } - 7 | println(c) \ No newline at end of file + 4 | _ := time.NonExistingEnum.black + | ~~~~~~~~~~~~~~~~~~~~~ + 5 | } diff --git a/vlib/v/checker/tests/enum_error_module.vv b/vlib/v/checker/tests/enum_error_module.vv index 0fd48526c7..8cb062a291 100644 --- a/vlib/v/checker/tests/enum_error_module.vv +++ b/vlib/v/checker/tests/enum_error_module.vv @@ -1,8 +1,5 @@ -import missing_enum as me +import time fn main() { - mut c := me.Color{ - color: me.ColoList.black - } - println(c) + _ := time.NonExistingEnum.black } diff --git a/vlib/v/checker/tests/modules/missing_enum.out b/vlib/v/checker/tests/modules/missing_enum.out deleted file mode 100644 index 6a7fe653d5..0000000000 --- a/vlib/v/checker/tests/modules/missing_enum.out +++ /dev/null @@ -1,5 +0,0 @@ -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 deleted file mode 100644 index 22b6d22d85..0000000000 --- a/vlib/v/checker/tests/modules/missing_enum/main.v +++ /dev/null @@ -1,12 +0,0 @@ -module missing_enum - -pub enum ColorList { - red - blue - green - black -} - -pub struct Color { - color ColorList -}