private void ConvertEnumToInts() { UpdateSyntaxTree(); var enumVisitor = new MinifyEnumsAstVisitor(); CompileAndAcceptVisitor(enumVisitor); var members = enumVisitor.EnumMembers; foreach (var member in members) { var enumTypeRefs = GetResolvedNodes(ResolveResultType.Type, member.Key); foreach (var enumMember in member.Value) { var initExpr = ((EnumMemberDeclaration)enumMember.Node).Initializer; var enumMemberRefs = GetResolvedNodes(ResolveResultType.Member, enumMember.Node); foreach (var node in enumMemberRefs) { if (!(node is EntityDeclaration)) { node.ReplaceWith(initExpr.Clone()); } } } foreach (var typeRef in enumTypeRefs) { if (typeRef is SimpleType) { typeRef.ReplaceWith(new PrimitiveType("int")); } } member.Key.Remove(); } }
private void ConvertEnumToInts() { UpdateSyntaxTree(); var enumVisitor = new MinifyEnumsAstVisitor(); CompileAndAcceptVisitor(enumVisitor); var members = enumVisitor.EnumMembers; foreach (var member in members) { var enumTypeRefs = GetResolvedNodes(ResolveResultType.Type, member.Key); int currentEnumValue = 0; foreach (var enumMember in member.Value) { Expression initExpr = ((EnumMemberDeclaration)enumMember.Node).Initializer; if (initExpr is PrimitiveExpression) { int.TryParse(((PrimitiveExpression)initExpr).Value.ToString(), out currentEnumValue); } var enumMemberRefs = GetResolvedNodes(ResolveResultType.Member, enumMember.Node); foreach (var node in enumMemberRefs) { if (!(node is EntityDeclaration)) { node.ReplaceWith(new PrimitiveExpression(currentEnumValue)); } } currentEnumValue++; } foreach (var typeRef in enumTypeRefs) { if (typeRef is SimpleType) { typeRef.ReplaceWith(new PrimitiveType("int")); } } member.Key.Remove(); } }
private void ConvertEnumToInts() { UpdateSyntaxTree(); var enumVisitor = new MinifyEnumsAstVisitor(); CompileAndAcceptVisitor(enumVisitor); var members = enumVisitor.EnumMembers; foreach (var member in members) { var enumTypeRefs = GetResolvedNodes(ResolveResultType.Type, member.Key); foreach (var enumMember in member.Value) { var initExpr = ((EnumMemberDeclaration)enumMember.Node).Initializer; var enumMemberRefs = GetResolvedNodes(ResolveResultType.Member, enumMember.Node); foreach (var node in enumMemberRefs) { if (!(node is EntityDeclaration)) node.ReplaceWith(initExpr.Clone()); } } foreach (var typeRef in enumTypeRefs) if (typeRef is SimpleType) typeRef.ReplaceWith(new PrimitiveType("int")); member.Key.Remove(); } }