mirror of https://github.com/icsharpcode/ILSpy.git
Browse Source
Two predicates disagreed on what a generated name looks like. At the metadata level a '$' in the name counts, so MemberIsHidden treated VB$AnonymousType_0 as an anonymous type and dropped its definition from the output. At the type system level only '<' counted, so none of the anonymous-type translations in CallBuilder and ExpressionBuilder fired. VB assemblies therefore lost the definitions and kept the raw metadata names at every use site, which is not valid C#. Both levels now share one predicate and cannot drift apart again. It keeps the metadata-level behaviour exactly: counting every name that merely contains '<' would newly capture explicit implementations of generic interface members. Assisted-by: Claude:claude-fable-5:Claude Codepull/3964/head
2 changed files with 15 additions and 4 deletions
Loading…
Reference in new issue