From 670820cc596c2ec93561dd01e615821b69086f8d Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Wed, 27 May 2020 16:00:00 +0200 Subject: [PATCH] parser: do not allow 1 char struct names --- vlib/v/checker/tests/struct_pub_field.out | 2 +- vlib/v/checker/tests/struct_pub_field.vv | 4 ++-- vlib/v/parser/struct.v | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/vlib/v/checker/tests/struct_pub_field.out b/vlib/v/checker/tests/struct_pub_field.out index f7e4d056cf..9a7fefc9e8 100644 --- a/vlib/v/checker/tests/struct_pub_field.out +++ b/vlib/v/checker/tests/struct_pub_field.out @@ -1,4 +1,4 @@ -vlib/v/checker/tests/struct_pub_field.v:9:4: error: field `i` of struct `A` is immutable +vlib/v/checker/tests/struct_pub_field.v:9:4: error: field `i` of struct `Foo` is immutable 7 | i: 1 8 | } 9 | a.i = 2 diff --git a/vlib/v/checker/tests/struct_pub_field.vv b/vlib/v/checker/tests/struct_pub_field.vv index df9f190061..1f104cac14 100644 --- a/vlib/v/checker/tests/struct_pub_field.vv +++ b/vlib/v/checker/tests/struct_pub_field.vv @@ -1,9 +1,9 @@ -struct A { +struct Foo { i int } fn main() { - a := A{ + a := Foo{ i: 1 } a.i = 2 diff --git a/vlib/v/parser/struct.v b/vlib/v/parser/struct.v index 7df5732219..f83e50c4c8 100644 --- a/vlib/v/parser/struct.v +++ b/vlib/v/parser/struct.v @@ -41,6 +41,9 @@ fn (mut p Parser) struct_decl() ast.StructDecl { if language == .v && p.mod != 'builtin' && name.len > 0 && !name[0].is_capital() { p.error_with_pos('struct name `$name` must begin with capital letter', end_pos) } + if name.len == 1 { + p.error_with_pos('struct names must have more than one character', end_pos) + } // println('struct decl $name') mut ast_fields := []ast.StructField{} mut fields := []table.Field{}