/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Analyzers/VisualBasic/CodeFixes/AddExplicitCast/ArgumentFixer.vb
46 строк
2 KB
Cyrus Najmabadi
Share code and add test
02 ноя 2022, 21:09
02 ноя 2022, 21:09
9af414e
Код
Авторство
О чём код?
' 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.CodeFixes.AddExplicitCast Partial Friend NotInheritable Class VisualBasicAddExplicitCastCodeFixProvider Private Class ArgumentFixer Inherits Fixer(Of ArgumentSyntax, ArgumentListSyntax, SyntaxNode) Protected Overrides Function GetExpressionOfArgument(argument As ArgumentSyntax) As ExpressionSyntax Return argument.GetArgumentExpression() End Function Protected Overrides Function GenerateNewArgument(oldArgument As ArgumentSyntax, conversionType As ITypeSymbol) As ArgumentSyntax Select Case oldArgument.Kind Case SyntaxKind.SimpleArgument Dim simpleArgument = DirectCast(oldArgument, SimpleArgumentSyntax) Return simpleArgument.WithExpression( simpleArgument.GetExpression().Cast(conversionType, Nothing)) Case Else Return oldArgument End Select End Function Protected Overrides Function GenerateNewArgumentList(oldArgumentList As ArgumentListSyntax, newArguments As ArrayBuilder(Of ArgumentSyntax)) As ArgumentListSyntax Return oldArgumentList.WithArguments(SyntaxFactory.SeparatedList(newArguments)) End Function Protected Overrides Function GetArgumentsOfArgumentList(argumentList As ArgumentListSyntax) As SeparatedSyntaxList(Of ArgumentSyntax) Return argumentList.Arguments End Function Protected Overrides Function GetSpeculativeSymbolInfo(semanticModel As SemanticModel, newArgumentList As ArgumentListSyntax) As SymbolInfo Dim parent = newArgumentList.Parent If TypeOf parent Is AttributeSyntax Then Return semanticModel.GetSpeculativeSymbolInfo(parent.SpanStart, DirectCast(parent, AttributeSyntax)) Else Return semanticModel.GetSpeculativeSymbolInfo(parent.SpanStart, parent, SpeculativeBindingOption.BindAsExpression) End If End Function End Class End Class End Namespace