Apply global and implicit using directives #313
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.
This enables implicit
usingdirectives as well as one custom explicitglobal usingdirective.As indicated in the commit messages, much of this work was performed by automated refactorings.
Manual Changes:
<ImplicitUsings>enable</ImplicitUsings>to all projects.TestClassConstructionTests, as the order ofnamespacevsusingwas unintentionally missed in Using Directive Placement #312 and prevented automated refactoring from being applicable.SourceLocationSamplesis by its nature brittle in the face of line number changes, so this adds a descriptive comment to that effect near the top, "coincidentally" returning all brittle-positioned lines back to their original location. Doing so prevents having to manually adjust all the line number comments and associated assertion constants inSourceLocationProviderTests.usingfrom the special fileFixie.Main.cs, which is included in the NuGet package and automatically included in end users' own test assemblies. Since end users may or may not have implicitusingenabled, we have to err on the safe side to ensure all users can actually build their test projects.Custom Global Using:
global usingfeature could easily be overused to the point of regret, but I've included one in the tests project. Nearly all code files in the tests project naturally need to make assertions, and since they are of thea.ShouldXyz(b)extension method variety, implicitly including their namespace removes realistic friction when writing the first assertion in a new test file: