Inheritance: ICSharpCode.NRefactory.CSharp.DepthFirstAstVisitor
Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        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();
            }
        }