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.