Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix generic class signature calculation #2927

Merged
merged 5 commits into from
Mar 12, 2024
Merged

Conversation

kennykerr
Copy link
Collaborator

@kennykerr kennykerr commented Mar 12, 2024

WinRT classes include the default interface signature as part of their SHA1 signature. Usually this is just the signature of the interface's GUID, however when the interface is generic this signature is the signature of the generic type itself. To keep things generic, I opted to generate RuntimeType implementations for all WinRT interfaces. This avoids having to special-case such classes. Previously, I only included implementations for non-exclusive interfaces.

Fixes: #2922

Previously this was calculated correctly, but #2729 broke this edge case. This PR also adds a test case to ensure future optimizations don't break this calculation. Thanks to @riverar for tracking down the offending PR.

@kennykerr kennykerr requested a review from riverar March 12, 2024 14:51
@kennykerr kennykerr merged commit d9cc52e into master Mar 12, 2024
66 checks passed
@kennykerr kennykerr deleted the generic_class_signatures branch March 12, 2024 18:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Code blocks after calling DeviceInfomation::FindAllAsync() greater than 0.52.0 version
2 participants