diff --git a/vlib/v/ast/ast.v b/vlib/v/ast/ast.v index 27dbd12faf..39107d66ed 100644 --- a/vlib/v/ast/ast.v +++ b/vlib/v/ast/ast.v @@ -686,6 +686,7 @@ pub: is_multi_allowed bool comments []Comment // enum Abc { /* comments */ ... } fields []EnumField + attrs []table.Attr pos token.Position } diff --git a/vlib/v/fmt/fmt.v b/vlib/v/fmt/fmt.v index 4ccb7b29e3..b1b97c5047 100644 --- a/vlib/v/fmt/fmt.v +++ b/vlib/v/fmt/fmt.v @@ -319,6 +319,7 @@ pub fn (mut f Fmt) stmt(node ast.Stmt) { f.writeln('}') } ast.EnumDecl { + f.attrs(it.attrs) if it.is_pub { f.write('pub ') } diff --git a/vlib/v/fmt/tests/attrs_keep.vv b/vlib/v/fmt/tests/attrs_keep.vv index af9d1b3981..57788c1046 100644 --- a/vlib/v/fmt/tests/attrs_keep.vv +++ b/vlib/v/fmt/tests/attrs_keep.vv @@ -14,3 +14,9 @@ struct User { typ int [json: 'type'] pets string [raw; json: 'pet_animals'] } + +[_allow_multiple_values] +enum Example { + value1 = 1 + value1_again = 1 +} diff --git a/vlib/v/parser/parser.v b/vlib/v/parser/parser.v index 3b42f60a21..212fde68af 100644 --- a/vlib/v/parser/parser.v +++ b/vlib/v/parser/parser.v @@ -1804,6 +1804,7 @@ $pubfn (mut e $enum_name) toggle(flag $enum_name) { unsafe{ *e = int(*e) ^ ( is_multi_allowed: is_multi_allowed fields: fields pos: start_pos.extend(end_pos) + attrs: p.attrs comments: enum_decl_comments } }