| File: Completion\Providers\ContextVariableArgumentProvider.vb | Web Access |
| Project: src\roslyn\src\Features\VisualBasic\Portable\Microsoft.CodeAnalysis.VisualBasic.Features.vbproj (Microsoft.CodeAnalysis.VisualBasic.Features) |
' 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 System.Composition Imports System.Threading Imports Microsoft.CodeAnalysis.Completion Imports Microsoft.CodeAnalysis.Host.Mef Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers <ExportArgumentProvider(NameOf(ContextVariableArgumentProvider), LanguageNames.VisualBasic)> <ExtensionOrder(After:=NameOf(FirstBuiltInArgumentProvider))> <[Shared]> Friend Class ContextVariableArgumentProvider Inherits AbstractContextVariableArgumentProvider <ImportingConstructor> <Obsolete(MefConstruction.ImportingConstructorMessage, True)> Public Sub New() End Sub Protected Overrides ReadOnly Property ThisOrMeKeyword As String Get Return SyntaxFacts.GetText(SyntaxKind.MeKeyword) End Get End Property Protected Overrides Function IsInstanceContext(syntaxTree As SyntaxTree, targetToken As SyntaxToken, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean ' Uses logic from MeKeywordRecommender, restricted by knowledge that this is an invocation within an ' expression If targetToken.GetInnermostDeclarationContext().IsKind(SyntaxKind.ClassBlock, SyntaxKind.StructureBlock) Then If targetToken.GetContainingMemberBlockBegin().TypeSwitch( Function(methodBase As MethodBaseSyntax) Not methodBase.Modifiers.Any(SyntaxKind.SharedKeyword), Function(propertyStatement As PropertyStatementSyntax) Not propertyStatement.Modifiers.Any(SyntaxKind.SharedKeyword), Function(eventStatement As EventStatementSyntax) Not eventStatement.Modifiers.Any(SyntaxKind.SharedKeyword)) Then Return True End If Dim containingMember = targetToken.GetContainingMember() If TypeOf containingMember Is FieldDeclarationSyntax Then Dim fieldDecl = DirectCast(containingMember, FieldDeclarationSyntax) If Not fieldDecl.Modifiers.Any(SyntaxKind.SharedKeyword) Then Return True End If End If End If Return False End Function End Class End Namespace