Uh oh!
There was an error while loading. Please reload this page.
Fix runtime dispatch to static virtuals on interface types - #91374
Conversation
We were not generating information about static virtuals on interface types. Information about default interface methods normally goes to the class, but if the T we're dispatching on is an interface, this information wasn't generated. The fix is to put this information into dispatch maps and sealed vtables, same way we do for classes. The test shows what the problem is - if we change `IBar` to be a class, things would work even before this PR.
ghost
commented
Aug 31, 2023
Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas Issue DetailsFixes #90333. We were not generating information about static virtuals on interface types. Information about default interface methods normally goes to the class, but if the T we're dispatching on is an interface, this information wasn't generated. The fix is to put this information into dispatch maps and sealed vtables, same way we do for classes. The test shows what the problem is - if we change Cc @dotnet/ilc-contrib
|
MichalStrehovsky
commented
Aug 31, 2023
/azp run runtime-extra-platforms |
|
Azure Pipelines successfully started running 1 pipeline(s). |
MichalStrehovsky
commented
Sep 1, 2023
/backport to release/8.0 |
Started backporting to release/8.0: https://github.com/dotnet/runtime/actions/runs/6043720551 |
Fixes#90333.
We were not generating information about static virtuals on interface types. Information about default interface methods normally goes to the class, but if the T we're dispatching on is an interface, this information wasn't generated. The fix is to put this information into dispatch maps and sealed vtables, same way we do for classes.
The test shows what the problem is - if we change
IBarto be a class, things would work even before this PR.Cc @dotnet/ilc-contrib