From 157d8e84e55d72e6f21b2c53fd28446ca110c85c Mon Sep 17 00:00:00 2001 From: Swastik Baranwal Date: Mon, 21 Apr 2025 21:29:35 +0530 Subject: [PATCH] checker: check anon struct field valid case (partial fix of #24284) (#24286) --- vlib/v/checker/checker.v | 5 +++++ .../tests/type_alias_struct_invalid_field_naming.out | 6 ++++++ .../checker/tests/type_alias_struct_invalid_field_naming.vv | 4 ++++ 3 files changed, 15 insertions(+) create mode 100644 vlib/v/checker/tests/type_alias_struct_invalid_field_naming.out create mode 100644 vlib/v/checker/tests/type_alias_struct_invalid_field_naming.vv diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index b943e1a1b6..fae73bc28b 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -602,13 +602,18 @@ fn (mut c Checker) alias_type_decl(mut node ast.AliasTypeDecl) { } if parent_typ_sym.info.is_anon { for field in parent_typ_sym.info.fields { + mut is_embed := false field_sym := c.table.sym(field.typ) if field_sym.info is ast.Alias { if c.table.sym(field_sym.info.parent_type).kind != .struct { c.error('cannot embed non-struct `${field_sym.name}`', field.type_pos) + is_embed = true } } + if !is_embed { + c.check_valid_snake_case(field.name, 'field name', field.pos) + } } } } diff --git a/vlib/v/checker/tests/type_alias_struct_invalid_field_naming.out b/vlib/v/checker/tests/type_alias_struct_invalid_field_naming.out new file mode 100644 index 0000000000..4ba096e160 --- /dev/null +++ b/vlib/v/checker/tests/type_alias_struct_invalid_field_naming.out @@ -0,0 +1,6 @@ +vlib/v/checker/tests/type_alias_struct_invalid_field_naming.vv:2:2: error: field name `field_One` cannot contain uppercase letters, use snake_case instead + 1 | type Struct = struct { + 2 | field_One int + | ~~~~~~~~~~~~~ + 3 | field_two int + 4 | } diff --git a/vlib/v/checker/tests/type_alias_struct_invalid_field_naming.vv b/vlib/v/checker/tests/type_alias_struct_invalid_field_naming.vv new file mode 100644 index 0000000000..d7e9a78469 --- /dev/null +++ b/vlib/v/checker/tests/type_alias_struct_invalid_field_naming.vv @@ -0,0 +1,4 @@ +type Struct = struct { + field_One int + field_two int +}