private static Task <Document> SortByNameAsync( Document document, EnumDeclarationSyntax enumDeclaration, SeparatedSyntaxListSelection <EnumMemberDeclarationSyntax> selectedMembers, CancellationToken cancellationToken) { IEnumerable <EnumMemberDeclarationSyntax> sorted = selectedMembers.OrderBy(f => f, EnumMemberDeclarationNameComparer.Instance); SeparatedSyntaxList <EnumMemberDeclarationSyntax> newMembers = enumDeclaration .Members .ReplaceRange(selectedMembers.FirstIndex, selectedMembers.Count, sorted); MemberDeclarationSyntax newNode = enumDeclaration.WithMembers(newMembers); return(document.ReplaceNodeAsync(enumDeclaration, newNode, cancellationToken)); }
private static async Task <Document> SortByValueAsync( Document document, EnumDeclarationSyntax enumDeclaration, SeparatedSyntaxListSelection <EnumMemberDeclarationSyntax> selectedMembers, CancellationToken cancellationToken) { SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); SpecialType enumSpecialType = semanticModel.GetDeclaredSymbol(enumDeclaration, cancellationToken).EnumUnderlyingType.SpecialType; var comparer = new EnumMemberDeclarationValueComparer(EnumValueComparer.GetInstance(enumSpecialType), semanticModel, cancellationToken); IEnumerable <EnumMemberDeclarationSyntax> sorted = selectedMembers.OrderBy(f => f, comparer); SeparatedSyntaxList <EnumMemberDeclarationSyntax> newMembers = enumDeclaration .Members .ReplaceRange(selectedMembers.FirstIndex, selectedMembers.Count, sorted); MemberDeclarationSyntax newNode = enumDeclaration.WithMembers(newMembers); return(await document.ReplaceNodeAsync(enumDeclaration, newNode, cancellationToken).ConfigureAwait(false)); }