From 789912238f575734365526d1e533d44d6b6e54e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20D=C3=A4schle?= Date: Tue, 24 Nov 2020 12:53:39 +0100 Subject: [PATCH] gen: generate typedef first on sum types (#6930) --- vlib/v/gen/cgen.v | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index f770ad8b15..09dad84ec6 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -4652,19 +4652,20 @@ fn (mut g Gen) write_types(types []table.TypeSymbol) { g.type_definitions.writeln('') } table.UnionSumType { + g.typedefs.writeln('typedef struct $name $name;') g.type_definitions.writeln('') g.type_definitions.writeln('// Union sum type $name = ') for variant in it.variants { g.type_definitions.writeln('// | ${variant:4d} = ${g.typ(variant.idx()):-20s}') } - g.type_definitions.writeln('typedef struct {') + g.type_definitions.writeln('struct $name {') g.type_definitions.writeln(' union {') for variant in it.variants { g.type_definitions.writeln(' ${g.typ(variant.to_ptr())} _$variant.idx();') } g.type_definitions.writeln(' };') g.type_definitions.writeln(' int typ;') - g.type_definitions.writeln('} $name;') + g.type_definitions.writeln('};') g.type_definitions.writeln('') } table.ArrayFixed {