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 +}