[mpc] Fix collecting closed type generics #891
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Most of work was done in #830.
However, current implementation fails on this code:
Generated code
and
MPC is trying to collect type argument
T
from open generic typeCustomGenericClass<T>
here:https://github.com/neuecc/MessagePack-CSharp/blob/275eb96cdcce5d10c3326a2b940af5fcdeeda066/src/MessagePack.GeneratorCore/CodeAnalysis/TypeCollector.cs#L544-L548
But because type argument has no declared accessibility (
Accessibility.NotApplicable
) it fails to passIsAllowAccessibility
check and collect stops there.We can skip all generics definitions (e.g.
Foo<T>
) and collect only closed type references (e.g.Foo<string>
). That's a main purpose of this commit.Generated code
and