On Fri Jun 6 10:14:22 2025 +0000, Rémi Bernon wrote:
This outputs rows for the generic interfaces too, whereas the generic types should be outputted only once, as CLR generics. ``` .namespace Windows.Foundation.Collections { .class interface public auto ansi abstract 'IIterator<ABI::Windows::Gaming::Input::ArcadeStick* >' { } // end of class Windows.Foundation.Collections.IIterator<ABI::Windows::Gaming::Input::ArcadeStick*
} .namespace Windows.Foundation.Collections { .class interface public auto ansi abstract 'IIterator<ABI::Windows::Gaming::Input::RawGameController* >' { } // end of class Windows.Foundation.Collections.IIterator<ABI::Windows::Gaming::Input::RawGameController*
} /* etc... */ ``` Should be instead one: ``` .namespace Windows.Foundation.Collections { .class interface public auto ansi abstract IIterator`1<T> { /* interface details, using T */ } } ``` It's probably fine to skip the generic interfaces entirely for now I don't think you can normally define new ones and I suspect their definition comes from a special handling in MIDL.
Still, for later when typerefs to parameterized types will be generated (for parameters, requires, etc), the names here seem to be wrong. I don't think it should be C++-style, and I think parameters should properly be referenced through typerefs too. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8222#note_105630