Skip to content

Commit 157d8e8

Browse files
authored
checker: check anon struct field valid case (partial fix of #24284) (#24286)
1 parent 5ac1e14 commit 157d8e8

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

vlib/v/checker/checker.v

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,13 +602,18 @@ fn (mut c Checker) alias_type_decl(mut node ast.AliasTypeDecl) {
602602
}
603603
if parent_typ_sym.info.is_anon {
604604
for field in parent_typ_sym.info.fields {
605+
mut is_embed := false
605606
field_sym := c.table.sym(field.typ)
606607
if field_sym.info is ast.Alias {
607608
if c.table.sym(field_sym.info.parent_type).kind != .struct {
608609
c.error('cannot embed non-struct `${field_sym.name}`',
609610
field.type_pos)
611+
is_embed = true
610612
}
611613
}
614+
if !is_embed {
615+
c.check_valid_snake_case(field.name, 'field name', field.pos)
616+
}
612617
}
613618
}
614619
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
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
2+
1 | type Struct = struct {
3+
2 | field_One int
4+
| ~~~~~~~~~~~~~
5+
3 | field_two int
6+
4 | }
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
type Struct = struct {
2+
field_One int
3+
field_two int
4+
}

0 commit comments

Comments
 (0)