Open simonmckenzie opened 3 months ago
I think this is obsolete after your last PR for 5.0.0?
Hi @ChristianSauer,
This PR isn't obsolete - there's still an issue with generic type parameter deduplication. I've rebased, simplified the code, and added another test now the other PR is merged.
This fixes an error where methods with the same parameters but different generic type parameters were being treated as identical during deduplication, resulting in the loss of interface methods.
The fix is to use
genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters
when constucting theSymbolDisplayFormat
used for deduplication.I have also added
SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces
to prevent types with the same name from being seen as identical.Finally, I have unified
MethodSignatureDisplayFormat
andTypeDisplayFormat
into a singleFullyQualifiedDisplayFormat
. These two display formats were used for method deduplication and generating type signatures from strings. It makes sense that they should follow the same rules.The effect of the change
Given this:
Deduplication key before change:
AMethod(Func)
Deduplication key after change:AMethod(Func<Task<System.Int32>>)
... or, given user-defined types, the key will contain fully-qualified types:
Deduplication key:
AMethod(Demo.Func<Demo.Task<System.Int32>>)
I have left the global namespaces out of the examples for the sake of simplicity
Addresses #56