From a97ed55a09420b0031a218035b4aba5fe4a7409d Mon Sep 17 00:00:00 2001 From: yuyi Date: Mon, 11 Jan 2021 03:16:53 +0800 Subject: [PATCH] checker: check for an unknown struct name (fix #8007) (#8010) --- vlib/v/checker/checker.v | 3 +++ vlib/v/checker/tests/unknown_struct_name.out | 6 ++++++ vlib/v/checker/tests/unknown_struct_name.vv | 5 +++++ 3 files changed, 14 insertions(+) create mode 100644 vlib/v/checker/tests/unknown_struct_name.out create mode 100644 vlib/v/checker/tests/unknown_struct_name.vv diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index 71d21280f0..21589f994a 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -511,6 +511,9 @@ pub fn (mut c Checker) struct_init(mut struct_init ast.StructInit) table.Type { struct_init.pos) } } + if type_sym.name.len == 1 && !c.cur_fn.is_generic { + c.error('unknown struct `$type_sym.name`', struct_init.pos) + } match type_sym.kind { .placeholder { c.error('unknown struct: $type_sym.name', struct_init.pos) diff --git a/vlib/v/checker/tests/unknown_struct_name.out b/vlib/v/checker/tests/unknown_struct_name.out new file mode 100644 index 0000000000..d21f02d13e --- /dev/null +++ b/vlib/v/checker/tests/unknown_struct_name.out @@ -0,0 +1,6 @@ +vlib/v/checker/tests/unknown_struct_name.vv:4:7: error: unknown struct `F` + 2 | + 3 | fn main() { + 4 | _ := F{} + | ~~~ + 5 | } diff --git a/vlib/v/checker/tests/unknown_struct_name.vv b/vlib/v/checker/tests/unknown_struct_name.vv new file mode 100644 index 0000000000..52a433018e --- /dev/null +++ b/vlib/v/checker/tests/unknown_struct_name.vv @@ -0,0 +1,5 @@ +module main + +fn main() { + _ := F{} +}