From a241d5fcde8812a4f250935011d850db83e6d54b Mon Sep 17 00:00:00 2001 From: Stephane Delcroix Date: Wed, 29 Jan 2025 16:21:55 +0100 Subject: [PATCH] [XC] trim x:Name values fixes #27121 --- .../src/Build.Tasks/SetFieldVisitor.cs | 2 +- .../Xaml.UnitTests/Issues/Maui27121.xaml | 7 +++ .../Xaml.UnitTests/Issues/Maui27121.xaml.cs | 44 +++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 src/Controls/tests/Xaml.UnitTests/Issues/Maui27121.xaml create mode 100644 src/Controls/tests/Xaml.UnitTests/Issues/Maui27121.xaml.cs diff --git a/src/Controls/src/Build.Tasks/SetFieldVisitor.cs b/src/Controls/src/Build.Tasks/SetFieldVisitor.cs index 1155bc28675a..87238f28d76f 100644 --- a/src/Controls/src/Build.Tasks/SetFieldVisitor.cs +++ b/src/Controls/src/Build.Tasks/SetFieldVisitor.cs @@ -30,7 +30,7 @@ public void Visit(ValueNode node, INode parentNode) { if (!IsXNameProperty(node, parentNode)) return; - var field = Context.Body.Method.DeclaringType.Fields.SingleOrDefault(fd => fd.Name == (string)node.Value); + var field = Context.Body.Method.DeclaringType.Fields.SingleOrDefault(fd => fd.Name == ((string)node.Value).Trim()); if (field == null) return; Context.IL.Emit(OpCodes.Ldarg_0); diff --git a/src/Controls/tests/Xaml.UnitTests/Issues/Maui27121.xaml b/src/Controls/tests/Xaml.UnitTests/Issues/Maui27121.xaml new file mode 100644 index 000000000000..7985a400a53d --- /dev/null +++ b/src/Controls/tests/Xaml.UnitTests/Issues/Maui27121.xaml @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/src/Controls/tests/Xaml.UnitTests/Issues/Maui27121.xaml.cs b/src/Controls/tests/Xaml.UnitTests/Issues/Maui27121.xaml.cs new file mode 100644 index 000000000000..3d844daba508 --- /dev/null +++ b/src/Controls/tests/Xaml.UnitTests/Issues/Maui27121.xaml.cs @@ -0,0 +1,44 @@ +using System; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.Linq; +using Microsoft.Maui.ApplicationModel; +using Microsoft.Maui.Controls.Core.UnitTests; +using Microsoft.Maui.Dispatching; +using Microsoft.Maui.UnitTests; +using Mono.Cecil; +using Mono.Cecil.Cil; +using NUnit.Framework; + +namespace Microsoft.Maui.Controls.Xaml.UnitTests; + +public partial class Maui27121 +{ + public Maui27121() => InitializeComponent(); + + public Maui27121(bool useCompiledXaml) + { + //this stub will be replaced at compile time + } + + [TestFixture] + class Test + { + [SetUp] + public void Setup() + { + Application.SetCurrentApplication(new MockApplication()); + DispatcherProvider.SetCurrent(new DispatcherProviderStub()); + } + + [TearDown] public void TearDown() => AppInfo.SetCurrent(null); + + [Test] + public void XNameAreTrimmed([Values] bool useCompiledXaml) + { + var page = new Maui27121(useCompiledXaml); + Assert.That(page.label0, Is.Not.Null); + } + } +} \ No newline at end of file