private static void WriteEnum(IndentedTextWriter itw, CCodeWriterText c, INamedTypeSymbol namedTypeSymbol) { itw.WriteLine(); itw.Write("enum class "); c.WriteTypeName(namedTypeSymbol, false, true); itw.Write(" : "); c.WriteType(namedTypeSymbol.EnumUnderlyingType); c.NewLine(); c.OpenBlock(); var constantValueTypeDiscriminator = namedTypeSymbol.EnumUnderlyingType.SpecialType.GetDiscriminator(); var any = false; foreach (var constValue in namedTypeSymbol.GetMembers().OfType <IFieldSymbol>().Where(f => f.IsConst)) { if (any) { c.TextSpan(","); c.WhiteSpace(); } c.TextSpan("c_"); c.WriteName(constValue); if (constValue.ConstantValue != null) { c.TextSpan(" = "); new Literal { Value = ConstantValue.Create(constValue.ConstantValue, constantValueTypeDiscriminator) } .WriteTo(c); } any = true; } c.EndBlockWithoutNewLine(); c.EndStatement(); }