-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Update DynamicallyAccessedMembers annotation on EventSource #110001
Conversation
This takes advantage of dotnet#109814. This is in theory a breaking change in case someone took advantage of our annotation and is doing their own reflection on `EventSource` descendants. Someone else reflecting on EventSource is problematic however. We placed around various suppressions due to our own annotations like this: https://github.com/dotnet/runtime/blob/0d62887a30553b8177dc90f9e39559be0e6c7707/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs#L414-L424 It means that if someone else is reflection-accessing these, they would not get a trimming warning. Hopefully, nobody does that. This PR also assumes that nobody does that (and the PR should therefore not be breaking in practice). We annotate the class for our purposes, but someone else could be taking advantage of that in their own code.
Note regarding the
|
1 similar comment
Note regarding the
|
Tagging subscribers to this area: @tarekgh, @tommcdon, @pjanotti |
Why wouldn't they get a trimming warning? |
Because we suppressed them with the suppression I quoted. We annotate EventSource as "this is going to reflect on all methods" and we have a bunch of methods that should never be reflection-invoked. We suppressed it but the suppression will apply to anyone else taking advantage of the annotation because annotation doesn't discriminate. |
If someone else is reflection-accessing these specific methods ( The part that could be considered breaking is that someone could have been calling |
Yep, what I meant is that we annotate this as reflected-on "for us", not for someone else to use. The suppressions are one of the indicators that this is very specifically meant for us. Unfortunately there's no annotation that could make this contractually private so someone could be still taking advantage of it. |
This takes advantage of #109814. This is in theory a breaking change in case someone took advantage of our annotation and is doing their own reflection on
EventSource
descendants.Someone else reflecting on EventSource is problematic however. We placed around various suppressions due to our own annotations like this:
runtime/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs
Lines 414 to 424 in 0d62887
It means that if someone else is reflection-accessing various members on
EventSource
, they would not get a trimming warning. Hopefully, nobody does that. This PR also assumes that nobody does that (and the PR should therefore not be breaking in practice).Cc @eerhardt @dotnet/illink