From 73e8eaad6a4df5a3195439b784ab61068cc4a252 Mon Sep 17 00:00:00 2001 From: MartinGC94 Date: Sun, 4 Jun 2023 01:13:36 +0200 Subject: [PATCH 1/2] Fix Enum member completion for PS Enums. --- .../engine/parser/TypeInferenceVisitor.cs | 18 +++++++++++++++++- .../Host/TabCompletion/TabCompletion.Tests.ps1 | 6 ++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/System.Management.Automation/engine/parser/TypeInferenceVisitor.cs b/src/System.Management.Automation/engine/parser/TypeInferenceVisitor.cs index be3b045f703..ba8e1cb302c 100644 --- a/src/System.Management.Automation/engine/parser/TypeInferenceVisitor.cs +++ b/src/System.Management.Automation/engine/parser/TypeInferenceVisitor.cs @@ -364,7 +364,23 @@ internal void AddMembersByInferredTypeDefinitionAst( filterToCall = filter; } - results.AddRange(GetMembersByInferredType(new PSTypeName(typeof(object)), isStatic, filterToCall)); + PSTypeName baseMembersType; + if (typename.TypeDefinitionAst.IsEnum) + { + if (!isStatic) + { + results.Add(new PSInferredProperty("value__", new PSTypeName(typeof(int)))); + } + + baseMembersType = new PSTypeName(typeof(Enum)); + } + else + { + baseMembersType = new PSTypeName(typeof(object)); + + } + + results.AddRange(GetMembersByInferredType(baseMembersType, isStatic, filterToCall)); } internal void AddMembersByInferredTypeCimType(PSTypeName typename, List results, Func filterToCall) diff --git a/test/powershell/Host/TabCompletion/TabCompletion.Tests.ps1 b/test/powershell/Host/TabCompletion/TabCompletion.Tests.ps1 index fee6c8c0001..a9cc9801d0e 100644 --- a/test/powershell/Host/TabCompletion/TabCompletion.Tests.ps1 +++ b/test/powershell/Host/TabCompletion/TabCompletion.Tests.ps1 @@ -961,6 +961,12 @@ class InheritedClassTest : System.Attribute $res.CompletionMatches.CompletionText | Should -Contain '-ProgressAction' } + it 'Should complete enum class members for Enums in script text' { + $res = TabExpansion2 -inputScript 'enum Test1 {Val1};([Test1]"").' + $res.CompletionMatches.CompletionText[0] | Should -Be 'value__' + $res.CompletionMatches.CompletionText | Should -Contain 'HasFlag(' + } + Context "Script name completion" { BeforeAll { Setup -f 'install-powershell.ps1' -Content "" From acd3597fe82ef9b130ab8a4d053b94b5bbe13b7b Mon Sep 17 00:00:00 2001 From: Dongbo Wang Date: Mon, 5 Jun 2023 16:19:41 -0700 Subject: [PATCH 2/2] Update TypeInferenceVisitor.cs --- .../engine/parser/TypeInferenceVisitor.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/System.Management.Automation/engine/parser/TypeInferenceVisitor.cs b/src/System.Management.Automation/engine/parser/TypeInferenceVisitor.cs index ba8e1cb302c..de6375bfdbf 100644 --- a/src/System.Management.Automation/engine/parser/TypeInferenceVisitor.cs +++ b/src/System.Management.Automation/engine/parser/TypeInferenceVisitor.cs @@ -377,7 +377,6 @@ internal void AddMembersByInferredTypeDefinitionAst( else { baseMembersType = new PSTypeName(typeof(object)); - } results.AddRange(GetMembersByInferredType(baseMembersType, isStatic, filterToCall));