private static void Execute(ISolution solution, IEnumDeclaration enumDeclaration)
        {
            CSharpElementFactory factory = CSharpElementFactory.GetInstance(enumDeclaration.GetPsiModule());
            if (factory == null) {
                return;
            }

            SortEnumMembers(solution, enumDeclaration, factory);
        }
Ejemplo n.º 2
0
 public override void VisitEnumDeclaration(IEnumDeclaration decl)
 {
     Builder.StartPart(new EnumPart(decl, Builder));
     foreach (var memberDecl in decl.EnumMembersEnumerable)
     {
         Builder.AddDeclaredMemberName(memberDecl.DeclaredName);
     }
     Builder.EndPart();
 }
Ejemplo n.º 3
0
 public override void VisitEnumDeclaration(IEnumDeclaration decl, SST context)
 {
     if (!_isAlreadyInsideTypeDeclaration)
     {
         _isAlreadyInsideTypeDeclaration = true;
         base.VisitEnumDeclaration(decl, context);
         _isAlreadyInsideTypeDeclaration = false;
     }
 }
Ejemplo n.º 4
0
        private void AnalyzeEnumDeclaration(IEnumDeclaration source)
        {
            var flags = GetModifiers(source);

            AddOrCreateDeclarationSymbol(SymbolKind.EnumDeclaration, source.Name.Text, flags);

            AnalyzeDecorators(source);

            using (m_currentLocationStack.AutoPush(source.Name.Text))
            {
                foreach (var member in source.Members.AsStructEnumerable())
                {
                    var memberFlags = GetModifiers(member);
                    AddOrCreateDeclarationSymbol(SymbolKind.EnumValueDeclaration, member.Name.Text, memberFlags);

                    AnalyzeDecorators(member);

                    // Technically, enum initializer could have a reference,
                    // but this is not supported in DScript.
                }
            }
        }
Ejemplo n.º 5
0
 /// <inheritdoc />
 public override void VisitEnumDeclaration(IEnumDeclaration node)
 {
     Register(node, node.Flags, DocNodeType.Enum, node.Name.GetText(), base.VisitEnumDeclaration);
 }
 private static void SortEnumMembers(ISolution solution, IEnumDeclaration enumDeclaration,
                                     CSharpElementFactory factory)
 {
     try {
         var enumMembers = new SortedDictionary<string, IEnumMemberDeclaration>();
         foreach (IEnumMemberDeclaration enumMember in enumDeclaration.EnumMemberDeclarations) {
             enumMembers.Add(enumMember.DeclaredName, enumMember);
         }
         IEnumMemberDeclaration firstEnumMember = null;
         foreach (IEnumMemberDeclaration enumMember in enumMembers.Values) {
             firstEnumMember = enumMember;
             break;
         }
         foreach (IEnumMemberDeclaration enumMember in enumMembers.Values) {
             if (enumMember != firstEnumMember) {
                 enumDeclaration.RemoveEnumMemberDeclaration(enumMember);
             }
         }
         IEnumMemberDeclaration lastEnumMember = enumDeclaration.EnumMemberDeclarations[0];
         foreach (IEnumMemberDeclaration enumMember in enumMembers.Values) {
             if (enumMember != firstEnumMember) {
                 IEnumMemberDeclaration newMember = factory.CreateEnumMemberDeclaration(enumMember.DeclaredName);
                 newMember.SetValueExpression(enumMember.ValueExpression);
                 lastEnumMember = enumDeclaration.AddEnumMemberDeclarationAfter(newMember, lastEnumMember);
             }
         }
     }
     catch (Exception err) {
         Exception e = err;
     }
 }
Ejemplo n.º 7
0
 public EnumDeclarationCompiler(IEnumDeclaration enumDeclaration, AbstractILCompilerParams myParams) : base(myParams)
 {
     myEnumDeclaration = enumDeclaration;
     myParams.CreateClass(myEnumDeclaration.DeclaredElement.GetClrName().FullName);
 }