diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/MarkupExtensionTests.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/MarkupExtensionTests.cs index 42486f2fd7..3bd556cb73 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/MarkupExtensionTests.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/MarkupExtensionTests.cs @@ -22,7 +22,7 @@ namespace ICSharpCode.XamlBinding.Tests MarkupExtensionToken token = null; var tokens = new List(); - while ((token = tokenizer.NextToken()).Kind != MarkupExtensionTokenKind.EOF) + while ((token = tokenizer.NextToken()).Kind != MarkupExtensionTokenKind.EndOfFile) tokens.Add(token); Assert.AreEqual(new List { @@ -40,7 +40,7 @@ namespace ICSharpCode.XamlBinding.Tests AttributeValue value = MarkupExtensionParser.ParseValue(markup); - Assert.AreEqual("x:Type", value.ExtensionValue.Type); + Assert.AreEqual("x:Type", value.ExtensionValue.ExtensionType); Assert.AreEqual(1, value.ExtensionValue.PositionalArguments.Count); Assert.AreEqual("CheckBox", value.ExtensionValue.PositionalArguments[0].StringValue); } diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/XmlTests.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/XmlTests.cs index ee1673b787..6731151cb0 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/XmlTests.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/XmlTests.cs @@ -67,5 +67,14 @@ namespace ICSharpCode.XamlBinding.Tests Assert.AreEqual(true, XmlParser.IsInsideAttributeValue(xaml, offset)); } + + [Test] + public void InMarkupExtensionNamedParameterTest() + { + string xaml = ""; + int offset = " -1) ? selItem.StringValue.Substring(0, index) : selItem.StringValue; - var rr = ResolveStringValue(s, list, context.Path, info, editor) as TypeResolveResult; + var rr = ResolveStringValue(s, context.Path, info, editor) as TypeResolveResult; if (rr != null) { list.Items.AddRange(MemberCompletion(editor, rr.ResolvedType)); @@ -410,7 +409,7 @@ namespace ICSharpCode.XamlBinding } } - static ResolveResult ResolveStringValue(string value, XamlCompletionItemList list, XmlElementPath path, ParseInformation info, ITextEditor editor) + static ResolveResult ResolveStringValue(string value, XmlElementPath path, ParseInformation info, ITextEditor editor) { var resolver = new XamlResolver(); var rr = resolver.Resolve(new ExpressionResult(value, new XamlExpressionContext(path, string.Empty, false)), info, editor.Document.Text); diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Extensions.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Extensions.cs index b4b6083a0b..fcf47b117b 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Extensions.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Extensions.cs @@ -15,25 +15,34 @@ namespace ICSharpCode.XamlBinding { public static class Extensions { - public static string[] Split(this string s, StringSplitOptions options, params char[] delimiters) + public static string[] Split(this string thisValue, StringSplitOptions options, params char[] delimiters) { - return s.Split(delimiters, options); + if (thisValue == null) + throw new ArgumentNullException("thisValue"); + + return thisValue.Split(delimiters, options); } - public static bool EndsWith(this string s, StringComparison comparison, params char[] characters) + public static bool EndsWith(this string thisValue, StringComparison comparison, params char[] characters) { + if (thisValue == null) + throw new ArgumentNullException("thisValue"); + foreach (var c in characters) { - if (s.EndsWith(c.ToString(), comparison)) + if (thisValue.EndsWith(c.ToString(), comparison)) return true; } return false; } - public static QualifiedName LastOrDefault(this QualifiedNameCollection coll) + public static QualifiedName LastOrDefault(this QualifiedNameCollection collection) { - if (coll.Count > 0) - return coll[coll.Count - 1]; + if (collection == null) + throw new ArgumentNullException("collection"); + + if (collection.Count > 0) + return collection[collection.Count - 1]; return null; } diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionInfo.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionInfo.cs index daa304e6ff..2cb3d0502f 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionInfo.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionInfo.cs @@ -57,7 +57,6 @@ namespace ICSharpCode.XamlBinding throw new ArgumentNullException("value"); this.stringValue = value; - this.extensionValue = null; } public AttributeValue(MarkupExtensionInfo value) @@ -65,7 +64,6 @@ namespace ICSharpCode.XamlBinding if (value == null) throw new ArgumentNullException("value"); - this.stringValue = null; this.extensionValue = value; } } diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionToken.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionToken.cs index bec9c6221c..a5140fb529 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionToken.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/MarkupExtensionToken.cs @@ -11,8 +11,8 @@ namespace ICSharpCode.XamlBinding { public sealed class MarkupExtensionToken { - public readonly MarkupExtensionTokenKind Kind; - public readonly string Value; + public MarkupExtensionTokenKind Kind { get; private set; } + public string Value { get; private set; } public MarkupExtensionToken(MarkupExtensionTokenKind kind, string value) { diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs index 35cd460e1e..20f9f7dc92 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Utils.cs @@ -75,9 +75,9 @@ namespace ICSharpCode.XamlBinding do { LoggingService.Debug("name: " + reader.Name + " value: " + reader.Value); int start = reader.Name.IndexOf(':') + 1; - string plainName = reader.Name.Substring(start, reader.Name.Length - start).ToLowerInvariant(); + string plainName = reader.Name.Substring(start, reader.Name.Length - start).ToUpperInvariant(); - if (plainName == name.ToLowerInvariant()) + if (plainName == name.ToUpperInvariant()) return reader.Value; } while (reader.MoveToNextAttribute()); } catch (XmlException) { } @@ -225,7 +225,7 @@ namespace ICSharpCode.XamlBinding var list = Utils.GetXmlNamespacesForOffset(xaml, offset); var item = list.FirstOrDefault(i => i.Value == CompletionDataHelper.XamlNamespace); - if (item.Key.StartsWith("xmlns:")) + if (item.Key.StartsWith("xmlns:", StringComparison.OrdinalIgnoreCase)) return item.Key.Substring("xmlns:".Length); return string.Empty; } @@ -241,11 +241,11 @@ namespace ICSharpCode.XamlBinding offset = xaml.Length - 1; string interestingPart = xaml.Substring(0, offset); - int end = interestingPart.LastIndexOf("-->"); + int end = interestingPart.LastIndexOf("-->", StringComparison.OrdinalIgnoreCase); interestingPart = (end > -1) ? interestingPart.Substring(end, interestingPart.Length - end) : interestingPart; - return interestingPart.LastIndexOf("