diff --git a/src/Controls/src/SourceGen/Visitors/SetPropertiesVisitor.cs b/src/Controls/src/SourceGen/Visitors/SetPropertiesVisitor.cs index a97f8fd218d2..5692a6372e82 100644 --- a/src/Controls/src/SourceGen/Visitors/SetPropertiesVisitor.cs +++ b/src/Controls/src/SourceGen/Visitors/SetPropertiesVisitor.cs @@ -618,8 +618,13 @@ static void Add(IndentedTextWriter writer, LocalVariable parentVar, XmlName prop if (receiverType is not null && !propertyType!.Equals(receiverType, SymbolEqualityComparer.Default)) parentObj = $"(({receiverType.ToFQDisplayString()}){parentObj})"; + //look for intermediate implicit casts + string cast = string.Empty; + if (HasDoubleImplicitConversion(context.Variables[valueNode].Type, itemType, context, out var conv)) + cast = "(" + conv!.ReturnType.ToFQDisplayString() + ")"; + using (PrePost.NewLineInfo(writer, (IXmlLineInfo)valueNode, context.FilePath)) - writer.WriteLine($"{parentObj}.Add(({itemType.ToFQDisplayString()}){context.Variables[valueNode].Name});"); + writer.WriteLine($"{parentObj}.Add(({itemType.ToFQDisplayString()}){cast}{context.Variables[valueNode].Name});"); } static void AddToResourceDictionary(IndentedTextWriter writer, LocalVariable parentVar, IElementNode node, SourceGenContext context) diff --git a/src/Controls/tests/Xaml.UnitTests/Issues/Maui24900.xaml.cs b/src/Controls/tests/Xaml.UnitTests/Issues/Maui24900.xaml.cs index 655eeedc6286..84ebe4f479d5 100644 --- a/src/Controls/tests/Xaml.UnitTests/Issues/Maui24900.xaml.cs +++ b/src/Controls/tests/Xaml.UnitTests/Issues/Maui24900.xaml.cs @@ -37,11 +37,7 @@ public void TearDown() } [Test] -#if FIXME_BEFORE_PUBLIC_RELEASE - public void OnPlatformDoesNotThrow([Values(XamlInflator.XamlC, XamlInflator.Runtime)] XamlInflator inflator) -#else public void OnPlatformDoesNotThrow([Values] XamlInflator inflator) -#endif { mockDeviceInfo.Platform = DevicePlatform.WinUI; Assert.DoesNotThrow(() => new Maui24900(inflator)); diff --git a/src/Controls/tests/Xaml.UnitTests/Issues/Maui4509.xaml.cs b/src/Controls/tests/Xaml.UnitTests/Issues/Maui4509.xaml.cs index 1cffad1b7726..34675d41260c 100644 --- a/src/Controls/tests/Xaml.UnitTests/Issues/Maui4509.xaml.cs +++ b/src/Controls/tests/Xaml.UnitTests/Issues/Maui4509.xaml.cs @@ -21,11 +21,7 @@ public void TearDown() } [Test] -#if FIXME_BEFORE_PUBLIC_RELEASE - public void OnPlatformAsCollectionElementiOS([Values(XamlInflator.XamlC, XamlInflator.Runtime)] XamlInflator inflator) -#else public void OnPlatformAsCollectionElementiOS([Values] XamlInflator inflator) -#endif { DeviceInfo.SetCurrent(new MockDeviceInfo(platform: DevicePlatform.iOS)); var page = new Maui4509(inflator); @@ -33,11 +29,7 @@ public void OnPlatformAsCollectionElementiOS([Values] XamlInflator inflator) } [Test] -#if FIXME_BEFORE_PUBLIC_RELEASE - public void OnPlatformAsCollectionElementAndroid([Values(XamlInflator.XamlC, XamlInflator.Runtime)] XamlInflator inflator) -#else public void OnPlatformAsCollectionElementAndroid([Values] XamlInflator inflator) -#endif { DeviceInfo.SetCurrent(new MockDeviceInfo(platform: DevicePlatform.Android)); var page = new Maui4509(inflator);