/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Analyzers/VisualBasic/CodeFixes/UseObjectInitializer/UseInitializerHelpers.vb
45 строк
3 KB
CyrusNajmabadi
Update src/Analyzers/VisualBasic/CodeFixes/UseObjectInitializer/UseInitializerHelpers.vb
08 фев 2022, 22:47
Не верифицирован
08 фев 2022, 22:47
0b07e74
Код
Авторство
О чём код?
' 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.PooledObjects Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Namespace Microsoft.CodeAnalysis.VisualBasic.UseObjectInitializer Friend Module UseInitializerHelpers Public Function GetNewObjectCreation( objectCreation As ObjectCreationExpressionSyntax, initializer As ObjectCreationInitializerSyntax) As ObjectCreationExpressionSyntax If objectCreation.ArgumentList IsNot Nothing AndAlso objectCreation.ArgumentList.Arguments.Count = 0 Then objectCreation = objectCreation.WithType(objectCreation.Type.WithTrailingTrivia(objectCreation.ArgumentList.GetTrailingTrivia())). WithArgumentList(Nothing) End If Return objectCreation.WithoutTrailingTrivia(). WithInitializer(initializer). WithTrailingTrivia(objectCreation.GetTrailingTrivia()) End Function Public Sub AddExistingItems(objectCreation As ObjectCreationExpressionSyntax, nodesAndTokens As ArrayBuilder(Of SyntaxNodeOrToken)) If TypeOf objectCreation.Initializer Is ObjectMemberInitializerSyntax Then Dim memberInitializer = DirectCast(objectCreation.Initializer, ObjectMemberInitializerSyntax) nodesAndTokens.AddRange(memberInitializer.Initializers.GetWithSeparators()) ElseIf TypeOf objectCreation.Initializer Is ObjectCOllectioninitializersyntax Then Dim collectionInitializer = DirectCast(objectCreation.Initializer, ObjectCollectionInitializerSyntax) nodesAndTokens.AddRange(collectionInitializer.Initializer.Initializers.GetWithSeparators()) End If ' If we have an odd number of elements already, add a comma at the end so that we can add the rest of the ' items afterwards without a syntax issue. If nodesAndTokens.Count Mod 2 = 1 Then Dim last = nodesAndTokens.Last() nodesAndTokens.RemoveLast() nodesAndTokens.Add(last.WithTrailingTrivia()) nodesAndTokens.Add(SyntaxFactory.Token(SyntaxKind.CommaToken).WithTrailingTrivia(last.GetTrailingTrivia())) End If End Sub End Module End Namespace