/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/VisualBasic/Portable/Compilation/LexicalOrderSymbolComparer.vb
47 строк
2 KB
Jonathon Marolf
update headers
23 янв 2020, 04:01
Не верифицирован
23 янв 2020, 04:01
91571a3
Код
Авторство
О чём код?
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports Microsoft.CodeAnalysis.VisualBasic.Symbols Namespace Microsoft.CodeAnalysis.VisualBasic ''' <summary> ''' This is an implementation of a special symbol comparer, which is supposed to be used for ''' sorting original definition symbols (explicitly or explicitly declared in source within the same ''' container) in lexical order of their declarations. It will not work on anything that uses non-source locations. ''' </summary> Friend Class LexicalOrderSymbolComparer Implements IComparer(Of Symbol) Public Shared ReadOnly Instance As New LexicalOrderSymbolComparer() Private Sub New() End Sub Public Function Compare(x As Symbol, y As Symbol) As Integer Implements IComparer(Of Symbol).Compare Dim comparison As Integer If x Is y Then Return 0 End If Dim xSortKey = x.GetLexicalSortKey() Dim ySortKey = y.GetLexicalSortKey() comparison = LexicalSortKey.Compare(xSortKey, ySortKey) If comparison <> 0 Then Return comparison End If comparison = DirectCast(x, ISymbol).Kind.ToSortOrder() - DirectCast(y, ISymbol).Kind.ToSortOrder() If comparison <> 0 Then Return comparison End If comparison = IdentifierComparison.Compare(x.Name, y.Name) Debug.Assert(comparison <> 0) Return comparison End Function End Class End Namespace