Include nested types when identifying namespace dependencies #1815
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.
When running the
WinmdUtils
tool with theshowNamespaceDependencies
orshowNamespaceCycles
commands, only top-level type definitions are currently processed by the dependency search logic. Dependencies that exist in nested types are missed, as are any cyclic dependencies between namespaces that arise from them.This pull request updates the search logic to process nested types that are enclosed within top-level type definitions for native structs and unions (both of which are represented as CLR structs in the metadata). This provides a more complete picture of the dependencies between namespaces, and exposes a number of cyclic dependencies that were not previously reported by the tool.
Here's the output of running the
showNamespaceCycles
command against the metadata file from the 56.0.13-preview release, using the existing search logic:Here's the output after applying the changes from this pull request: