[generator] Warn if type name matches enclosing namespace name. #1010
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.
Fixes: #982
As explained in the Framework Design Guidelines:
Since this is not a warning in Roslyn, and bindings code is autogenerated, it can be hard for bindings authors to notice that they are making this mistake. We can help surface this by emitting a warning if a type name matches its enclosing namespace.
This warning is
BG8403
.Example:
The provided link explains the issue and possible solutions.
Testing Note
It is very hard to unit test
generator
warning/error reporting, sinceReport
is a global static class. Add a static propertyOutputDelegate
that allows the tester to temporarily set a different output method that tests can use to verifyReport
output. These tests should be marked[NonParallelizable]
since they affect the global state shared with any other running tests.