Skip to content

Commit f587eed

Browse files
fflatenandyleejordan
authored andcommitted
fix Contains extension method for same line extent
1 parent 1827700 commit f587eed

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

src/PowerShellEditorServices/Services/Symbols/Vistors/FindSymbolVisitor.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation.
1+
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT License.
33

44
using System.Management.Automation.Language;
@@ -85,7 +85,7 @@ public override AstVisitAction VisitFunctionDefinition(FunctionDefinitionAst fun
8585
nameExtent = VisitorUtils.GetNameExtent(functionDefinitionAst);
8686
}
8787

88-
if (IsPositionInExtent(nameExtent))
88+
if (nameExtent.Contains(lineNumber, columnNumber))
8989
{
9090
FoundSymbolReference =
9191
new SymbolReference(
@@ -139,7 +139,9 @@ public override AstVisitAction VisitVariableExpression(VariableExpressionAst var
139139
}
140140

141141
/// <summary>
142-
/// Is the position of the given location is in the ast's extent
142+
/// Is the position of the given location is in the ast's extent.
143+
/// Only works with single-line extents like name extents.
144+
/// Use <see cref="ObjectExtensions.Contains"/> extension for definition extents.
143145
/// </summary>
144146
/// <param name="extent">The script extent of the element</param>
145147
/// <returns>True if the given position is in the range of the element's extent </returns>
@@ -206,7 +208,7 @@ public override AstVisitAction VisitTypeDefinition(TypeDefinitionAst typeDefinit
206208
nameExtent = VisitorUtils.GetNameExtent(typeDefinitionAst);
207209
}
208210

209-
if (IsPositionInExtent(nameExtent))
211+
if (nameExtent.Contains(lineNumber, columnNumber))
210212
{
211213
SymbolType symbolType =
212214
typeDefinitionAst.IsEnum ?

src/PowerShellEditorServices/Utility/Extensions.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,14 @@ public static bool Contains(this IScriptExtent scriptExtent, int line, int colum
135135

136136
if (scriptExtent.StartLineNumber == line)
137137
{
138-
return scriptExtent.StartColumnNumber <= column;
138+
if (scriptExtent.StartLineNumber == scriptExtent.EndLineNumber)
139+
{
140+
return scriptExtent.StartColumnNumber <= column && scriptExtent.EndColumnNumber >= column;
141+
}
142+
else
143+
{
144+
return scriptExtent.StartColumnNumber <= column;
145+
}
139146
}
140147

141148
if (scriptExtent.EndLineNumber == line)

0 commit comments

Comments
 (0)