Skip to content

Commit 0135baa

Browse files
committed
Replace SymbolTypeMatches logic with prefixed identifiers
So that we rely on the dictionary to sort our symbols into the equivalent types instead of having to perform a filter.
1 parent 3010065 commit 0135baa

File tree

5 files changed

+97
-126
lines changed

5 files changed

+97
-126
lines changed

src/PowerShellEditorServices/Services/Symbols/ReferenceTable.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ internal IEnumerable<SymbolReference> TryGetReferences(SymbolReference? symbol)
4747
EnsureInitialized();
4848
return symbol is not null
4949
&& _symbolReferences.TryGetValue(symbol.Id, out ConcurrentBag<SymbolReference>? bag)
50-
? bag.Where(i => SymbolTypeUtils.SymbolTypeMatches(symbol.Type, i.Type))
50+
? bag
5151
: Enumerable.Empty<SymbolReference>();
5252
}
5353

src/PowerShellEditorServices/Services/Symbols/SymbolType.cs

-13
Original file line numberDiff line numberDiff line change
@@ -99,18 +99,5 @@ internal static SymbolKind GetSymbolKind(SymbolType symbolType)
9999
_ => SymbolKind.Variable,
100100
};
101101
}
102-
103-
// Provides a partial equivalence between type constraints and custom types, and between
104-
// variables and parameters.
105-
internal static bool SymbolTypeMatches(SymbolType left, SymbolType right)
106-
{
107-
return left == right
108-
|| (left is SymbolType.Class or SymbolType.Enum or SymbolType.Type
109-
&& right is SymbolType.Class or SymbolType.Enum or SymbolType.Type)
110-
|| (left is SymbolType.EnumMember or SymbolType.Property
111-
&& right is SymbolType.EnumMember or SymbolType.Property)
112-
|| (left is SymbolType.Variable or SymbolType.Parameter
113-
&& right is SymbolType.Variable or SymbolType.Parameter);
114-
}
115102
}
116103
}

src/PowerShellEditorServices/Services/Symbols/Visitors/SymbolVisitor.cs

+12-18
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public override AstVisitAction VisitCommand(CommandAst commandAst)
3939

4040
return _action(new SymbolReference(
4141
SymbolType.Function,
42-
CommandHelpers.StripModuleQualification(commandName, out _),
42+
"fn " + CommandHelpers.StripModuleQualification(commandName, out _),
4343
commandName,
4444
commandAst.CommandElements[0].Extent,
4545
commandAst.Extent,
@@ -63,7 +63,7 @@ public override AstVisitAction VisitFunctionDefinition(FunctionDefinitionAst fun
6363
IScriptExtent nameExtent = VisitorUtils.GetNameExtent(functionDefinitionAst);
6464
return _action(new SymbolReference(
6565
symbolType,
66-
functionDefinitionAst.Name,
66+
"fn " + functionDefinitionAst.Name,
6767
VisitorUtils.GetFunctionDisplayName(functionDefinitionAst),
6868
nameExtent,
6969
functionDefinitionAst.Extent,
@@ -77,7 +77,7 @@ public override AstVisitAction VisitParameter(ParameterAst parameterAst)
7777
// getting the TypeConstraintAst somehow?
7878
return _action(new SymbolReference(
7979
SymbolType.Parameter,
80-
"$" + parameterAst.Name.VariablePath.UserPath,
80+
"var " + parameterAst.Name.VariablePath.UserPath,
8181
VisitorUtils.GetParamDisplayName(parameterAst),
8282
parameterAst.Name.Extent,
8383
parameterAst.Extent,
@@ -98,7 +98,7 @@ public override AstVisitAction VisitVariableExpression(VariableExpressionAst var
9898
// the same function definition.
9999
return _action(new SymbolReference(
100100
SymbolType.Variable,
101-
"$" + variableExpressionAst.VariablePath.UserPath,
101+
"var " + variableExpressionAst.VariablePath.UserPath,
102102
"$" + variableExpressionAst.VariablePath.UserPath,
103103
variableExpressionAst.Extent,
104104
variableExpressionAst.Extent, // TODO: Maybe parent?
@@ -115,7 +115,7 @@ public override AstVisitAction VisitTypeDefinition(TypeDefinitionAst typeDefinit
115115
IScriptExtent nameExtent = VisitorUtils.GetNameExtent(typeDefinitionAst);
116116
return _action(new SymbolReference(
117117
symbolType,
118-
typeDefinitionAst.Name,
118+
"type " + typeDefinitionAst.Name,
119119
(symbolType is SymbolType.Enum ? "enum " : "class ") + typeDefinitionAst.Name + " { }",
120120
nameExtent,
121121
typeDefinitionAst.Extent,
@@ -127,7 +127,7 @@ public override AstVisitAction VisitTypeExpression(TypeExpressionAst typeExpress
127127
{
128128
return _action(new SymbolReference(
129129
SymbolType.Type,
130-
typeExpressionAst.TypeName.Name,
130+
"type " + typeExpressionAst.TypeName.Name,
131131
"(type) " + typeExpressionAst.TypeName.Name,
132132
typeExpressionAst.Extent,
133133
typeExpressionAst.Extent,
@@ -139,7 +139,7 @@ public override AstVisitAction VisitTypeConstraint(TypeConstraintAst typeConstra
139139
{
140140
return _action(new SymbolReference(
141141
SymbolType.Type,
142-
typeConstraintAst.TypeName.Name,
142+
"type " + typeConstraintAst.TypeName.Name,
143143
"(type) " + typeConstraintAst.TypeName.Name,
144144
typeConstraintAst.Extent,
145145
typeConstraintAst.Extent,
@@ -157,7 +157,7 @@ public override AstVisitAction VisitFunctionMember(FunctionMemberAst functionMem
157157

158158
return _action(new SymbolReference(
159159
symbolType,
160-
functionMemberAst.Name, // We bucket all the overloads.
160+
"fn " + functionMemberAst.Name, // We bucket all the overloads.
161161
VisitorUtils.GetMemberOverloadName(functionMemberAst),
162162
nameExtent,
163163
functionMemberAst.Extent,
@@ -176,7 +176,7 @@ propertyMemberAst.Parent is TypeDefinitionAst typeAst && typeAst.IsEnum
176176

177177
return _action(new SymbolReference(
178178
symbolType,
179-
"$" + propertyMemberAst.Name,
179+
"var " + propertyMemberAst.Name,
180180
VisitorUtils.GetMemberOverloadName(propertyMemberAst),
181181
VisitorUtils.GetNameExtent(propertyMemberAst),
182182
propertyMemberAst.Extent,
@@ -195,9 +195,7 @@ public override AstVisitAction VisitMemberExpression(MemberExpressionAst memberE
195195
// TODO: It's too bad we can't get the property's real symbol and reuse its display string.
196196
return _action(new SymbolReference(
197197
SymbolType.Property,
198-
#pragma warning disable CS8604 // Possible null reference argument.
199-
"$" + memberName,
200-
#pragma warning restore CS8604
198+
"var " + memberName,
201199
"(property) " + memberName,
202200
memberExpressionAst.Member.Extent,
203201
memberExpressionAst.Extent,
@@ -216,9 +214,7 @@ public override AstVisitAction VisitInvokeMemberExpression(InvokeMemberExpressio
216214
// TODO: It's too bad we can't get the member's real symbol and reuse its display string.
217215
return _action(new SymbolReference(
218216
SymbolType.Method,
219-
#pragma warning disable CS8604 // Possible null reference argument.
220-
memberName,
221-
#pragma warning restore CS8604
217+
"fn " + memberName,
222218
"(method) " + memberName,
223219
methodCallAst.Member.Extent,
224220
methodCallAst.Extent,
@@ -238,9 +234,7 @@ public override AstVisitAction VisitConfigurationDefinition(ConfigurationDefinit
238234
IScriptExtent nameExtent = VisitorUtils.GetNameExtent(configurationDefinitionAst);
239235
return _action(new SymbolReference(
240236
SymbolType.Configuration,
241-
#pragma warning disable CS8604 // Possible null reference argument.
242-
name,
243-
#pragma warning restore CS8604
237+
"dsc " + name,
244238
"configuration " + name + " { }",
245239
nameExtent,
246240
configurationDefinitionAst.Extent,

0 commit comments

Comments
 (0)