File: src\Analyzers\VisualBasic\CodeFixes\GenerateParameterizedMember\VisualBasicCommonGenerationServiceMethods.vb
Web Access
Project: src\src\CodeStyle\VisualBasic\CodeFixes\Microsoft.CodeAnalysis.VisualBasic.CodeStyle.Fixes.vbproj (Microsoft.CodeAnalysis.VisualBasic.CodeStyle.Fixes)
' 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
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
 
Namespace Microsoft.CodeAnalysis.VisualBasic.GenerateMember.GenerateMethod
    Friend Class VisualBasicCommonGenerationServiceMethods
        Public Shared Function AreSpecialOptionsActive(semanticModel As SemanticModel) As Boolean
            ' Check to see if option strict is on.  if that is the case we will want to still 
            ' generate methods even if they overshadow existing ones so the user has a partial fix.
 
            Dim root = semanticModel.SyntaxTree.GetRoot
            Dim optionStatement = CType(root.ChildNodes().FirstOrDefault(Function(n) n.IsKind(SyntaxKind.OptionStatement)), OptionStatementSyntax)
            If optionStatement?.ValueKeyword.IsKind(SyntaxKind.OnKeyword) Then
                Return True
            End If
 
            Dim options = TryCast(semanticModel.Compilation.Options, VisualBasicCompilationOptions)
            If options IsNot Nothing Then
                Return options.OptionStrict = OptionStrict.On
            End If
 
            Return False
        End Function
 
        Public Shared Function IsValidSymbol(symbol As ISymbol, semanticModel As SemanticModel) As Boolean
            ' We want to still generate a method even if this is a Namespace or NamedType symbol because unknown method calls without
            ' parenthesis are bound as namespaces or named types by the VB compiler.
            Return symbol.Kind = SymbolKind.Namespace Or symbol.Kind = SymbolKind.NamedType Or AreSpecialOptionsActive(semanticModel)
        End Function
    End Class
End Namespace