-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[wasm] Regression: System.Text.Json
tests failing with trimming
#73347
Comments
Tagging subscribers to 'arch-wasm': @lewing Issue DetailsHit on #71203 - build, and log:
|
This was introduced by #73241, but it would seem that the errors being thrown are appropriate in this context — the constructor parameter names have been trimmed away and therefore it is not possible to bind them to a meaningful JSON contract. I’m surprised we’re running the reflection serialization tests with trimming enabled, since that is not supported and they could fail in all sorts of ways, including this one cc @eerhardt |
We are using trimming just to reduce code size for AOT, to save on build time. |
Understood, but at the same time these are tests for components that are inherently incompatible with trimming. We should probably just disable the tests for trimmed applications if there is such an attribute. |
Can we add something to preserve the needed bits though, so the tests can pass? We can do that just for the wasm+trimming case. |
As in specifically prevent trimming of Tuple parameter names? We use |
We use similar stuff in some test projects, like: runtime/src/libraries/System.Runtime.Loader/tests/System.Runtime.Loader.Tests.csproj Lines 66 to 69 in 8daeec2
|
The test should be marked with |
The test in question has been marked Lines 501 to 503 in 44cb67e
Perhaps the linker is being too eager when trimming parameter names in a constructor that has been explicitly opted out? |
The test also depends on the Tuple with just one argument to be preserved. Check the error message - it complains about |
By the sound if it, it might be possible to fix by declaring the nested tuple type as a dynamic dependency as well. |
Also, if you are using the DynamicDependency attribute, you should not need this:
It has same effect as the DynamicDependency attribute. |
Hit on #71203 - build, and log:
System.NotSupportedException : The deserialization constructor for type 'System.Tuple``1[System.Int32]' contains parameters with null names. This might happen because the parameter names have been trimmed by the linker. Consider using the source generated serializer instead. Path: $.Rest.
Changes since the last working rolling build: 197ae4c...bb3be81
cc @eerhardt @marek-safar @eiriktsarpalis
The text was updated successfully, but these errors were encountered: