private static void Execute(ISolution solution, IEnumDeclaration enumDeclaration) { CSharpElementFactory factory = CSharpElementFactory.GetInstance(enumDeclaration.GetPsiModule()); if (factory == null) { return; } SortEnumMembers(solution, enumDeclaration, factory); }
public override void VisitEnumDeclaration(IEnumDeclaration decl) { Builder.StartPart(new EnumPart(decl, Builder)); foreach (var memberDecl in decl.EnumMembersEnumerable) { Builder.AddDeclaredMemberName(memberDecl.DeclaredName); } Builder.EndPart(); }
public override void VisitEnumDeclaration(IEnumDeclaration decl, SST context) { if (!_isAlreadyInsideTypeDeclaration) { _isAlreadyInsideTypeDeclaration = true; base.VisitEnumDeclaration(decl, context); _isAlreadyInsideTypeDeclaration = false; } }
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. } } }
/// <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; } }
public EnumDeclarationCompiler(IEnumDeclaration enumDeclaration, AbstractILCompilerParams myParams) : base(myParams) { myEnumDeclaration = enumDeclaration; myParams.CreateClass(myEnumDeclaration.DeclaredElement.GetClrName().FullName); }