Implement IEnumerator interface explicitly to satisfy dotnet linker #80
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
See this unusual stack trace for more context: AvaloniaUI/Avalonia#9127 (comment)
For some unknown reason that would be unreasonably complicated to find out why, dotnet/linker removes IEnumerator interface method implementations from the Enumerator class which we generate. Might be something related to their issues with cecil dotnet/linker#1187
NativeAOT linked works just fine with implicit methods.
But for mono/linker changing methods to explicitly implement interface helps here.
Other possible reasons: linker doesn't have enough information, because we use this enumerator from "object GetService(Type)" method, or we simply have a mistake in IL generation somewhere (or Cecil has). Like, our methods unnecessarily marked as "virtual" by default.