Skip to content

Fix Implicit parameter conversion from integer to byte fails with source generated XAML#35444

Merged
kubaflo merged 10 commits into
dotnet:inflight/currentfrom
KarthikRajaKalaimani:fix-35396
May 19, 2026
Merged

Fix Implicit parameter conversion from integer to byte fails with source generated XAML#35444
kubaflo merged 10 commits into
dotnet:inflight/currentfrom
KarthikRajaKalaimani:fix-35396

Conversation

@KarthikRajaKalaimani

Copy link
Copy Markdown
Contributor

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:

  • Android
  • Windows
  • iOS
  • Mac

Reference:

N/A

Issues Fixed:

Fixes #35396

Screenshots

Before After
image image (1)

dependabot Bot and others added 9 commits May 7, 2026 08:48
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>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Magick.NET-Q8-AnyCPU&package-manager=nuget&previous-version=14.10.4&new-version=14.12.0)](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
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35444

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35444"

@dotnet-policy-service dotnet-policy-service Bot added the community ✨ Community Contribution label May 14, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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.

@kubaflo

kubaflo commented May 19, 2026

Copy link
Copy Markdown
Contributor

/review -b feature/regression-check -p android

@MauiBot

MauiBot commented May 19, 2026

Copy link
Copy Markdown
Collaborator

🤖 AI Summary

👋 @KarthikRajaKalaimani — new AI review results are available. Please review the latest session below.

📊 Review Session15d9dc1 · removed unwanted changes · 2026-05-19 13:33 UTC
🚦 Gate — Test Before & After Fix

Gate Result: ❌ FAILED

Platform: ANDROID · Base: main · Merge base: dbe9ddfd

🩺 Test filter mismatch — filter ConvertibleToView matched 0 tests. The test runner produced zero results because no test class or method matched the filter. Common causes: the gate filter was derived from the file name but the actual test class is named differently, or the test was renamed/moved without updating the auto-detection. Verify the test class name matches what the gate is searching for.

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
  • 🔍 ConvertibleToView with fix: test filter matched 0 tests
    • filter: ConvertibleToView
📁 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-35396main
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 CreateValuesVisitor callsite (Type var = (byte)150;) the redundant cast is folded by the C# compiler and harmless.
  • Latent ushort.TryParse bug — the ushort branch always called short.TryParse (caught by the new unit test asserting (ushort)65535 round-trips). Worth calling out in the PR title/notes because it's an independent fix.
  • Out-of-range string values still take the diagnostic pathbyte.TryParse("300", …) returns false and triggers reportDiagnostic(). Good.
  • <x:Byte>150</x:Byte> workaround path unaffected — that goes through markup-extension creation, not ValueForLanguagePrimitive for 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); existing MorePrimitiveTypes XAML test extended to round-trip BPByte="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 latent short.TryParseushort.TryParse bug in the ushort branch. 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 the ushort parse boundary (65535) which both the cast fix and the parse-typo fix depend on.
  • src/Controls/tests/Xaml.UnitTests/SetValue.xaml{,.cs} — extends the existing MorePrimitiveTypes round-trip test to exercise BPByte="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.TryParseushort.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.TryParse typo fix is an independent bug. The PR description doesn't call it out; would be a useful clarification for reviewers (also implies any value >32767 for a ushort XAML attribute previously triggered a ConversionFailed diagnostic in source-gen mode).
  • For non-boxing emission sites (e.g. CreateValuesVisitor's byte var = 150; direct assignment and direct CLR-property view.Prop = 150 paths), 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 table
  • try-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

  1. Candidate 1 (Alt A) — moved cast to SetValue emission 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 single FormatPrimitive literal). Final result: 194/194 SG + 3/3 round-trip.
  2. 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.
  3. 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), generating byte.Parse at 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 MorePrimitiveTypes round-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 on ConvertibleToView (a phantom test target unrelated to this PR's diff), not a regression. Functionally passes.
  • pr-plus-reviewer: Inherits the pr mechanism 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 as pr — 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

  1. 🥇 pr-plus-reviewer — strict superset of pr. 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 (the ushort.TryParse typo fix had no runtime-level test, only a SourceGen whitebox test). Cost: ~20 lines of additive test code with no risk of regression.
  2. 🥈 pr — the submitted fix. Correct, surgical, well-scoped. The only reason it ranks below pr-plus-reviewer is the test coverage gap for ushort.TryParse at runtime.
  3. 🥉 try-fix-1 (Alt A) — functionally equivalent to pr/pr-plus-reviewer (same generated SourceGen output for BP path), cleaner generated code at non-BP call sites (no redundant casts in var 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 in SetValue's ElementNode branch). Not worth the larger diff for a regression fix.
  4. 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 latent ushort.TryParse typo fix.
  • Adds the only non-cosmetic improvement surfaced by the expert review: end-to-end runtime validation that the ushort.TryParse typo fix actually round-trips a 65535 value (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 ConvertibleToView regardless).
  • try-fix-1 is functionally equivalent but not meaningfully better and 3× larger. try-fix-2 is a strictly larger behavioural change that belongs in a follow-up issue.

Recommendation to PR author

  1. Land the PR as-is if minimizing churn; the impl is correct.
  2. Optionally apply the pr-plus-reviewer test-coverage delta (also in expert-pr-eval/content.md) before merge — pure additive test code, no implementation risk.
  3. Required for PR description: call out the independent ushort.TryParse → ushort.TryParse typo fix as a separate bullet so reviewers and the changelog don't miss it. ([Draft] Readme WIP #1 finding in inline-findings.json.)
  4. Follow-up (separate PR): consider Alt B (runtime narrowing in BindableProperty.TryConvert) as a quality-of-life enhancement for all consumers of SetValue(BindableProperty, object). Not blocking for Implicit parameter conversion from integer to byte fails with source generated XAML #35396.

@MauiBot MauiBot added s/agent-review-incomplete s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels May 19, 2026
@kubaflo kubaflo changed the base branch from main to inflight/current May 19, 2026 15:17
@kubaflo kubaflo merged commit fab47dc into dotnet:inflight/current May 19, 2026
2 of 11 checks passed
@github-actions github-actions Bot added this to the .NET 10.0 SR8 milestone May 19, 2026
@kubaflo kubaflo added s/agent-gate-failed AI could not verify tests catch the bug s/agent-approved AI agent recommends approval - PR fix is correct and optimal and removed s/agent-review-incomplete labels May 20, 2026
PureWeen pushed a commit that referenced this pull request Jun 2, 2026
…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>
PureWeen pushed a commit that referenced this pull request Jun 11, 2026
…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>
@sheiksyedm sheiksyedm modified the milestones: .NET 10 SR8, .NET 10 SR9 Jun 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration s/agent-approved AI agent recommends approval - PR fix is correct and optimal s/agent-gate-failed AI could not verify tests catch the bug s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) xsg Xaml sourceGen

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implicit parameter conversion from integer to byte fails with source generated XAML

7 participants