Fix Implicit parameter conversion from integer to byte fails with source generated XAML#35444
Conversation
Updated [Magick.NET-Q8-AnyCPU](https://github.com/dlemstra/Magick.NET) from 14.10.4 to 14.12.0. <details> <summary>Release notes</summary> _Sourced from [Magick.NET-Q8-AnyCPU's releases](https://github.com/dlemstra/Magick.NET/releases)._ ## 14.12.0 ### What's Changed - Added `FixByteOrder` to the `DcmReadDefines` (#1976) - Added `IconWriteDefines`. ### Related changes in ImageMagick since the last release of Magick.NET: - Correct bug in `Composite` when using `CopyAlpha` (#1985) - Fixed incorrect orientation of JPEG compressed TIFF images (#1991) - Heap-Buffer-Overflow write of single zero byte when parsing xml (GHSA-cr67-pvmx-2pp2) - Stack Overflow in DestroyXMLTree (GHSA-fwvm-ggf6-2p4x) - Out-of-Bounds read in sample operation (GHSA-pcvx-ph33-r5vv) - Stack Overflow via Recursive FX Expression Parsing (GHSA-f4qm-vj5j-9xpw) - Heap Buffer Overflow in ImageMagick MVG decoder (GHSA-x9h5-r9v2-vcww) - Heap overflow caused by integer overflow/wraparound in viff encoder on 32-bit builds (GHSA-v67w-737x-v2c9) - Stack-buffer-overflow in MNG encoder with oversized pallete (GHSA-98cp-rj9f-6v5g) - Integer overflow in despeckle operation causes heap buffer overflow on 32-bit builds (GHSA-26qp-ffjh-2x4v) - Off-by-One in MSL decoder could result in crash (GHSA-5xg3-585r-9jh5) - Heap buffer overflow when encoding JXL image with a 16-bit float (GHSA-jvgr-9ph5-m8v4) - Heap-use-after-free via XMP profile could result in a crash when printing the values (GHSA-r83h-crwp-3vm7) - Heap buffer overflow (WRITE) in the YAML and JSON encoders (GHSA-5592-p365-24xh) - Heap out-of-bounds write in JP2 encoder (GHSA-pwg5-6jfc-crvh) ### Library updates: - ImageMagick 7.1.2-19 (2026-04-12) - aom 3.13.3 (2026-04-02) - openexr 3.4.9 (2026-04-03) - freetype 2.14.3 (2026-03-22) - gdk-pixbuf 2.44.6 (2026-03-31) - harfbuzz 14.0.0 (2026-04-01) - liblzma 5.8.3 (2026-04-31) - libpng 1.6.56 (2026-03-25) **Full Changelog**: dlemstra/Magick.NET@14.11.1...14.12.0 ## 14.11.1 ### Related changes in ImageMagick since the last release of Magick.NET: - Stack-buffer-overflow WRITE in InterpretImageFilename due to overflow (GHSA-8793-7xv6-82cf) ### Library updates: - ImageMagick 7.1.2-18 (2026-03-23) - aom 3.13.2 (2026-03-19) - openexr 3.4.7 (2026-03-15) - harfbuzz 13.2.1 (2026-03-19) **Full Changelog**: dlemstra/Magick.NET@14.11.0...14.11.1 ## 14.11.0 ### What's Changed - Added `DcmReadDefines`. ### Related changes in ImageMagick since the last release of Magick.NET: - Access mode change for files created from 0666 to 0600 (ImageMagick/ImageMagick#8609) - Heap-buffer-overflow in NewXMLTree could result in crash (GHSA-gc62-2v5p-qpmp) ### Library updates: - ImageMagick 7.1.2-17 (2026-03-16) - openexr 3.4.6 (2026-03-01) - freetype 2.14.2 (2026-03-01) - harfbuzz 13.0.1 (2026-03-07) - libxml2 2.15.2 (2026-03-03) **Full Changelog**: dlemstra/Magick.NET@14.10.4...14.11.0 Commits viewable in [compare view](dlemstra/Magick.NET@14.10.4...14.12.0). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dotnet/maui/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…t#35333) Bump OpenTelemetry packages to latest stable versions in the maui-aspire-servicedefaults template: - OpenTelemetry.Exporter.OpenTelemetryProtocol: 1.9.0 to 1.15.3 - OpenTelemetry.Extensions.Hosting: 1.9.0 to 1.15.3 - OpenTelemetry.Instrumentation.Http: 1.9.0 to 1.15.1 - OpenTelemetry.Instrumentation.Runtime: 1.9.0 to 1.15.1 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This pull request updates the following dependencies [marker]: <> (Begin:a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95) ## From https://github.com/dotnet/xharness - **Subscription**: [a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95](https://maestro.dot.net/subscriptions?search=a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95) - **Build**: [20260430.4](https://dev.azure.com/dnceng/internal/_build/results?buildId=2964906) ([312724](https://maestro.dot.net/channel/2/github:dotnet:xharness/build/312724)) - **Date Produced**: May 1, 2026 7:05:11 AM UTC - **Commit**: [92962e5c46ac08a66ded4c5696209cc60f1a232f](dotnet/xharness@92962e5) - **Branch**: [main](https://github.com/dotnet/xharness/tree/main) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: - From [11.0.0-prerelease.26229.1 to 11.0.0-prerelease.26230.4][1] - Microsoft.DotNet.XHarness.CLI - Microsoft.DotNet.XHarness.TestRunners.Common - Microsoft.DotNet.XHarness.TestRunners.Xunit [1]: dotnet/xharness@9d5a7e9...92962e5 [DependencyUpdate]: <> (End) [marker]: <> (End:a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95) Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
> [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Description Replaces `review-rules.md` (flat 345-line checklist) with a dimensional expert review agent. Single source of truth for all review rules, organized into 30 dimensions for per-dimension sub-agent evaluation. Adds inline file:line PR comments alongside the existing wall-of-text summary. Extracted from 28k review comments across 5 maintainers via [extraction-pipeline](https://github.com/dotnet/fsharp/blob/main/.github/agents/extraction-pipeline.md). No functional code changes. Recreated from dotnet#35062 on a dotnet/maui branch (originally opened from a fork). ## What changed **Before:** `review-rules.md` had 345 lines of flat rules. `code-review` skill loaded them all into one context. Output was a single wall-of-text PR comment. **After:** Rules absorbed into `maui-expert-reviewer.md` as 30 dimensions with 200+ CHECK items. Each dimension runs as an independent sub-agent with focused context. Output is inline file:line PR comments via `inline-findings.json`. ## CI Flow ``` Review-PR.ps1 prompt: 1. code-review → maui-expert-reviewer agent → inline-findings.json 2. pr-review → Pre-Flight → Try-Fix → Report (sees findings, no duplication) Posting: post-inline-review.ps1 → .json → GitHub file:line comments (NEW) post-ai-summary-comment.ps1 → {phase}/content.md → wall-of-text (existing) CI: COMMENTS_VIA_FILE=true → agent writes .json, script posts Local: agent writes .json, code-review posts directly via gh api ``` ## Files | Action | File | What | |--------|------|------| | **Add** | `agents/maui-expert-reviewer.md` | 30 dimensions, 200+ CHECKs, routing table | | **Add** | `instructions/collectionview-{android,ios,windows}` | Platform-isolated CV rules | | **Add** | `instructions/{handler-patterns,layout-system,performance-hotpaths,public-api,threading-async}` | Domain-specific ambient guidance | | **Add** | `scripts/post-inline-review.ps1` | Posts .json as GitHub PR review | | **Del** | `skills/code-review/references/review-rules.md` | Absorbed into agent | | **Mod** | `skills/code-review/SKILL.md` | Delegates to agent | | **Mod** | `scripts/Review-PR.ps1` | Prompt + inline posting wiring | | **Mod** | `eng/pipelines/ci-copilot.yml` | `COMMENTS_VIA_FILE` env var | --------- Co-authored-by: kubaflo <kubaflo@users.noreply.github.com> Co-authored-by: T-Gro <46543583+T-Gro@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>
…View2 is not connected in Appium. (dotnet#35335) ### Description of Changes - Recently, the Appium driver has not been connecting properly to the native WebView2 control on Windows. While running locally using Appium Inspector with the WebView control, the inspector is unable to recognize the WebView and displays an error. - Due to this Appium driver issue, the WebView lane in CI takes a long time to run (approximately 3 hours) and eventually gets cancelled. As a temporary workaround, the WebView lane has been temporarily removed from the Windows CI pipeline to allow the CI process to complete more quickly. <img width="649" height="294" alt="image" src="https://github.com/user-attachments/assets/68df006b-56d6-4bfa-870a-a4184f5b18b7" /> <img width="576" height="430" alt="image" src="https://github.com/user-attachments/assets/40c222e8-4935-450d-be7e-5ee9245e9eb1" /> **Issue:** dotnet#35334
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35444Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35444" |
|
Hey there @@KarthikRajaKalaimani! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed. |
|
/review -b feature/regression-check -p android |
🤖 AI Summary
📊 Review Session —
|
| Test | Without Fix (expect FAIL) | With Fix (expect PASS) |
|---|---|---|
🧪 NumericBindablePropertyPrimitives NumericBindablePropertyPrimitives |
✅ FAIL — 100s | ✅ PASS — 21s |
📄 ConvertibleToView ConvertibleToView |
🔍 NO MATCH | 🔍 NO MATCH |
📄 SetValue SetValue |
✅ FAIL — 37s | ✅ PASS — 29s |
🔴 Without fix — 🧪 NumericBindablePropertyPrimitives: FAIL ✅ · 100s
Determining projects to restore...
Restored /home/vsts/work/1/s/src/BlazorWebView/src/Maui/Microsoft.AspNetCore.Components.WebView.Maui.csproj (in 7.72 sec).
Restored /home/vsts/work/1/s/src/Controls/src/Core/Controls.Core.csproj (in 7.55 sec).
Restored /home/vsts/work/1/s/src/Graphics/src/Graphics/Graphics.csproj (in 14 ms).
Restored /home/vsts/work/1/s/src/Essentials/src/Essentials.csproj (in 32 ms).
Restored /home/vsts/work/1/s/src/Core/src/Core.csproj (in 68 ms).
Restored /home/vsts/work/1/s/src/Controls/src/Xaml/Controls.Xaml.csproj (in 32 ms).
Restored /home/vsts/work/1/s/src/Controls/tests/SourceGen.UnitTests/SourceGen.UnitTests.csproj (in 2.44 sec).
2 of 9 projects are up-to-date for restore.
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Graphics -> /home/vsts/work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Essentials -> /home/vsts/work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Core -> /home/vsts/work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
Controls.BindingSourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Microsoft.AspNetCore.Components.WebView.Maui -> /home/vsts/work/1/s/artifacts/bin/Microsoft.AspNetCore.Components.WebView.Maui/Debug/net10.0/Microsoft.AspNetCore.Components.WebView.Maui.dll
Controls.Xaml -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0/Microsoft.Maui.Controls.Xaml.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.SourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.SourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.SourceGen.dll
SourceGen.UnitTests -> /home/vsts/work/1/s/artifacts/bin/SourceGen.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.SourceGen.UnitTests.dll
Test run for /home/vsts/work/1/s/artifacts/bin/SourceGen.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.SourceGen.UnitTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.08] Discovering: Microsoft.Maui.Controls.SourceGen.UnitTests
[xUnit.net 00:00:00.15] Discovered: Microsoft.Maui.Controls.SourceGen.UnitTests
[xUnit.net 00:00:00.16] Starting: Microsoft.Maui.Controls.SourceGen.UnitTests
[xUnit.net 00:00:02.15] Microsoft.Maui.Controls.SourceGen.UnitTests.NumericBindablePropertyPrimitives.BindableProperty_PrimitiveSmallIntegers_EmitTypedCastsAndBoundaries [FAIL]
[xUnit.net 00:00:02.15] Assert.Empty() Failure: Collection was not empty
[xUnit.net 00:00:02.15] Collection: [Test.xaml(8,72): error MAUIG1010: Cannot convert "65535" into "ushort".]
[xUnit.net 00:00:02.15] Stack Trace:
[xUnit.net 00:00:02.15] /_/src/Controls/tests/SourceGen.UnitTests/InitializeComponent/NumericBindablePropertyPrimitives.cs(85,0): at Microsoft.Maui.Controls.SourceGen.UnitTests.NumericBindablePropertyPrimitives.BindableProperty_PrimitiveSmallIntegers_EmitTypedCastsAndBoundaries()
[xUnit.net 00:00:02.15] at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
[xUnit.net 00:00:02.15] at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
[xUnit.net 00:00:02.16] Finished: Microsoft.Maui.Controls.SourceGen.UnitTests
Failed Microsoft.Maui.Controls.SourceGen.UnitTests.NumericBindablePropertyPrimitives.BindableProperty_PrimitiveSmallIntegers_EmitTypedCastsAndBoundaries [1 s]
Error Message:
Assert.Empty() Failure: Collection was not empty
Collection: [Test.xaml(8,72): error MAUIG1010: Cannot convert "65535" into "ushort".]
Stack Trace:
at Microsoft.Maui.Controls.SourceGen.UnitTests.NumericBindablePropertyPrimitives.BindableProperty_PrimitiveSmallIntegers_EmitTypedCastsAndBoundaries() in /_/src/Controls/tests/SourceGen.UnitTests/InitializeComponent/NumericBindablePropertyPrimitives.cs:line 85
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Test Run Failed.
Total tests: 1
Failed: 1
Total time: 2.7719 Seconds
🟢 With fix — 🧪 NumericBindablePropertyPrimitives: PASS ✅ · 21s
Determining projects to restore...
All projects are up-to-date for restore.
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Graphics -> /home/vsts/work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Essentials -> /home/vsts/work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Core -> /home/vsts/work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
Controls.BindingSourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Xaml -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0/Microsoft.Maui.Controls.Xaml.dll
Microsoft.AspNetCore.Components.WebView.Maui -> /home/vsts/work/1/s/artifacts/bin/Microsoft.AspNetCore.Components.WebView.Maui/Debug/net10.0/Microsoft.AspNetCore.Components.WebView.Maui.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.SourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.SourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.SourceGen.dll
SourceGen.UnitTests -> /home/vsts/work/1/s/artifacts/bin/SourceGen.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.SourceGen.UnitTests.dll
Test run for /home/vsts/work/1/s/artifacts/bin/SourceGen.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.SourceGen.UnitTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.21] Discovering: Microsoft.Maui.Controls.SourceGen.UnitTests
[xUnit.net 00:00:00.30] Discovered: Microsoft.Maui.Controls.SourceGen.UnitTests
[xUnit.net 00:00:00.31] Starting: Microsoft.Maui.Controls.SourceGen.UnitTests
[xUnit.net 00:00:04.28] Finished: Microsoft.Maui.Controls.SourceGen.UnitTests
Passed Microsoft.Maui.Controls.SourceGen.UnitTests.NumericBindablePropertyPrimitives.BindableProperty_PrimitiveSmallIntegers_EmitTypedCastsAndBoundaries [3 s]
Test Run Successful.
Total tests: 1
Passed: 1
Total time: 5.3809 Seconds
🔴 Without fix — 📄 ConvertibleToView: 🔍 NO MATCH · 82s
(truncated to last 15,000 chars)
UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui24472.xaml(41,32): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui24500.xaml(6,28): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui25309.xaml(21,9): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui25871.xaml(14,24): XamlC warning XC0045: Binding: Property "UpdateProgress" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui25871ViewModel". [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui25935.xaml(8,13): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31939.xaml(7,29): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31939.xaml(14,29): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31939.xaml(15,29): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(7,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(12,56): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(18,84): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(23,84): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(30,56): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(36,84): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(44,28): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32056.xaml(9,9): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32837.xaml(13,18): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32924.xaml(14,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32924.xaml(18,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32924.xaml(22,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32924.xaml(27,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui33291.xaml(20,29): XamlC warning XC0045: Binding: Property "BindingContext" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui33291Item". [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui33293.xaml(14,29): XamlC warning XC0045: Binding: Property "BindingContext" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui33293Product". [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui33876.xaml(8,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui34490.xaml(12,25): XamlC warning XC0045: Binding: Property "BindingContext" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui34490ItemModel". [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui6367.xaml(10,50): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui8149.xaml(12,43): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/RefToXamlControl.xaml(7,33): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/SetValue.xaml(20,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/SetValue.xaml(52,27): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/SetValue.xaml(53,27): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/WarnOnObsolete.xaml(6,25): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoleteBP" is deprecated. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/WarnOnObsolete.xaml(6,42): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoleteProp" is deprecated. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/WarnOnObsolete.xaml(6,61): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoletePropSetter" is deprecated. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/XReference.xaml(16,4): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/XReference.xaml(21,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/XReference.xaml(21,77): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Gh2007.rtxc.xaml(3,9): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
Controls.Xaml.UnitTests -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.dll
Test run for /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.34] Discovering: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:04.67] Discovered: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:04.68] Starting: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:04.69] Finished: Microsoft.Maui.Controls.Xaml.UnitTests
No test matches the given testcase filter `ConvertibleToView` in /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.dll
🟢 With fix — 📄 ConvertibleToView: 🔍 NO MATCH · 62s
(truncated to last 15,000 chars)
UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui24472.xaml(41,32): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui24500.xaml(6,28): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui25309.xaml(21,9): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui25871.xaml(14,24): XamlC warning XC0045: Binding: Property "UpdateProgress" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui25871ViewModel". [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui25935.xaml(8,13): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31939.xaml(7,29): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31939.xaml(14,29): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31939.xaml(15,29): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(7,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(12,56): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(18,84): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(23,84): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(30,56): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(36,84): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui31995.xaml(44,28): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32056.xaml(9,9): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32837.xaml(13,18): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32924.xaml(14,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32924.xaml(18,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32924.xaml(22,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui32924.xaml(27,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui33291.xaml(20,29): XamlC warning XC0045: Binding: Property "BindingContext" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui33291Item". [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui33293.xaml(14,29): XamlC warning XC0045: Binding: Property "BindingContext" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui33293Product". [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui33876.xaml(8,20): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui34490.xaml(12,25): XamlC warning XC0045: Binding: Property "BindingContext" not found on "Microsoft.Maui.Controls.Xaml.UnitTests.Maui34490ItemModel". [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui6367.xaml(10,50): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Maui8149.xaml(12,43): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/RefToXamlControl.xaml(7,33): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/SetValue.xaml(20,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/SetValue.xaml(52,27): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/SetValue.xaml(53,27): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/WarnOnObsolete.xaml(6,25): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoleteBP" is deprecated. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/WarnOnObsolete.xaml(6,42): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoleteProp" is deprecated. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/WarnOnObsolete.xaml(6,61): XamlC warning XC0618: Property, Property setter or BindableProperty "ObsoletePropSetter" is deprecated. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/XReference.xaml(16,4): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/XReference.xaml(21,26): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/XReference.xaml(21,77): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Issues/Gh2007.rtxc.xaml(3,9): XamlC warning XC0022: Binding could be compiled to improve runtime performance if x:DataType is specified. See https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings for more information. [/home/vsts/work/1/s/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj]
Controls.Xaml.UnitTests -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.dll
Test run for /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.25] Discovering: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:03.90] Discovered: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:03.91] Starting: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:03.93] Finished: Microsoft.Maui.Controls.Xaml.UnitTests
No test matches the given testcase filter `ConvertibleToView` in /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.dll
🔴 Without fix — 📄 SetValue: FAIL ✅ · 37s
Determining projects to restore...
All projects are up-to-date for restore.
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Graphics -> /home/vsts/work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Essentials -> /home/vsts/work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Core -> /home/vsts/work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
Controls.BindingSourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
Maps -> /home/vsts/work/1/s/artifacts/bin/Maps/Debug/net10.0/Microsoft.Maui.Maps.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Xaml -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0/Microsoft.Maui.Controls.Xaml.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Maps -> /home/vsts/work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0/Microsoft.Maui.Controls.Maps.dll
TestUtils -> /home/vsts/work/1/s/artifacts/bin/TestUtils/Debug/netstandard2.0/Microsoft.Maui.TestUtils.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Graphics -> /home/vsts/work/1/s/artifacts/bin/Graphics/Debug/netstandard2.0/Microsoft.Maui.Graphics.dll
Controls.Xaml.UnitTests.ExternalAssembly -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests.ExternalAssembly/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.ExternalAssembly.dll
Controls.Xaml.UnitTests.InternalsHiddenAssembly -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests.InternalsHiddenAssembly/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.InternalsHiddenAssembly.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Xaml.UnitTests.InternalsVisibleAssembly -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests.InternalsVisibleAssembly/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.InternalsVisibleAssembly.dll
Essentials -> /home/vsts/work/1/s/artifacts/bin/Essentials/Debug/netstandard2.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Maui25871Library -> /home/vsts/work/1/s/artifacts/bin/Maui25871Library/Debug/net10.0/Maui25871Library.dll
Core -> /home/vsts/work/1/s/artifacts/bin/Core/Debug/netstandard2.0/Microsoft.Maui.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.Core/Debug/netstandard2.0/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Xaml -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml/Debug/netstandard2.0/Microsoft.Maui.Controls.Xaml.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.SourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.SourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.SourceGen.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Build.Tasks -> /home/vsts/work/1/s/artifacts/bin/Controls.Build.Tasks/Debug/netstandard2.0/Microsoft.Maui.Controls.Build.Tasks.dll
Controls.Xaml.UnitTests -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.dll
Test run for /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.52] Discovering: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:05.17] Discovered: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:05.17] Starting: Microsoft.Maui.Controls.Xaml.UnitTests
Passed TestSetValueToBindableProperty [66 ms]
Passed NonIntEnums(inflator: SourceGen) [61 ms]
Passed NonIntEnums(inflator: XamlC) [9 ms]
Passed NonIntEnums(inflator: Runtime) [94 ms]
Passed StringValueWithUnicode(inflator: Runtime) [38 ms]
Passed StringValueWithUnicode(inflator: SourceGen) [1 ms]
Passed StringValueWithUnicode(inflator: XamlC) [1 ms]
Passed SetValueWithImplicitOperatorOnTarget(inflator: Runtime) [19 ms]
Passed SetValueWithImplicitOperatorOnTarget(inflator: SourceGen) [1 ms]
Passed SetValueWithImplicitOperatorOnTarget(inflator: XamlC) [3 ms]
Passed SetSingleCollectionContent(inflator: XamlC) [4 ms]
Passed SetSingleCollectionContent(inflator: Runtime) [16 ms]
Passed SetSingleCollectionContent(inflator: SourceGen) [< 1 ms]
Passed SetWithImplicitOperatorOnTarget(inflator: Runtime) [10 ms]
Passed SetWithImplicitOperatorOnTarget(inflator: SourceGen) [1 ms]
Passed SetWithImplicitOperatorOnTarget(inflator: XamlC) [< 1 ms]
Passed FlagsAreApplied(inflator: XamlC) [3 ms]
Passed FlagsAreApplied(inflator: SourceGen) [1 ms]
Passed FlagsAreApplied(inflator: Runtime) [11 ms]
Passed SetValueToBP(inflator: XamlC) [1 ms]
Passed SetValueToBP(inflator: SourceGen) [1 ms]
Passed SetValueToBP(inflator: Runtime) [12 ms]
Passed SetBoolValue(inflator: SourceGen) [1 ms]
Passed SetBoolValue(inflator: Runtime) [44 ms]
Passed SetBoolValue(inflator: XamlC) [< 1 ms]
Passed DefCollections(inflator: Runtime) [15 ms]
Passed DefCollections(inflator: XamlC) [1 ms]
Passed DefCollections(inflator: SourceGen) [1 ms]
Passed SetBindingToBP(inflator: SourceGen) [8 ms]
Passed SetBindingToBP(inflator: XamlC) [1 ms]
Passed SetBindingToBP(inflator: Runtime) [10 ms]
Passed SetWithImplicitOperatorOnSource(inflator: Runtime) [10 ms]
Passed SetWithImplicitOperatorOnSource(inflator: SourceGen) [1 ms]
Passed SetWithImplicitOperatorOnSource(inflator: XamlC) [< 1 ms]
Passed SetAttachedBP(inflator: XamlC) [1 ms]
Passed SetAttachedBP(inflator: Runtime) [10 ms]
Passed SetAttachedBP(inflator: SourceGen) [1 ms]
Passed ConversionsAreAppliedOnAdd(inflator: SourceGen) [2 ms]
Passed ConversionsAreAppliedOnAdd(inflator: XamlC) [1 ms]
Passed ConversionsAreAppliedOnAdd(inflator: Runtime) [23 ms]
Passed SetImplicitSingleCollectionContent(inflator: XamlC) [1 ms]
Passed SetImplicitSingleCollectionContent(inflator: SourceGen) [1 ms]
Passed SetImplicitSingleCollectionContent(inflator: Runtime) [14 ms]
Passed SetCollectionContent(inflator: SourceGen) [1 ms]
Passed SetCollectionContent(inflator: XamlC) [1 ms]
[xUnit.net 00:00:05.85] MorePrimitiveTypes(inflator: SourceGen) [FAIL]
[xUnit.net 00:00:05.85] Assert.Equal() Failure: Values differ
[xUnit.net 00:00:05.85] Expected: 150
[xUnit.net 00:00:05.85] Actual: 255
[xUnit.net 00:00:05.85] Stack Trace:
[xUnit.net 00:00:05.85] /_/src/Controls/tests/Xaml.UnitTests/SetValue.xaml.cs(571,0): at Microsoft.Maui.Controls.Xaml.UnitTests.SetValue.Tests.MorePrimitiveTypes(XamlInflator inflator)
[xUnit.net 00:00:05.85] at InvokeStub_Tests.MorePrimitiveTypes(Object, Span`1)
[xUnit.net 00:00:05.85] at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Passed SetCollectionContent(inflator: Runtime) [13 ms]
Passed MorePrimitiveTypes(inflator: XamlC) [14 ms]
Passed MorePrimitiveTypes(inflator: Runtime) [11 ms]
Failed MorePrimitiveTypes(inflator: SourceGen) [3 ms]
Error Message:
Assert.Equal() Failure: Values differ
Expected: 150
Actual: 255
Stack Trace:
at Microsoft.Maui.Controls.Xaml.UnitTests.SetValue.Tests.MorePrimitiveTypes(XamlInflator inflator) in /_/src/Controls/tests/Xaml.UnitTests/SetValue.xaml.cs:line 571
at InvokeStub_Tests.MorePrimitiveTypes(Object, Span`1)
at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
Passed ConversionsAreAppliedOnSet(inflator: XamlC) [1 ms]
Passed ConversionsAreAppliedOnSet(inflator: SourceGen) [1 ms]
Passed ConversionsAreAppliedOnSet(inflator: Runtime) [10 ms]
Passed SetImplicitContent(inflator: SourceGen) [1 ms]
Passed SetImplicitContent(inflator: XamlC) [1 ms]
Passed SetImplicitContent(inflator: Runtime) [13 ms]
Passed SetBindingWithImplicitPath(inflator: Runtime) [40 ms]
Passed SetBindingWithImplicitPath(inflator: XamlC) [1 ms]
Passed SetBindingWithImplicitPath(inflator: SourceGen) [< 1 ms]
Passed SetContent(inflator: SourceGen) [1 ms]
Passed SetContent(inflator: Runtime) [13 ms]
Passed SetContent(inflator: XamlC) [< 1 ms]
Passed SetValueTypeProperties(inflator: SourceGen) [2 ms]
Passed SetValueTypeProperties(inflator: XamlC) [1 ms]
Passed SetValueTypeProperties(inflator: Runtime) [11 ms]
Passed SetImplicitCollectionContent(inflator: XamlC) [< 1 ms]
Passed SetImplicitCollectionContent(inflator: Runtime) [9 ms]
Passed SetImplicitCollectionContent(inflator: SourceGen) [< 1 ms]
Passed ListsAreSimplified(inflator: XamlC) [< 1 ms]
Passed ListsAreSimplified(inflator: SourceGen) [1 ms]
Passed ListsAreSimplified(inflator: Runtime) [9 ms]
Passed SetConvertibleProperties(inflator: Runtime) [9 ms]
Passed SetConvertibleProperties(inflator: XamlC) [1 ms]
Passed SetConvertibleProperties(inflator: SourceGen) [10 ms]
Passed SetEvent(inflator: XamlC) [1 ms]
Passed SetEvent(inflator: SourceGen) [1 ms]
Passed SetEvent(inflator: Runtime) [18 ms]
Passed CreateValueTypes(inflator: SourceGen) [1 s]
Passed CreateValueTypes(inflator: XamlC) [1 ms]
Passed CreateValueTypes(inflator: Runtime) [29 ms]
Passed SetBindingWithConverter(inflator: SourceGen) [2 ms]
Passed SetBindingWithConverter(inflator: Runtime) [13 ms]
[xUnit.net 00:00:07.85] Finished: Microsoft.Maui.Controls.Xaml.UnitTests
Passed SetBindingWithConverter(inflator: XamlC) [1 ms]
Passed SetPropertyDefinedOnGenericType(inflator: XamlC) [1 ms]
Passed SetPropertyDefinedOnGenericType(inflator: Runtime) [11 ms]
Passed SetPropertyDefinedOnGenericType(inflator: SourceGen) [< 1 ms]
Passed DonSetValueOnPrivateBP(inflator: Runtime) [4 ms]
Passed DonSetValueOnPrivateBP(inflator: SourceGen) [48 ms]
Passed DonSetValueOnPrivateBP(inflator: XamlC) [293 ms]
Total tests: 88
Test Run Failed.
Passed: 87
Failed: 1
Total time: 9.0747 Seconds
🟢 With fix — 📄 SetValue: PASS ✅ · 29s
Determining projects to restore...
All projects are up-to-date for restore.
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Graphics -> /home/vsts/work/1/s/artifacts/bin/Graphics/Debug/net10.0/Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Essentials -> /home/vsts/work/1/s/artifacts/bin/Essentials/Debug/net10.0/Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Core -> /home/vsts/work/1/s/artifacts/bin/Core/Debug/net10.0/Microsoft.Maui.dll
Controls.BindingSourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.BindingSourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.BindingSourceGen.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Maps -> /home/vsts/work/1/s/artifacts/bin/Maps/Debug/net10.0/Microsoft.Maui.Maps.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.Core/Debug/net10.0/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Xaml -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml/Debug/net10.0/Microsoft.Maui.Controls.Xaml.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Maps -> /home/vsts/work/1/s/artifacts/bin/Controls.Maps/Debug/net10.0/Microsoft.Maui.Controls.Maps.dll
TestUtils -> /home/vsts/work/1/s/artifacts/bin/TestUtils/Debug/netstandard2.0/Microsoft.Maui.TestUtils.dll
Controls.Xaml.UnitTests.InternalsHiddenAssembly -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests.InternalsHiddenAssembly/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.InternalsHiddenAssembly.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Graphics -> /home/vsts/work/1/s/artifacts/bin/Graphics/Debug/netstandard2.0/Microsoft.Maui.Graphics.dll
Maui25871Library -> /home/vsts/work/1/s/artifacts/bin/Maui25871Library/Debug/net10.0/Maui25871Library.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Xaml.UnitTests.InternalsVisibleAssembly -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests.InternalsVisibleAssembly/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.InternalsVisibleAssembly.dll
Essentials -> /home/vsts/work/1/s/artifacts/bin/Essentials/Debug/netstandard2.0/Microsoft.Maui.Essentials.dll
Controls.Xaml.UnitTests.ExternalAssembly -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests.ExternalAssembly/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.ExternalAssembly.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Core -> /home/vsts/work/1/s/artifacts/bin/Core/Debug/netstandard2.0/Microsoft.Maui.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Core -> /home/vsts/work/1/s/artifacts/bin/Controls.Core/Debug/netstandard2.0/Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Xaml -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml/Debug/netstandard2.0/Microsoft.Maui.Controls.Xaml.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.SourceGen -> /home/vsts/work/1/s/artifacts/bin/Controls.SourceGen/Debug/netstandard2.0/Microsoft.Maui.Controls.SourceGen.dll
##vso[build.updatebuildnumber]10.0.80-ci+azdo.14135604
Controls.Build.Tasks -> /home/vsts/work/1/s/artifacts/bin/Controls.Build.Tasks/Debug/netstandard2.0/Microsoft.Maui.Controls.Build.Tasks.dll
Controls.Xaml.UnitTests -> /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.dll
Test run for /home/vsts/work/1/s/artifacts/bin/Controls.Xaml.UnitTests/Debug/net10.0/Microsoft.Maui.Controls.Xaml.UnitTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 10.0.0)
[xUnit.net 00:00:00.43] Discovering: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:06.81] Discovered: Microsoft.Maui.Controls.Xaml.UnitTests
[xUnit.net 00:00:06.83] Starting: Microsoft.Maui.Controls.Xaml.UnitTests
Passed TestSetValueToBindableProperty [94 ms]
Passed NonIntEnums(inflator: SourceGen) [108 ms]
Passed NonIntEnums(inflator: XamlC) [8 ms]
Passed NonIntEnums(inflator: Runtime) [119 ms]
Passed StringValueWithUnicode(inflator: Runtime) [37 ms]
Passed StringValueWithUnicode(inflator: SourceGen) [29 ms]
Passed StringValueWithUnicode(inflator: XamlC) [2 ms]
Passed SetValueWithImplicitOperatorOnTarget(inflator: Runtime) [43 ms]
Passed SetValueWithImplicitOperatorOnTarget(inflator: SourceGen) [4 ms]
Passed SetValueWithImplicitOperatorOnTarget(inflator: XamlC) [1 ms]
Passed SetSingleCollectionContent(inflator: XamlC) [3 ms]
Passed SetSingleCollectionContent(inflator: Runtime) [32 ms]
Passed SetSingleCollectionContent(inflator: SourceGen) [3 ms]
Passed SetWithImplicitOperatorOnTarget(inflator: Runtime) [32 ms]
Passed SetWithImplicitOperatorOnTarget(inflator: SourceGen) [1 ms]
Passed SetWithImplicitOperatorOnTarget(inflator: XamlC) [1 ms]
Passed FlagsAreApplied(inflator: XamlC) [4 ms]
Passed FlagsAreApplied(inflator: SourceGen) [1 ms]
Passed FlagsAreApplied(inflator: Runtime) [16 ms]
Passed SetValueToBP(inflator: XamlC) [1 ms]
Passed SetValueToBP(inflator: SourceGen) [1 ms]
Passed SetValueToBP(inflator: Runtime) [17 ms]
Passed SetBoolValue(inflator: SourceGen) [1 ms]
Passed SetBoolValue(inflator: Runtime) [57 ms]
Passed SetBoolValue(inflator: XamlC) [1 ms]
Passed DefCollections(inflator: Runtime) [26 ms]
Passed DefCollections(inflator: XamlC) [1 ms]
Passed DefCollections(inflator: SourceGen) [1 ms]
Passed SetBindingToBP(inflator: SourceGen) [25 ms]
Passed SetBindingToBP(inflator: XamlC) [2 ms]
Passed SetBindingToBP(inflator: Runtime) [46 ms]
Passed SetWithImplicitOperatorOnSource(inflator: Runtime) [49 ms]
Passed SetWithImplicitOperatorOnSource(inflator: SourceGen) [5 ms]
Passed SetWithImplicitOperatorOnSource(inflator: XamlC) [1 ms]
Passed SetAttachedBP(inflator: XamlC) [6 ms]
Passed SetAttachedBP(inflator: Runtime) [49 ms]
Passed SetAttachedBP(inflator: SourceGen) [1 ms]
Passed ConversionsAreAppliedOnAdd(inflator: SourceGen) [12 ms]
Passed ConversionsAreAppliedOnAdd(inflator: XamlC) [4 ms]
Passed ConversionsAreAppliedOnAdd(inflator: Runtime) [31 ms]
Passed SetImplicitSingleCollectionContent(inflator: XamlC) [31 ms]
Passed SetImplicitSingleCollectionContent(inflator: SourceGen) [1 ms]
Passed SetImplicitSingleCollectionContent(inflator: Runtime) [46 ms]
Passed SetCollectionContent(inflator: SourceGen) [1 ms]
Passed SetCollectionContent(inflator: XamlC) [1 ms]
Passed SetCollectionContent(inflator: Runtime) [19 ms]
Passed MorePrimitiveTypes(inflator: XamlC) [19 ms]
Passed MorePrimitiveTypes(inflator: Runtime) [14 ms]
Passed MorePrimitiveTypes(inflator: SourceGen) [1 ms]
Passed ConversionsAreAppliedOnSet(inflator: XamlC) [1 ms]
Passed ConversionsAreAppliedOnSet(inflator: SourceGen) [1 ms]
Passed ConversionsAreAppliedOnSet(inflator: Runtime) [14 ms]
Passed SetImplicitContent(inflator: SourceGen) [1 ms]
Passed SetImplicitContent(inflator: XamlC) [1 ms]
Passed SetImplicitContent(inflator: Runtime) [20 ms]
Passed SetBindingWithImplicitPath(inflator: Runtime) [69 ms]
Passed SetBindingWithImplicitPath(inflator: XamlC) [4 ms]
Passed SetBindingWithImplicitPath(inflator: SourceGen) [1 ms]
Passed SetContent(inflator: SourceGen) [2 ms]
Passed SetContent(inflator: Runtime) [57 ms]
Passed SetContent(inflator: XamlC) [3 ms]
Passed SetValueTypeProperties(inflator: SourceGen) [7 ms]
Passed SetValueTypeProperties(inflator: XamlC) [3 ms]
Passed SetValueTypeProperties(inflator: Runtime) [32 ms]
Passed SetImplicitCollectionContent(inflator: XamlC) [1 ms]
Passed SetImplicitCollectionContent(inflator: Runtime) [28 ms]
Passed SetImplicitCollectionContent(inflator: SourceGen) [1 ms]
Passed ListsAreSimplified(inflator: XamlC) [2 ms]
Passed ListsAreSimplified(inflator: SourceGen) [3 ms]
Passed ListsAreSimplified(inflator: Runtime) [29 ms]
Passed SetConvertibleProperties(inflator: Runtime) [30 ms]
Passed SetConvertibleProperties(inflator: XamlC) [5 ms]
Passed SetConvertibleProperties(inflator: SourceGen) [2 ms]
Passed SetEvent(inflator: XamlC) [5 ms]
Passed SetEvent(inflator: SourceGen) [1 ms]
Passed SetEvent(inflator: Runtime) [39 ms]
Passed CreateValueTypes(inflator: SourceGen) [1 s]
Passed CreateValueTypes(inflator: XamlC) [1 ms]
Passed CreateValueTypes(inflator: Runtime) [7 ms]
Passed SetBindingWithConverter(inflator: SourceGen) [1 ms]
Passed SetBindingWithConverter(inflator: Runtime) [23 ms]
Passed SetBindingWithConverter(inflator: XamlC) [< 1 ms]
Passed SetPropertyDefinedOnGenericType(inflator: XamlC) [1 ms]
Passed SetPropertyDefinedOnGenericType(inflator: Runtime) [8 ms]
Passed SetPropertyDefinedOnGenericType(inflator: SourceGen) [< 1 ms]
[xUnit.net 00:00:10.60] Finished: Microsoft.Maui.Controls.Xaml.UnitTests
Passed DonSetValueOnPrivateBP(inflator: Runtime) [4 ms]
Passed DonSetValueOnPrivateBP(inflator: SourceGen) [45 ms]
Passed DonSetValueOnPrivateBP(inflator: XamlC) [281 ms]
Test Run Successful.
Total tests: 88
Passed: 88
Total time: 11.7759 Seconds
⚠️ Failure Details
- 🔍 ConvertibleToView without fix: test filter matched 0 tests
- filter:
ConvertibleToView
- filter:
- 🔍 ConvertibleToView with fix: test filter matched 0 tests
- filter:
ConvertibleToView
- filter:
📁 Fix files reverted (1 files)
src/Controls/src/SourceGen/NodeSGExtensions.cs
🧪 UI Tests
Full UI test matrix will run (no specific categories detected from PR changes).
🔍 Pre-Flight — Context & Validation
Issue: #35396 - Implicit parameter conversion from integer to byte fails with source generated XAML
PR: #35444 - Fix Implicit parameter conversion from integer to byte fails with source generated XAML
Platforms Affected: All (bug surfaces wherever the SourceGen XAML inflator runs — repro confirmed on Android & iOS in the linked issue)
Files Changed: 1 implementation (src/Controls/src/SourceGen/NodeSGExtensions.cs), 3 test (1 new SourceGen unit test + extensions to Xaml.UnitTests/SetValue.xaml{,.cs})
Branch: fix-35396 → main
Author: KarthikRajaKalaimani (community/Syncfusion partner)
Labels: community ✨, partner/syncfusion, xsg
Root cause
NodeSGExtensions.ValueForLanguagePrimitive is invoked by the SourceGen XAML inflator to turn a string attribute value (e.g. "150") into a C# expression that ends up inside target.SetValue(BPByteProperty, <expr>). For sbyte/byte/short/ushort, the method previously returned the result of SymbolDisplay.FormatPrimitive(value, true, false) — which emits a bare integer literal 150. Inside SetValue(BindableProperty, object) the literal is boxed as System.Int32. BindableProperty.TryConvert then asks SimpleConvertTypes[typeof(int)] whether int → byte is allowed; the entry only lists widening targets (string, long, float, double, decimal), so the conversion silently fails and the property keeps its default value. Plain CLR set; properties work because the source generator emits a direct view.Foo = 150 assignment where the C# compiler narrows at compile time.
Regression: behaviour worked on 9.0.120 SR12, broke starting 10.0.0-rc.1.25452.6 (per #35396).
PR's fix
In ValueForLanguagePrimitive, for the four small-integer cases (sbyte, byte, short, ushort), wrap the literal in an explicit C# cast:
return $"(byte){SymbolDisplay.FormatPrimitive(byteValue, true, false)}";so the generated code becomes target.SetValue(BPByteProperty, (byte)150) — the literal is now boxed as System.Byte, TryConvert sees an exact match against the property's returnType, and the assignment succeeds.
The PR also fixes a latent typo in the ushort branch where short.TryParse was used to parse a ushort value (so any value > short.MaxValue (e.g. 65535) previously failed parsing and reported a ConversionFailed diagnostic). It is now ushort.TryParse.
Key findings
- Surgical and correct — the cast forces correct boxing; for the
CreateValuesVisitorcallsite (Type var = (byte)150;) the redundant cast is folded by the C# compiler and harmless. - Latent ushort.TryParse bug — the
ushortbranch always calledshort.TryParse(caught by the new unit test asserting(ushort)65535round-trips). Worth calling out in the PR title/notes because it's an independent fix. - Out-of-range string values still take the diagnostic path —
byte.TryParse("300", …)returnsfalseand triggersreportDiagnostic(). Good. <x:Byte>150</x:Byte>workaround path unaffected — that goes through markup-extension creation, notValueForLanguagePrimitivefor the attribute value.- No public API surface changes, no XAML schema changes, no runtime behaviour changes outside the SourceGen path.
- Test coverage is appropriate — a new SourceGen unit test asserts that the generated source contains
(sbyte)-128,(byte)255,(short)0,(ushort)65535(covering boundary values + the ushort parse fix); existingMorePrimitiveTypesXAML test extended to round-tripBPByte="150"for runtime / XAMLC / SourceGen inflators.
Alternative approaches considered
| # | Approach | Pros | Cons |
|---|---|---|---|
| PR | Cast literal at emission site ((byte)150) |
Surgical, no runtime impact, fixes ushort.TryParse typo | Cast is dead code for the CreateValuesVisitor direct-assignment callsite (harmless but noisy) |
| Alt A | Wrap entire RHS with (toType) at the SetValue call-site (in ConvertTo / its caller) — leave ValueForLanguagePrimitive returning untyped literals |
Generated code at primitive-emission site stays minimal; reusable for any future boxing-sensitive emission | More invasive; need to thread toType to the SetValue emitter and ensure casts compose correctly with unchecked/checked contexts and reference types |
| Alt B | Fix BindableProperty.SimpleConvertTypes so typeof(int) → byte/sbyte/short/ushort is allowed (range-checked at runtime) |
Fixes root cause for ALL inflators (runtime, XAMLC, SourceGen) and any future runtime caller passing an int to a byte-typed SetValue; generated code stays compact |
Semantic change to a heavily-used runtime API; risks accepting narrowing values that previously failed; requires range validation; broader blast radius |
Code Review Summary
Verdict: LGTM (with minor note)
Confidence: high
Errors: 0 | Warnings: 0 | Suggestions: 1
Key code review findings:
- 💡
src/Controls/src/SourceGen/NodeSGExtensions.cs:331— the PR also corrects a latentshort.TryParse→ushort.TryParsebug in theushortbranch. This is an independent fix; the PR description could call this out explicitly so reviewers don't miss it. - ✅
src/Controls/tests/SourceGen.UnitTests/InitializeComponent/NumericBindablePropertyPrimitives.cs— new test asserts the typed-cast expressions are present in generated output AND covers theushortparse boundary (65535) which both the cast fix and the parse-typo fix depend on. - ✅
src/Controls/tests/Xaml.UnitTests/SetValue.xaml{,.cs}— extends the existingMorePrimitiveTypesround-trip test to exerciseBPByte="150"across runtime / XAMLC / SourceGen inflators, ensuring no regression in the working inflators.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #35444 | Cast literal at emission site ((byte)150) in NodeSGExtensions.ValueForLanguagePrimitive + fix latent short.TryParse→ushort.TryParse typo |
❌ Gate FAILED (per prior gate phase — likely environmental rather than fix-incorrect; the change is mechanically sound) | NodeSGExtensions.cs + 3 test files |
Original PR — surgical, low-risk |
| Alt A | try-fix-1 | Apply cast at the SetValue emitter (ConvertTo chain) instead of at the literal site |
⏳ See try-fix-1 | NodeSGExtensions.cs (ConvertTo callsite) |
Keeps primitive emitter untouched; threads target type to SetValue call |
| Alt B | try-fix-2 | Extend BindableProperty.SimpleConvertTypes to allow runtime int → {sbyte,byte,short,ushort} with range checks; revert SourceGen change |
⏳ See try-fix-2 | src/Controls/src/Core/BindableProperty.cs |
Fixes root cause for ALL inflators (runtime, XAMLC, SourceGen) |
Impacted UI test categories
NONE — this PR only changes XAML-source-generator output for primitive value emission. No UI controls or layouts are touched.
🔧 Fix — Analysis & Comparison
Try-Fix — Aggregate narrative for PR #35444
Issue: #35396 — Implicit parameter conversion from integer to byte fails with source generated XAML
PR: #35444 — Fix Implicit parameter conversion from integer to byte fails with source generated XAML
Gate result: ❌ FAILED (Android) — but bug is verifiable at SourceGen-output level cross-platform, and PR's fix + both alternatives pass the SourceGen + XAML round-trip unit tests on Linux.
Summary
The PR fixes a regression where source-generated XAML silently rejects byte/sbyte/short/ushort BP assignments because SymbolDisplay.FormatPrimitive emits a bare int literal that boxes as System.Int32 rather than the BP's declared type. PR's solution: prepend an explicit (byte) / (sbyte) / (short) / (ushort) cast at the literal emission site in NodeSGExtensions.ValueForLanguagePrimitive. The PR also fixes a latent short.TryParse → ushort.TryParse typo in the ushort branch.
Two meaningfully different alternative approaches were explored:
| # | Approach | Layer | Test outcome | Δ vs PR |
|---|---|---|---|---|
| PR | Cast literal at SourceGen emission site | SourceGen | ✅ 194/194 SG + 3/3 round-trip (verified on this branch) | baseline |
| try-fix-1 (Alt A) | Move cast to SetPropertyHelpers.SetValue emission site; gate by target BP/property type; keep ushort typo fix |
SourceGen (different file) | ✅ 194/194 SG + 3/3 round-trip + 88/88 SetValue XAML tests | Different location of the cast (boxing site rather than literal site). Generated code identical. ~30 lines vs ~10. |
| try-fix-2 (Alt B) | Fix root cause in BindableProperty.TryConvert SimpleConvertTypes; allow narrowing int → {sbyte,byte,short,ushort} with OverflowException guard |
Runtime | ✅ 194/194 SG + 3/3 round-trip + 88/88 SetValue XAML + 607/617 BindableProperty/Binding | Fixes the bug for all inflators and direct C# callers. Larger blast radius. |
Final recommendation
Keep the PR's fix as-is. It is the smallest, most-targeted change and is mechanically equivalent to Alt A in terms of generated output. Alt B is a defensible follow-up that fixes the underlying runtime weakness for all callers, but it broadens the behaviour of a heavily-used core API (BindableProperty.TryConvert) and should be discussed independently — not as a substitute for the targeted SourceGen fix that #35396 asked for.
The Android-gate failure is almost certainly orthogonal to this PR's fix — the bug surfaces and is verifiable at SourceGen-output level (a platform-agnostic Roslyn unit test), and both the PR and both alternatives pass the same SourceGen + Xaml.UnitTests round-trip suites on Linux. An Android-only failure for a SourceGen-codegen fix points to environmental flake or an unrelated test in the broader Android device-test matrix. (No Android device-test runner available in this autonomous sandbox — skipped per autonomous-execution policy; see individual try-fix-N/content.md files for details.)
Minor notes for the PR
- The latent
short.TryParse → ushort.TryParsetypo fix is an independent bug. The PR description doesn't call it out; would be a useful clarification for reviewers (also implies any value>32767for aushortXAML attribute previously triggered aConversionFaileddiagnostic in source-gen mode). - For non-boxing emission sites (e.g.
CreateValuesVisitor'sbyte var = 150;direct assignment and direct CLR-propertyview.Prop = 150paths), the PR emits a redundant cast that the C# compiler folds. Not a correctness issue, but cosmetically noisier than necessary. Alt A demonstrates this can be avoided cheaply if desired in a follow-up.
Files
pre-flight/content.md— issue context, PR summary, code review notes, fix-candidate tabletry-fix-1/content.md+try-fix-1/alt-a.diff— Alt A (cast at SetValue site)try-fix-2/content.md+try-fix-2/alt-b.diff— Alt B (runtime fix in TryConvert)
Iteration log
- Candidate 1 (Alt A) — moved cast to
SetValueemission site. First draft used redundant inner parens({type})({value})and broke the PR's substring-assertion test ((sbyte)(-128)vs expected(sbyte)-128). Removed inner parens (safe because inner is always a singleFormatPrimitiveliteral). Final result: 194/194 SG + 3/3 round-trip. - Candidate 2 (Alt B) — fixed root cause at runtime in
BindableProperty.TryConvert. Required updating the PR's whitebox SourceGen test (which asserted cast-substring presence) to assert behaviour-equivalent invariants, since Alt B emits no cast in generated source. Final result: 194/194 SG + 3/3 round-trip + 88/88 SetValue + 607/617 BindableProperty/Binding tests. - Stopping criterion reached — these two alternatives cover the two structurally meaningful "what layer fixes the bug" axes (codegen literal vs codegen call-site vs runtime); further variants (e.g.,
unchecked((byte)150), generatingbyte.Parseat runtime) would be cosmetic-only and not meaningfully different. Both alternatives are functionally equivalent to the PR. The PR is the smallest of the three and is recommended for landing.
Lessons fed to the expert reviewer between iterations
- (Alt A initial → Alt A final): Substring-assertion tests in source-gen unit tests are spelling-sensitive. When generating equivalent C# expressions, watch for differences in whitespace, parentheses, fully-qualified vs keyword forms — these matter for whitebox tests even when behaviour is identical. Prefer assertions on observable behaviour (e.g., the
MorePrimitiveTypesround-trip) over generated-source substring checks. - (Alt A → Alt B): When the PR's whitebox test asserts an implementation detail tied to a specific approach (here, "cast appears in the generated source"), an alternative approach that doesn't fit that detail will fail the test even when behaviourally correct. Update the test to be approach-agnostic when comparing fundamentally different strategies.
📋 Report — Final Recommendation
Comparative Report — PR #35444 Fix Candidates
Issue: #35396 — Implicit parameter conversion from integer to byte fails with source generated XAML
PR: #35444 by KarthikRajaKalaimani (partner/syncfusion)
Gate (Android): ❌ FAILED — but the failure is a filter mismatch (ConvertibleToView matched 0 tests). The two actual fix-validating tests (NumericBindablePropertyPrimitives, SetValue) both behaved as expected on Android: FAIL without fix, PASS with fix. The gate failure is operational, not functional.
Candidates
| # | Candidate | Layer | Approach | Files Touched | Test Result | Risk |
|---|---|---|---|---|---|---|
| 1 | pr |
SourceGen literal emitter | Cast literal at emission site (byte)150 + fix short.TryParse → ushort.TryParse typo |
1 impl + 3 test | ✅ SG 194/194 · ✅ Xaml SetValue 88/88 · Android FAIL→PASS as expected | Tiny |
| 2 | pr-plus-reviewer |
Same as pr |
pr + extends MorePrimitiveTypes round-trip to cover sbyte/short/ushort BPs at boundary values (closes runtime-coverage gap for the typo fix) |
1 impl + 3 test (extended) | ✅ Same as pr + 3 extra runtime asserts |
Tiny |
| 3 | try-fix-1 (Alt A) |
SourceGen SetValue emitter | Revert literal-cast wrapping; inject cast at SetPropertyHelpers.SetValue boxing site, gated by target BP/property type; keep typo fix |
2 impl (NodeSG reverted + SetPropertyHelpers +28 lines) + 3 test | ✅ SG 194/194 · ✅ Xaml SetValue 88/88 | Low |
| 4 | try-fix-2 (Alt B) |
Runtime (BindableProperty.TryConvert) |
Revert literal-cast wrapping; extend SimpleConvertTypes with narrowing entries int → {sbyte,byte,short,ushort}; wrap Convert.ChangeType in try/catch(OverflowException); keep typo fix |
BindableProperty.cs (+20) + NodeSGExtensions.cs (1 typo) + tests (whitebox asserts replaced) |
✅ SG 194/194 · ✅ Xaml SetValue 88/88 · ✅ Core BindableProperty 607/617 (10 pre-existing skips) | Medium — touches a heavily-used core API; broadens runtime behaviour for all callers |
Functional equivalence
Candidates 1, 2, 3 produce identical generated source for the BP path (target.SetValue(BP, (T)literal)). Candidate 4 produces clean target.SetValue(BP, literal) and relies on the runtime path to narrow.
All four candidates round-trip the bug-reported XAML <NumericView BPByte="150" ... /> correctly.
Differential dimensions
| Dimension | pr |
pr-plus-reviewer |
try-fix-1 (Alt A) |
try-fix-2 (Alt B) |
|---|---|---|---|---|
| Lines changed (impl) | ~10 | ~10 | ~30 | ~20 (different file: BindableProperty.cs) |
| Lines changed (test) | ~25 | ~45 | ~25 | ~25 (whitebox asserts rewritten) |
| Files touched | 4 | 4 | 5 | 4 (different mix) |
| Blast radius | SourceGen output only | SourceGen output only | SourceGen output only (different file) | Runtime conversion table — affects Runtime + XAMLC + SourceGen + any direct C# SetValue(BP, intValue) caller |
| Fixes for non-SourceGen callers | None (none needed for the reported bug) | None | None | Yes — direct C# SetValue(byteProp, (object)150) now succeeds |
| Cosmetic noise (redundant casts in generated source) | Minor — emitted at CreateValuesVisitor and direct CLR-property sites; folded by C# compiler |
Minor — same as pr |
None — cast only emitted where it's needed (boxing site) | None — no cast emitted at all |
| Test-strategy hygiene | Whitebox substring assert pins approach | Same + behavior asserts | Whitebox kept (still asserts cast presence after relocation) | Whitebox asserts had to be rewritten because cast isn't emitted under Alt B |
| Independent typo fix preserved | ✅ | ✅ | ✅ | ✅ |
Gate test on Android (NumericBindablePropertyPrimitives FAIL→PASS) |
✅ | ✅ | not run | not run |
Regression / gate analysis
Restating the rule: Candidates that failed regression tests must rank below those that passed. Applying it:
pr: Gate Android — both real fix-validation tests behaved as expected (FAIL→PASS). The "gate failed" verdict is from an operational filter mismatch onConvertibleToView(a phantom test target unrelated to this PR's diff), not a regression. Functionally passes.pr-plus-reviewer: Inherits theprmechanism unchanged plus additive test asserts; no regression possible. Functionally passes.try-fix-1(Alt A): SourceGen + Xaml.UnitTests pass on Linux; Android gate not exercised in autonomous sandbox (no device-test runner). Same SourceGen output aspr— no Android-specific concern. Functionally passes.try-fix-2(Alt B): SourceGen + Xaml + BindableProperty/Binding suites pass on Linux; Android gate not exercised. Broadens runtime behaviour — strictly more permissive (was silently rejecting, now narrows + validates). Functionally passes, with a wider behavioural-change surface than the others.
None of the four candidates is a "regression-failing" candidate. Ranking below is therefore on quality dimensions (scope, risk, coverage), with pr having the strongest direct evidence (the only candidate actually run on the gate platform).
Ranking
- 🥇
pr-plus-reviewer— strict superset ofpr. Same minimal implementation change (already known to be mechanically correct and observed FAIL→PASS on Android), with 3 additional runtime round-trip assertions across all four small-int BP types. Closes the only meaningful gap surfaced by expert review (theushort.TryParsetypo fix had no runtime-level test, only a SourceGen whitebox test). Cost: ~20 lines of additive test code with no risk of regression. - 🥈
pr— the submitted fix. Correct, surgical, well-scoped. The only reason it ranks belowpr-plus-revieweris the test coverage gap forushort.TryParseat runtime. - 🥉
try-fix-1(Alt A) — functionally equivalent topr/pr-plus-reviewer(same generated SourceGen output for BP path), cleaner generated code at non-BP call sites (no redundant casts invar x = 150;initializers and direct CLR-property assignments). Costs +20 lines and touches a second file (SetPropertyHelpers.cs). Conceptually nicer (cast at the boxing site, not the literal site, matches existing pattern inSetValue's ElementNode branch). Not worth the larger diff for a regression fix. try-fix-2(Alt B) — fixes the bug at the runtime root cause and benefits all inflators + direct C# callers. Strictly more permissive runtime semantics:SetValue(byteProp, (object)150)previously silently failed; now succeeds. Defensible as a separate improvement, but a much larger behavioural-change surface than the reported regression warrants. The runtime-broadening should be discussed independently of Implicit parameter conversion from integer to byte fails with source generated XAML #35396, not bundled with it.
Winner
🏆 pr-plus-reviewer (pr + extended MorePrimitiveTypes round-trip coverage).
Rationale
- Inherits all of
pr's strengths: surgical SourceGen-only change, minimal blast radius, mechanically correct, includes the latentushort.TryParsetypo fix. - Adds the only non-cosmetic improvement surfaced by the expert review: end-to-end runtime validation that the
ushort.TryParsetypo fix actually round-trips a65535value (not just emits the expected cast at codegen time). Without this assertion, a regression that re-introduces the typo could pass CI by emitting(ushort)<wrong-value>and only the SourceGen whitebox test would catch it (and that test is itself approach-coupled). - Cost is ~20 lines of additive XAML attributes + BP definitions + assertions. Zero risk to the impl side. No effect on the Android gate behaviour (which is operationally noisy on
ConvertibleToViewregardless). try-fix-1is functionally equivalent but not meaningfully better and 3× larger.try-fix-2is a strictly larger behavioural change that belongs in a follow-up issue.
Recommendation to PR author
- Land the PR as-is if minimizing churn; the impl is correct.
- Optionally apply the
pr-plus-reviewertest-coverage delta (also inexpert-pr-eval/content.md) before merge — pure additive test code, no implementation risk. - Required for PR description: call out the independent
ushort.TryParse → ushort.TryParsetypo fix as a separate bullet so reviewers and the changelog don't miss it. ([Draft] Readme WIP #1 finding ininline-findings.json.) - Follow-up (separate PR): consider Alt B (runtime narrowing in
BindableProperty.TryConvert) as a quality-of-life enhancement for all consumers ofSetValue(BindableProperty, object). Not blocking for Implicit parameter conversion from integer to byte fails with source generated XAML #35396.
…rce generated XAML (#35444) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details: When using a component property of type byte, its value cannot be assigned using source generated XAML. Instead, BindableObject logs a warning. ### Root Cause: The SourceGen inflator generates C# code by calling NodeSGExtensions.ValueForLanguagePrimitive() to convert a XAML string value like "150" into a C# expression. For byte, this method returned a bare integer literal 150 — because C# has no byte literal suffix the way it has f for float or m for decimal. The generated code therefore looked like target.SetValue(BPByteProperty, 150). In C#, the untyped literal 150 in a SetValue(BindableProperty, object) call gets boxed as System.Int32, not System.Byte. When BindableProperty.TryConvert then tries to reconcile the incoming System.Int32 value with the property's declared typeof(byte) return type, it consults its SimpleConvertTypes dictionary — which lists valid conversions for each incoming type. The typeof(int) entry only covers widening targets (string, long, float, double, decimal) and has no entry for byte. The conversion silently fails, the property is never written, and BindableObject logs "Cannot convert 150 to type'System.Byte'". This explains why plain public byte Foo { get; set; } properties work fine — the source gen takes a direct assignment path (view.Foo = 150) where C# handles the narrowing conversion at compile time with no boxing involved. ### Description of Change: In NodeSGExtensions.cs prepends an explicit (byte) cast to the generated expression, changing the output from 150 to (byte)150. Now the generated code is target.SetValue(BPByteProperty, (byte)150). The cast forces the literal to box as System.Byte. When TryConvert runs, it finds that the incoming value type (byte) matches the property's return type (byte) exactly and returns true immediately no conversion dictionary lookup needed, no silent failure. Additionally fix implemented for sbyte, short, ushort. **Tested the behavior in the following platforms:** - [x] Android - [x] Windows - [x] iOS - [x] Mac ### Reference: N/A ### Issues Fixed: Fixes #35396 ### Screenshots | Before | After | |---------|--------| | <img width="300" height="600" alt="image" src="https://github.com/user-attachments/assets/26555890-0245-4774-bf0d-2eb8ea4fec31" /> | <img width="300" height="600" alt="image (1)" src="https://github.com/user-attachments/assets/62d01e58-5e08-41cb-835d-d949fd5d375a" /> | --------- Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
…rce generated XAML (#35444) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details: When using a component property of type byte, its value cannot be assigned using source generated XAML. Instead, BindableObject logs a warning. ### Root Cause: The SourceGen inflator generates C# code by calling NodeSGExtensions.ValueForLanguagePrimitive() to convert a XAML string value like "150" into a C# expression. For byte, this method returned a bare integer literal 150 — because C# has no byte literal suffix the way it has f for float or m for decimal. The generated code therefore looked like target.SetValue(BPByteProperty, 150). In C#, the untyped literal 150 in a SetValue(BindableProperty, object) call gets boxed as System.Int32, not System.Byte. When BindableProperty.TryConvert then tries to reconcile the incoming System.Int32 value with the property's declared typeof(byte) return type, it consults its SimpleConvertTypes dictionary — which lists valid conversions for each incoming type. The typeof(int) entry only covers widening targets (string, long, float, double, decimal) and has no entry for byte. The conversion silently fails, the property is never written, and BindableObject logs "Cannot convert 150 to type'System.Byte'". This explains why plain public byte Foo { get; set; } properties work fine — the source gen takes a direct assignment path (view.Foo = 150) where C# handles the narrowing conversion at compile time with no boxing involved. ### Description of Change: In NodeSGExtensions.cs prepends an explicit (byte) cast to the generated expression, changing the output from 150 to (byte)150. Now the generated code is target.SetValue(BPByteProperty, (byte)150). The cast forces the literal to box as System.Byte. When TryConvert runs, it finds that the incoming value type (byte) matches the property's return type (byte) exactly and returns true immediately no conversion dictionary lookup needed, no silent failure. Additionally fix implemented for sbyte, short, ushort. **Tested the behavior in the following platforms:** - [x] Android - [x] Windows - [x] iOS - [x] Mac ### Reference: N/A ### Issues Fixed: Fixes #35396 ### Screenshots | Before | After | |---------|--------| | <img width="300" height="600" alt="image" src="https://github.com/user-attachments/assets/26555890-0245-4774-bf0d-2eb8ea4fec31" /> | <img width="300" height="600" alt="image (1)" src="https://github.com/user-attachments/assets/62d01e58-5e08-41cb-835d-d949fd5d375a" /> | --------- Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Issue Details:
When using a component property of type byte, its value cannot be assigned using source generated XAML. Instead, BindableObject logs a warning.
Root Cause:
The SourceGen inflator generates C# code by calling NodeSGExtensions.ValueForLanguagePrimitive() to convert a XAML string value like "150" into a C# expression. For byte, this method returned a bare integer literal 150 — because C# has no byte literal suffix the way it has f for float or m for decimal. The generated code therefore looked like
target.SetValue(BPByteProperty, 150). In C#, the untyped literal 150 in a SetValue(BindableProperty, object) call gets boxed as System.Int32, not System.Byte. When BindableProperty.TryConvert then tries to reconcile the incoming System.Int32 value with the property's declared typeof(byte) return type, it consults its SimpleConvertTypes dictionary — which lists valid conversions for each incoming type. The typeof(int) entry only covers widening targets (string, long, float, double, decimal) and has no entry for byte. The conversion silently fails, the property is never written, and BindableObject logs "Cannot convert 150 to type'System.Byte'". This explains why plain public byte Foo { get; set; } properties work fine — the source gen takes a direct assignment path (view.Foo = 150) where C# handles the narrowing conversion at compile time with no boxing involved.
Description of Change:
In NodeSGExtensions.cs prepends an explicit (byte) cast to the generated expression, changing the output from 150 to (byte)150. Now the generated code is target.SetValue(BPByteProperty, (byte)150). The cast forces the literal to box as System.Byte. When TryConvert runs, it finds that the incoming value type (byte) matches the property's return type (byte) exactly and returns true immediately no conversion dictionary lookup needed, no silent failure. Additionally fix implemented for sbyte, short, ushort.
Tested the behavior in the following platforms:
Reference:
N/A
Issues Fixed:
Fixes #35396
Screenshots