Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit cfc8e8a

Browse files
fix unit tests
1 parent b2a877f commit cfc8e8a

3 files changed

Lines changed: 14 additions & 2 deletions

File tree

src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionInfo.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class MarkupExtensionInfo : IEquatable<MarkupExtensionInfo>
3232

3333
public int StartOffset { get; set; }
3434
public int EndOffset { get; set; }
35+
public bool IsClosed { get; set; }
3536

3637
public MarkupExtensionInfo()
3738
: this(string.Empty, new List<AttributeValue>(), new Dictionary<string, AttributeValue>(StringComparer.OrdinalIgnoreCase))
@@ -163,6 +164,10 @@ public int EndOffset {
163164
}
164165
}
165166

167+
public bool IsClosed {
168+
get { return IsString || extensionValue.IsClosed; }
169+
}
170+
166171
public bool IsString {
167172
get { return stringValue != null; }
168173
}

src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionParser.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ static MarkupExtensionInfo Parse(string text, int offset)
4545
break;
4646
case MarkupExtensionTokenKind.CloseBrace:
4747
info.EndOffset = token.EndOffset + offset;
48+
info.IsClosed = true;
4849
break;
4950
case MarkupExtensionTokenKind.TypeName:
5051
info.ExtensionType = token.Value;

src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,18 @@ public static MarkupExtensionInfo GetMarkupExtensionAtPosition(MarkupExtensionIn
126126
MarkupExtensionInfo tmp = info;
127127

128128
foreach (var item in info.PositionalArguments) {
129-
if (item.StartOffset < offset && offset <= item.EndOffset)
129+
int endOffset = item.EndOffset;
130+
if (!item.IsClosed)
131+
endOffset++;
132+
if (item.StartOffset < offset && offset < endOffset)
130133
tmp = item.IsString ? tmp : GetMarkupExtensionAtPosition(item.ExtensionValue, offset);
131134
}
132135

133136
foreach (var pair in info.NamedArguments) {
134-
if (pair.Value.StartOffset < offset && offset < pair.Value.EndOffset)
137+
int endOffset = pair.Value.EndOffset;
138+
if (!pair.Value.IsClosed)
139+
endOffset++;
140+
if (pair.Value.StartOffset < offset && offset < endOffset)
135141
tmp = pair.Value.IsString ? tmp : GetMarkupExtensionAtPosition(pair.Value.ExtensionValue, offset);
136142
}
137143

0 commit comments

Comments
 (0)