Collect incremental state without passing compilation to output stage#3452
Collect incremental state without passing compilation to output stage#3452sharwell merged 3 commits intoDotNetAnalyzers:masterfrom
Conversation
| public void Initialize(IncrementalGeneratorInitializationContext context) | ||
| { | ||
| var compilation = context.CompilationProvider; | ||
| var referencedAssemblies = context.CompilationProvider.SelectMany( |
There was a problem hiding this comment.
@chsienki this is IncrementalValuesProvider<IAssemblySymbol>, which should be efficient provided the IAssemblySymbol for a metadata reference is carried forward from one compilation to the next. Do you know if this is true for the IDE and/or command line?
There was a problem hiding this comment.
Yes, they should be carried forward. There is also context.MetadataReferences which provides the same thing. You don't get the IAssemblySymbol directly, but if you new up a compilation with the reference you can retrieve it, and the input will then never change unless the user adjusts references.
There was a problem hiding this comment.
I'll switch over to context.MetadataReferences after 4.2.0 is released (this is the version that corrects the signature for this property).
| { | ||
| } | ||
|
|
||
| private record ExistingTypeData(string TypeName, ImmutableArray<string> MemberNames) |
There was a problem hiding this comment.
@chsienki is there a straightforward way to have a properly equatable list of strings in a record, without having to implement custom equality?
| } | ||
| } | ||
|
|
||
| private record CompilationData(ImmutableDictionary<string, ExistingTypeData> ExistingTypes) |
There was a problem hiding this comment.
@chsienki is there a straightforward way to have a properly equatable dictionary in a record, without having to implement custom equality?
Codecov Report
@@ Coverage Diff @@
## master #3452 +/- ##
==========================================
- Coverage 93.23% 92.95% -0.28%
==========================================
Files 1063 1063
Lines 113033 136647 +23614
Branches 3980 7071 +3091
==========================================
+ Hits 105383 127020 +21637
- Misses 6630 8421 +1791
- Partials 1020 1206 +186 |
| #nullable enable | ||
|
|
||
| // NOTE: This code is derived from an implementation originally in dotnet/runtime: | ||
| // https://github.com/dotnet/runtime/blob/v5.0.3/src/libraries/System.Private.CoreLib/src/System/HashCode.cs |
There was a problem hiding this comment.
Could you reference Microsoft.Bcl.HashCode instead?
There was a problem hiding this comment.
I prefer to avoid dependencies in the source generator, since it makes build integration much more complex.
) Updated [StyleCop.Analyzers](https://github.com/DotNetAnalyzers/StyleCopAnalyzers) from 1.2.0-beta.333 to 1.2.0-beta.556. <details> <summary>Release notes</summary> _Sourced from [StyleCop.Analyzers's releases](https://github.com/DotNetAnalyzers/StyleCopAnalyzers/releases)._ ## 1.2.0-beta.556 ## What's Changed * Update SA1011 to forbid trailing space before the end of a switch case by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3674 * Rewrite IOperationWrapper as a wrapper structure around IOperation by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3611 * Update SA1202 to support interfaces (C# 8) and records (C# 9, 10) by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3694 * Update documentation for SA1308 to also mention prefix "t_" by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3697 * Update SA1642 and its code fix to handle record structs correctly by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3696 * Update dependencies by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3700 * Mark several test classes as partial by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3702 * Add missing test files and fix inheritance by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3703 * Generate and validate derived test classes by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3704 * Update SA1011 to not require space before a range operator by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3709 * Update SA1131 to treat methods as constants by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3710 * Avoid allocations in CanWrap... methods by @martin-strecker-sonarsource in DotNetAnalyzers/StyleCopAnalyzers#3711 * Update SA1648 to accept inheritdoc on members implemented from static abstract/virtual interface members by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3715 * Update SA1600 to also handle records by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3725 * Update SA1119 to allow parenthesis around a ref ternary conditional expression when it is the left-hand side of an assigment by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3737 * Update SA1119 to allow parenthesized switch expressions followed by an invocation by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3733 * Add c# 12 test project by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3734 * Run tests in parallel jobs by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3740 * Update SA1010 to accept whitespace before collection initializers by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3745 * Update SA1513 to not require a blank line if the closing brace is at the end of a collection expression by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3746 * Update SA1118 to allow multi-line collection expressions by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3749 * Update SA1009 to require a space after the closing parenthesis if it is followed by ++ or -- from a prefix unary expression by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3750 * Update SA1008 to allow space before the opening parenthesis of a using alias definition of a tuple type by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3748 * Update documentation for SA1102 to contain compilable code examples by @arphox in DotNetAnalyzers/StyleCopAnalyzers#3755 * Update SA1008 to not crash if there is no previous token by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3741 * Change default value of test property CodeActionValidationMode to SemanticStructure instead of None and update so that tests still pass by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3753 * Allow inheritdoc for class constructors with base types by @MartyIX in DotNetAnalyzers/StyleCopAnalyzers#3719 * Fix that SA1134 Fix All maybe non-deterministic by @pdelvo in DotNetAnalyzers/StyleCopAnalyzers#2853 * Coverage improvements by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3675 * Fix SA1131 to not treat "complex" expressions as a literal by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3760 ## New Contributors * @martin-strecker-sonarsource made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3711 * @arphox made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3755 * @MartyIX made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3719 **Full Changelog**: DotNetAnalyzers/StyleCopAnalyzers@1.2.0-beta.507...1.2.0-beta.556 ## 1.2.0-beta.507 ## What's Changed * Update to StyleCop.Analyzers 1.2.0-beta.435 by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3499 * Add c# 11 test project to opencover-report.ps1 by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3506 * Use GetText instead of ToFullString by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3514 * Keep tracked nodes in a list by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3525 * Remove unnecessary nullable directives by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3530 * Remove hard-coded language versions in test projects for c# 8, 9 and 10 by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3528 * Update SA1515 to not let one range of trivia affect another by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3529 * Mentioned VS 2022 by @twojnarowski in DotNetAnalyzers/StyleCopAnalyzers#3549 * Remove byte order mark from schema file by @martincostello in DotNetAnalyzers/StyleCopAnalyzers#3562 * Update SA1012 to expect no space between a property pattern's opening brace and an enclosing list pattern's opening bracket by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3511 * Update Microsoft.CodeAnalysis.CSharp.Workspaces to version 4.4.0 for the c# 11 test project by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3580 * Update SA1008 to handle positional patterns inside property patterns by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3579 * Update SA1000 to trigger after keywords is, or, and, not by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3585 * Update SA1000.md by @Youssef1313 in DotNetAnalyzers/StyleCopAnalyzers#3563 * Update SA1313 to also allow incorrect names in explicitly implemented methods from interfaces by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3569 * Update SA1023 to not trigger first in line, inside a foreach without braces by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3543 * Update SA1400 to recognize access modifier "file" by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3590 * Update SA1206 to recognize modifier "file" by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3591 * Update SA1000 to handle checked operator declarations correctly by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3505 * Update SA1402 to handle records and record structs by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3570 * Bump Newtonsoft.Json from 12.0.3 to 13.0.2 in /StyleCop.Analyzers/StyleCop.Analyzers.Status.Generator by @dependabot in DotNetAnalyzers/StyleCopAnalyzers#3584 * Update to the latest version of the testing library by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3601 * Update so that SA1600 tests will be run with the expected language version in test projects for c# 8 and above by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3614 * Update reading of file_header_template and stylecop.documentation.copyrightText to allow multiple lines by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3617 * Update SA1015 to require trailing space after an explicit generic return type in a lambda expression by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3625 * Update to Microsoft.CodeAnalysis.Analyzers 3.3.5-beta1.23205.2 by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3628 * Update SA1206 to handle c# 11 modifier "required" by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3535 * Preparations for SettingsHelper optimizations by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3635 * Correct SA1515 to not fire on the second line of a file header by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3633 * Update AnalyzersExtensions and SettingsHelper to use cached JsonValue objects where possible by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3642 * Update SA1010 to not trigger on list patterns by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3507 * Update NamingSettings and DocumentationSettings to keep one Regex instance instead of calling Regex.IsMatch by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3639 * Use ResxSourceGenerator for resource generation by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3343 * Make XmlCommentHelper faster by @ninedan in DotNetAnalyzers/StyleCopAnalyzers#3651 * Update RenameToUpperCaseCodeFixProvider to not offer a code fix if the identifier only consists of underscores by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3637 * Don't emit SA1414 for interface implementations by @CollinAlpert in DotNetAnalyzers/StyleCopAnalyzers#3644 * Support file-scoped namespaces in SA1516 by @JakubLinhart in DotNetAnalyzers/StyleCopAnalyzers#3513 * Update SA1137 to also consider init accessors by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3669 * Update SA1500 to also consider init accessors by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3670 * Update SA1513 to not trigger before an init accessor by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3666 * Update SA1212 to also trigger for an init accessor before a getter by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3661 * Update SA1513 codefix to use the existing newline character sequence by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3607 * Correct code fix for SA1130 when delegate expression is part of a cast expression by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3516 * Update so that c# 7 tests will be run with the expected language version in test projects for c# 8 and above by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3616 * SA1629 should allow full-sentence links instead of forcing the period to glow white by @jnm2 in DotNetAnalyzers/StyleCopAnalyzers#3371 ## New Contributors * @twojnarowski made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3549 * @ninedan made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3651 ... (truncated) ## 1.2.0-beta.435 ## What's Changed * Update to Microsoft.CodeAnalysis.Testing 1.1.1-beta1.22081.4 by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3450 * Update SA1600 to show inheritance example. by @codajo in DotNetAnalyzers/StyleCopAnalyzers#3385 * Enable nullable reference types by default by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3455 * Disable SA0002 (Invalid settings file) for empty projects by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3456 * Support awaiting a parenthesized 'switch' or 'with' expression by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3462 * Fix support for object initializers in interpolations by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3463 * Fix typo in SA1307.md by @marcospgp in DotNetAnalyzers/StyleCopAnalyzers#3466 * Map dotnet_separate_import_directive_groups=false to OptionSetting.Allow by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3484 * Support extended property patterns in SA1101 by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3483 * Fix false positive in SA1516 between global statements by @maxkoshevoi in DotNetAnalyzers/StyleCopAnalyzers#3482 * Fix handling of generic delegates in file type name by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3485 * Collect incremental state without passing compilation to output stage by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3452 * Updated code fix name for SA1027 to be ok regardless of the 'useTabs' setting by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3490 * Corrected documentation for SA1516 by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3488 * Updated SA1009 to forbid space after a closing parenthesis in a method reference contained in single quotes by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3497 * Added a new test project for c# 11 by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3491 * Remove same values at SA1201ElementsMustAppearInTheCorrectOrder.MemberNames by @eliseevev in DotNetAnalyzers/StyleCopAnalyzers#3496 * Updated SA1015 analyzer to handle generic attributes (c# 11 preview) by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3494 * Updated SA1008 to handle tuples in logical patterns by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3495 ## New Contributors * @codajo made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3385 * @marcospgp made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3466 * @maxkoshevoi made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3482 * @eliseevev made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3496 **Full Changelog**: DotNetAnalyzers/StyleCopAnalyzers@1.2.0-beta.406...1.2.0-beta.435 ## 1.2.0-beta.406 ## What's Changed * Increase test coverage for records in SA1500, SA1502, and SA1508 by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3421 * Add 'allowDoWhileOnClosingBrace' configuration to the JSON schema by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3423 * Use CultureInfo.InvariantCulture for en-US by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3426 * Allow direct use of explicit parameterless constructors by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3432 * Support file-scoped namespaces in SA1649 and SA1402 by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3436 * Add file-scoped namespace support to SA1208 in DotNetAnalyzers/StyleCopAnalyzers#3438 * Expand support for file scoped namespaces by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3446 * Insert blank line before using directives in file-scoped namespace by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3447 **Full Changelog**: DotNetAnalyzers/StyleCopAnalyzers@1.2.0-beta.376...1.2.0-beta.406 ## 1.2.0-beta.376 ## What's Changed * Update System.Collections.Immutable in the status generator by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3362 * Update to Microsoft.CodeAnalysis.Testing 1.1.0-beta1.21329.1 by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3361 * SA1130: Handle optional named arguments correctly by @wdolek in DotNetAnalyzers/StyleCopAnalyzers#3289 * Add C# 10 test project by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3398 * Support C# 10 'record struct' by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3401 * Update SA1116 and SA1117 to handle target-typed new (C# 9) by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3408 * Use reference assemblies for index and range by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3417 * Update SA1119 to support C# Ranges by @pantosha in DotNetAnalyzers/StyleCopAnalyzers#3372 * Allow object initializers and switch expressions in throw statements by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3418 * Update to Roslyn 4, .NET SDK 6.0.100 by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3416 * Update SA1135 to support file-scoped namespaces by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3419 * Fix ignored Namespace attribute in OperationLightupGenerator by @pavel-mikula-sonarsource in DotNetAnalyzers/StyleCopAnalyzers#3378 * Update SA1003 and SA1008 to not require space before a cast inside a range expression by @bjornhellander in DotNetAnalyzers/StyleCopAnalyzers#3409 ## New Contributors * @wdolek made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3289 * @pavel-mikula-sonarsource made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3378 **Full Changelog**: DotNetAnalyzers/StyleCopAnalyzers@1.2.0-beta.354...1.2.0-beta.376 ## 1.2.0-beta.354 ## What's Changed * Update SA1305 doc to mention allowedHungarianPrefixes in stylecop.json by @Youssef1313 in DotNetAnalyzers/StyleCopAnalyzers#3321 * Implement custom fix all providers by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3322 * Handle new() syntax on SA1118 by @BlythMeister in DotNetAnalyzers/StyleCopAnalyzers#3340 * Support defining options in .editorconfig by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3285 * Set TLS defaults for testing by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3342 * Update to Microsoft.CodeAnalysis.Testing 1.0.1-beta1.21202.2 by @sharwell in DotNetAnalyzers/StyleCopAnalyzers#3341 * Issue #2801: SA1500 fires for the while clause of do/while statement by @Kevin-Andrew in DotNetAnalyzers/StyleCopAnalyzers#3196 ## New Contributors * @BlythMeister made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3340 * @Kevin-Andrew made their first contribution in DotNetAnalyzers/StyleCopAnalyzers#3196 **Full Changelog**: DotNetAnalyzers/StyleCopAnalyzers@1.2.0-beta.333...1.2.0-beta.354 Commits viewable in [compare view](DotNetAnalyzers/StyleCopAnalyzers@1.2.0-beta.333...1.2.0-beta.556). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
No description provided.