From 39f7cda3bde44ea9239fed498ca76d7619842e23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Kon=C3=AD=C4=8Dek?= Date: Sat, 3 Mar 2018 15:32:22 +0100 Subject: [PATCH] Fixing IsConstantExpressionContext inside CasePatternSwitchLabel --- .../SymbolCompletionProviderTests.cs | 30 +++++++++++++++++-- .../ContextQuery/SyntaxTreeExtensions.cs | 2 +- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SymbolCompletionProviderTests.cs b/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SymbolCompletionProviderTests.cs index 97992a71522..9322bc54e03 100644 --- a/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SymbolCompletionProviderTests.cs +++ b/src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SymbolCompletionProviderTests.cs @@ -1263,9 +1263,15 @@ public async Task SwitchStatement() [Fact, Trait(Traits.Feature, Traits.Features.Completion)] public async Task SwitchLabelCase() { - var content = @"switch(i) - { - case $$"; + var content = @"switch(i) { case $$"; + await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(content)), @"String"); + await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(content)), @"System"); + } + + [Fact, Trait(Traits.Feature, Traits.Features.Completion)] + public async Task SwitchPatternLabelCase() + { + var content = @"switch(i) { case $$ when"; await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(content)), @"String"); await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(content)), @"System"); } @@ -2701,6 +2707,24 @@ void M() await VerifyItemExistsAsync(markup, "MAX_SIZE"); } + [WorkItem(25084, "https://github.com/dotnet/roslyn/issues/25084#issuecomment-370148553")] + [Fact, Trait(Traits.Feature, Traits.Features.Completion)] + public async Task ConstantsInSwitchPatternCase() + { + var markup = @" +class C +{ + public const int MAX_SIZE = 10; + void M() + { + int i = 10; + switch (i) + { + case $$ when"; + + await VerifyItemExistsAsync(markup, "MAX_SIZE"); + } + [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")] [Fact, Trait(Traits.Feature, Traits.Features.Completion)] public async Task ConstantsInSwitchGotoCase() diff --git a/src/Workspaces/CSharp/Portable/Extensions/ContextQuery/SyntaxTreeExtensions.cs b/src/Workspaces/CSharp/Portable/Extensions/ContextQuery/SyntaxTreeExtensions.cs index 22057efd84f..d68d5dfbbe4 100644 --- a/src/Workspaces/CSharp/Portable/Extensions/ContextQuery/SyntaxTreeExtensions.cs +++ b/src/Workspaces/CSharp/Portable/Extensions/ContextQuery/SyntaxTreeExtensions.cs @@ -1802,7 +1802,7 @@ public static bool IsConstantExpressionContext(this SyntaxTree syntaxTree, int p // case | if (token.IsKind(SyntaxKind.CaseKeyword) && - token.Parent.IsKind(SyntaxKind.CaseSwitchLabel)) + token.Parent.IsKind(SyntaxKind.CaseSwitchLabel, SyntaxKind.CasePatternSwitchLabel)) { return true; } -- GitLab