File: Microsoft.CodeQuality.Analyzers\QualityGuidelines\BasicUseLiteralsWhereAppropriate.Fixer.vb
Web Access
Project: ..\..\..\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers\Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers.vbproj (Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers)
' Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the MIT license.  See License.txt in the project root for license information.
 
Imports System.Composition
Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.CodeFixes
Imports Microsoft.CodeAnalysis.VisualBasic
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports Microsoft.CodeQuality.Analyzers.QualityGuidelines
 
Namespace Microsoft.CodeQuality.VisualBasic.Analyzers.QualityGuidelines
    ''' <summary>
    ''' CA1802: Use literals where appropriate
    ''' </summary>
    <ExportCodeFixProvider(LanguageNames.VisualBasic), [Shared]>
    Public NotInheritable Class BasicUseLiteralsWhereAppropriateFixer
        Inherits UseLiteralsWhereAppropriateFixer
 
        Protected Overrides Function GetFieldDeclaration(syntaxNode As SyntaxNode) As SyntaxNode
            While syntaxNode IsNot Nothing AndAlso Not (TypeOf syntaxNode Is FieldDeclarationSyntax)
                syntaxNode = syntaxNode.Parent
            End While
 
            Dim field = DirectCast(syntaxNode, FieldDeclarationSyntax)
 
            ' Multiple declarators are not supported, as one of them may not be constant.
            Return If(field IsNot Nothing AndAlso field.Declarators.Count > 1, Nothing, field)
        End Function
 
        Protected Overrides Function IsStaticKeyword(syntaxToken As SyntaxToken) As Boolean
            Return syntaxToken.IsKind(SyntaxKind.SharedKeyword)
        End Function
 
        Protected Overrides Function IsReadonlyKeyword(syntaxToken As SyntaxToken) As Boolean
            Return syntaxToken.IsKind(SyntaxKind.ReadOnlyKeyword)
        End Function
 
        Protected Overrides Function GetConstKeywordToken() As SyntaxToken
            Return SyntaxFactory.Token(SyntaxKind.ConstKeyword)
        End Function
 
        Protected Overrides Function GetModifiers(fieldSyntax As SyntaxNode) As SyntaxTokenList
            Dim field = DirectCast(fieldSyntax, FieldDeclarationSyntax)
            Return field.Modifiers
        End Function
 
        Protected Overrides Function WithModifiers(fieldSyntax As SyntaxNode, modifiers As SyntaxTokenList) As SyntaxNode
            Dim field = DirectCast(fieldSyntax, FieldDeclarationSyntax)
            Return field.WithModifiers(modifiers)
        End Function
    End Class
End Namespace