Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public override async Task ProvideCompletionsAsync(CompletionContext context)
var syntaxContext = await context.GetSyntaxContextWithExistingSpeculativeModelAsync(document, cancellationToken).ConfigureAwait(false);
var semanticModel = syntaxContext.SemanticModel;

if (syntaxContext.IsInTaskLikeTypeContext)
if (syntaxContext.IsTaskLikeTypeContext)
return;

var token = syntaxContext.TargetToken;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,6 @@ private static async Task<ImmutableArray<CompletionItem>> GetSnippetsForDocument
var context = await completionContext.GetSyntaxContextWithExistingSpeculativeModelAsync(document, cancellationToken).ConfigureAwait(false);
var semanticModel = context.SemanticModel;

if (context.IsInTaskLikeTypeContext)
{
return ImmutableArray<CompletionItem>.Empty;
}

if (syntaxFacts.IsPreProcessorDirectiveContext(syntaxTree, position, cancellationToken))
{
var directive = leftToken.GetAncestor<DirectiveTriviaSyntax>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ private static async Task<bool> ShouldShowSpeculativeTCompletionItemAsync(Docume

var context = await completionContext.GetSyntaxContextWithExistingSpeculativeModelAsync(document, cancellationToken).ConfigureAwait(false);

if (context.IsInTaskLikeTypeContext)
if (context.IsTaskLikeTypeContext)
return false;

var spanStart = position;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ internal abstract class AbstractNativeIntegerKeywordRecommender : IKeywordRecomm

private static bool IsValidContext(CSharpSyntaxContext context)
{
if (context.IsInTaskLikeTypeContext ||
if (context.IsTaskLikeTypeContext ||
context.IsGenericConstraintContext)
{
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ protected override bool ShouldPreselect(CSharpSyntaxContext context, Cancellatio
protected sealed override bool IsValidContext(int position, CSharpSyntaxContext context, CancellationToken cancellationToken)
{
// Filter out all special-types from locations where we think we only want something task-like.
if (context.IsInTaskLikeTypeContext)
if (context.IsTaskLikeTypeContext)
return false;

return IsValidContextWorker(position, context, cancellationToken);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ internal class DynamicKeywordRecommender : IKeywordRecommender<CSharpSyntaxConte
private static bool IsValidContext(int position, CSharpSyntaxContext context, CancellationToken cancellationToken)
{
if (context.IsPreProcessorDirectiveContext ||
context.IsInTaskLikeTypeContext)
context.IsTaskLikeTypeContext)
{
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ internal abstract class AbstractRecommendationServiceBasedCompletionProvider<TSy
var recommender = context.GetRequiredLanguageService<IRecommendationService>();
var recommendedSymbols = recommender.GetRecommendedSymbolsInContext(context, recommendationOptions, cancellationToken);

if (context.IsInTaskLikeTypeContext)
if (context.IsTaskLikeTypeContext)
{
// If we get 'Task' back, attempt to preselect that as the most likely result.
var taskType = context.SemanticModel.Compilation.TaskType();
Expand Down Expand Up @@ -92,7 +92,8 @@ private static bool IsValidForTaskLikeTypeOnlyContext(ISymbol symbol, TSyntaxCon
namedType.Equals(compilation.IAsyncEnumeratorOfTType());
}

return symbol.IsAwaitableNonDynamic(context.SemanticModel, context.Position);
return namedType.IsAwaitableNonDynamic(context.SemanticModel, context.Position) ||
namedType.GetTypeMembers().Any(m => IsValidForTaskLikeTypeOnlyContext(m, context));
}

private static bool IsValidForGenericConstraintContext(ISymbol symbol)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.KeywordRecommenders.Type
Inherits AbstractKeywordRecommender

Protected Overrides Function RecommendKeywords(context As VisualBasicSyntaxContext, cancellationToken As CancellationToken) As ImmutableArray(Of RecommendedKeyword)
If context.IsInTaskLikeTypeContext Then
If context.IsTaskLikeTypeContext Then
Return ImmutableArray(Of RecommendedKeyword).Empty
End If

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,6 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Snippets
Return
End If

Dim syntaxContext = Await context.GetSyntaxContextWithExistingSpeculativeModelAsync(document, cancellationToken).ConfigureAwait(False)
If syntaxContext.IsInTaskLikeTypeContext Then
Return
End If

Dim syntaxFacts = document.GetLanguageService(Of ISyntaxFactsService)()
If IsInNonUserCode(syntaxTree, position, cancellationToken) Then
Return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ private CSharpSyntaxContext(
bool isInNonUserCode,
bool isInQuery,
bool isInstanceContext,
bool isInTaskLikeTypeContext,
bool isTaskLikeTypeContext,
bool isIsOrAsOrSwitchOrWithExpressionContext,
bool isIsOrAsTypeContext,
bool isLabelContext,
Expand Down Expand Up @@ -125,7 +125,7 @@ private CSharpSyntaxContext(
isGlobalStatementContext: isGlobalStatementContext,
isInImportsDirective: isInImportsDirective,
isInQuery: isInQuery,
isInTaskLikeTypeContext: isInTaskLikeTypeContext,
isTaskLikeTypeContext: isTaskLikeTypeContext,
isNameOfContext: isNameOfContext,
isNamespaceContext: isNamespaceContext,
isNamespaceDeclarationNameContext: isNamespaceDeclarationNameContext,
Expand Down Expand Up @@ -274,7 +274,7 @@ private static CSharpSyntaxContext CreateContextWorker(Document document, Semant
isInNonUserCode: isInNonUserCode,
isInQuery: leftToken.GetAncestor<QueryExpressionSyntax>() != null,
isInstanceContext: syntaxTree.IsInstanceContext(targetToken, semanticModel, cancellationToken),
isInTaskLikeTypeContext: precedingModifiers.Contains(SyntaxKind.AsyncKeyword),
isTaskLikeTypeContext: precedingModifiers.Contains(SyntaxKind.AsyncKeyword),
isIsOrAsOrSwitchOrWithExpressionContext: syntaxTree.IsIsOrAsOrSwitchOrWithExpressionContext(semanticModel, position, leftToken, cancellationToken),
isIsOrAsTypeContext: syntaxTree.IsIsOrAsTypeContext(position, leftToken),
isLabelContext: syntaxTree.IsLabelContext(position, cancellationToken),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ internal abstract class SyntaxContext
public bool IsGlobalStatementContext { get; }
public bool IsInImportsDirective { get; }
public bool IsInQuery { get; }
public bool IsInTaskLikeTypeContext { get; }
public bool IsTaskLikeTypeContext { get; }
public bool IsNameOfContext { get; }
public bool IsNamespaceContext { get; }
public bool IsNamespaceDeclarationNameContext { get; }
Expand Down Expand Up @@ -69,7 +69,7 @@ protected SyntaxContext(
bool isGlobalStatementContext,
bool isInImportsDirective,
bool isInQuery,
bool isInTaskLikeTypeContext,
bool isTaskLikeTypeContext,
bool isNameOfContext,
bool isNamespaceContext,
bool isNamespaceDeclarationNameContext,
Expand Down Expand Up @@ -101,7 +101,7 @@ protected SyntaxContext(
this.IsGlobalStatementContext = isGlobalStatementContext;
this.IsInImportsDirective = isInImportsDirective;
this.IsInQuery = isInQuery;
this.IsInTaskLikeTypeContext = isInTaskLikeTypeContext;
this.IsTaskLikeTypeContext = isTaskLikeTypeContext;
this.IsNameOfContext = isNameOfContext;
this.IsNamespaceContext = isNamespaceContext;
this.IsNamespaceDeclarationNameContext = isNamespaceDeclarationNameContext;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery
isInImportsDirective As Boolean,
isInLambda As Boolean,
isInQuery As Boolean,
isInTaskLikeTypeContext As Boolean,
isTaskLikeTypeContext As Boolean,
isNameOfContext As Boolean,
isNamespaceContext As Boolean,
isNamespaceDeclarationNameContext As Boolean,
Expand Down Expand Up @@ -96,7 +96,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery
isGlobalStatementContext:=isGlobalStatementContext,
isInImportsDirective:=isInImportsDirective,
isInQuery:=isInQuery,
isInTaskLikeTypeContext:=isInTaskLikeTypeContext,
isTaskLikeTypeContext:=isTaskLikeTypeContext,
isNameOfContext:=isNameOfContext,
isNamespaceContext,
isNamespaceDeclarationNameContext,
Expand Down Expand Up @@ -134,7 +134,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery
Me.IsPreprocessorEndDirectiveKeywordContext = targetToken.FollowsBadEndDirective()
End Sub

Private Shared Function ComputeIsInTaskLikeTypeContext(targetToken As SyntaxToken) As Boolean
Private Shared Function ComputeIsTaskLikeTypeContext(targetToken As SyntaxToken) As Boolean
' If we're after the 'as' in an async method declaration, then filter down to task-like types only.
If targetToken.Kind() = SyntaxKind.AsKeyword Then
Dim asClause = TryCast(targetToken.Parent, AsClauseSyntax)
Expand Down Expand Up @@ -177,7 +177,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery
isInImportsDirective:=leftToken.GetAncestor(Of ImportsStatementSyntax)() IsNot Nothing,
isInLambda:=leftToken.GetAncestor(Of LambdaExpressionSyntax)() IsNot Nothing,
isInQuery:=isInQuery,
isInTaskLikeTypeContext:=ComputeIsInTaskLikeTypeContext(targetToken),
isTaskLikeTypeContext:=ComputeIsTaskLikeTypeContext(targetToken),
isNameOfContext:=syntaxTree.IsNameOfContext(position, cancellationToken),
isNamespaceContext:=syntaxTree.IsNamespaceContext(position, targetToken, cancellationToken, semanticModel),
isNamespaceDeclarationNameContext:=syntaxTree.IsNamespaceDeclarationNameContext(position, cancellationToken),
Expand Down