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

Snap main to 17.13 P3 #76647

Merged
merged 1,541 commits into from
Jan 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1541 commits
Select commit Hold shift + click to select a range
14e8575
Docs
CyrusNajmabadi Dec 19, 2024
11822ce
Docs
CyrusNajmabadi Dec 19, 2024
b724568
Extract type
CyrusNajmabadi Dec 19, 2024
e5777b3
Wrapping
CyrusNajmabadi Dec 19, 2024
a1438f1
Make strongly typed
CyrusNajmabadi Dec 19, 2024
fbdd94c
Add an option to control if unused members shoudl be faded out. (#76520)
CyrusNajmabadi Dec 19, 2024
c07f28f
Include AdditionalFiles doc (#76526)
333fred Dec 19, 2024
031316a
Correct the string
Cosifne Dec 19, 2024
7b80677
Correct the typo in property name
Cosifne Dec 19, 2024
b99876e
Have inline hints display aliases if appropriate
CyrusNajmabadi Dec 19, 2024
f8b24a5
Add cocs
CyrusNajmabadi Dec 19, 2024
074b1f3
Merge release/dev17.13 to main (#76387)
dotnet-bot Dec 19, 2024
6e26013
Simplify inline hint tagging and fix duplicated tags. (#76525)
CyrusNajmabadi Dec 19, 2024
a9cafab
Have inline hints display aliases if appropriate (#76530)
CyrusNajmabadi Dec 20, 2024
ce672ca
Add another converter
Cosifne Dec 20, 2024
c261415
Imple Equals and GetHashCode
Cosifne Dec 20, 2024
3d60864
Fix string
Cosifne Dec 20, 2024
9ac6bd2
Fix string
Cosifne Dec 20, 2024
01a8fcc
Add tag helper
Cosifne Dec 20, 2024
f3148df
Add category test
Cosifne Dec 20, 2024
1e21020
Do not offer inline hints for parameters that already named
CyrusNajmabadi Dec 20, 2024
37d3667
Merge remote-tracking branch 'upstream/main' into inlineHintDuplicate
CyrusNajmabadi Dec 20, 2024
cf5eed2
Propagate marked attributes from primary constructor parameters to ba…
AlekseyTs Dec 20, 2024
e910ece
use collection expression
CyrusNajmabadi Dec 20, 2024
96255aa
use collection expression
CyrusNajmabadi Dec 20, 2024
6578f28
use collection expression
CyrusNajmabadi Dec 20, 2024
6be9b1f
use collection expression
CyrusNajmabadi Dec 20, 2024
057bc26
Do not offer inline hints for parameters that already named (#76532)
CyrusNajmabadi Dec 20, 2024
9be3bdb
use collection expression
CyrusNajmabadi Dec 20, 2024
9cb6907
Update PublishData.json for telmet branch (#76539)
phil-allen-msft Dec 20, 2024
a48b428
Expose NavigationService to OmniSharp
JoeRobich Dec 20, 2024
5b7a3bb
Make O# extract interface and class option services synchronous
JoeRobich Dec 20, 2024
abe1143
Fixup OmniSharp fallback AnalyzerConfigOption updater
JoeRobich Dec 20, 2024
e9cb10f
fixup
JoeRobich Dec 20, 2024
8ab888d
Add messages
Cosifne Dec 20, 2024
29cd685
use collection expression
CyrusNajmabadi Dec 20, 2024
94fdfbc
Expose NotificationService to OmniSharp (#76541)
JoeRobich Dec 20, 2024
98ea496
Fixup OmniSharp fallback AnalyzerConfigOption updater (#76542)
JoeRobich Dec 20, 2024
24226a2
Ensure 'remove unnecessary using' shows up before 'convert to program…
CyrusNajmabadi Dec 20, 2024
cabf4f5
Merge branch 'main' into useCollectionExpressions
CyrusNajmabadi Dec 20, 2024
7052f5a
Formatting
CyrusNajmabadi Dec 20, 2024
06b1b28
Message covered by test
Cosifne Dec 20, 2024
6d1e523
Add CSharp dictionary
Cosifne Dec 20, 2024
21c5a59
Add C# category test
Cosifne Dec 21, 2024
93bd075
Add C# test
Cosifne Dec 21, 2024
6191f8c
correct strings
Cosifne Dec 21, 2024
e420844
Cleanup extract method
CyrusNajmabadi Dec 21, 2024
9fd5942
Switch to records
CyrusNajmabadi Dec 21, 2024
3d4972d
Use with method
CyrusNajmabadi Dec 21, 2024
2ad448c
Simplify
CyrusNajmabadi Dec 21, 2024
7498849
Delete
CyrusNajmabadi Dec 21, 2024
a268671
Make code non-generic
CyrusNajmabadi Dec 21, 2024
4279e02
Make code non-generic
CyrusNajmabadi Dec 21, 2024
66392a3
Remove syntax fact
CyrusNajmabadi Dec 21, 2024
76a2126
Switch to an enum
CyrusNajmabadi Dec 21, 2024
c89ca66
Move code inwards
CyrusNajmabadi Dec 21, 2024
bba902d
Share resource
CyrusNajmabadi Dec 21, 2024
7812d84
in progress
CyrusNajmabadi Dec 21, 2024
96eb133
Share code
CyrusNajmabadi Dec 21, 2024
db593e9
Fixup tests
CyrusNajmabadi Dec 21, 2024
c9a9089
In progress
CyrusNajmabadi Dec 21, 2024
8667d52
Share code
CyrusNajmabadi Dec 21, 2024
3008da4
NRT
CyrusNajmabadi Dec 21, 2024
d80f03d
In progress
CyrusNajmabadi Dec 21, 2024
c93e5ae
Share code
CyrusNajmabadi Dec 21, 2024
bf2878d
Share code
CyrusNajmabadi Dec 21, 2024
950c2fc
Simplify
CyrusNajmabadi Dec 21, 2024
e92a3e0
NRT
CyrusNajmabadi Dec 21, 2024
c4bbca6
Do not dismiss extract method when a notification is shown to the user
CyrusNajmabadi Dec 21, 2024
7cc9a50
Merge branch 'extractMethodFocus' into extractMethodCleanup
CyrusNajmabadi Dec 21, 2024
f17b48d
Move under common types to share generics
CyrusNajmabadi Dec 21, 2024
4b5bd3c
Share code
CyrusNajmabadi Dec 21, 2024
fc6bbec
Stronger types
CyrusNajmabadi Dec 21, 2024
e4a9ee1
Update src/Features/Core/Portable/ExtractMethod/AbstractExtractMethod…
CyrusNajmabadi Dec 22, 2024
9ebfa1f
NRT
CyrusNajmabadi Dec 22, 2024
9ab4590
Merge branch 'extractMethodCleanup' of https://github.com/CyrusNajmab…
CyrusNajmabadi Dec 22, 2024
4494693
NRT
CyrusNajmabadi Dec 22, 2024
dd3e177
Move enum
CyrusNajmabadi Dec 22, 2024
168bd3b
Share resource string
CyrusNajmabadi Dec 22, 2024
5c62de5
VB statement types
CyrusNajmabadi Dec 22, 2024
8522cb1
Docs
CyrusNajmabadi Dec 22, 2024
a24134d
strong typing
CyrusNajmabadi Dec 22, 2024
6df7847
strong typing
CyrusNajmabadi Dec 22, 2024
c962711
Simplify
CyrusNajmabadi Dec 22, 2024
42634bd
First attempt
MartyIX Dec 22, 2024
934aff0
Address review comments + fix failing tests
MartyIX Dec 23, 2024
8da820f
Merge branch 'main' into patch-17
Youssef1313 Dec 25, 2024
7ba8c03
Merge branch 'main' into patch-38
Youssef1313 Dec 25, 2024
cb13605
Fix indentation
Youssef1313 Dec 25, 2024
b545994
Update few completion tests to be regular in addition to script
Youssef1313 Dec 25, 2024
ce0f266
Prefix 'unmerged changes' with 'TODO'
Youssef1313 Dec 25, 2024
3225e22
Make sealed
CyrusNajmabadi Dec 25, 2024
70a0fde
make non optional
CyrusNajmabadi Dec 25, 2024
6830b2f
make into records
CyrusNajmabadi Dec 25, 2024
8bf7cd6
pull out computation
CyrusNajmabadi Dec 25, 2024
3e3fea0
Change how anonymous types are handled
CyrusNajmabadi Dec 25, 2024
73218cf
Make static
CyrusNajmabadi Dec 25, 2024
7987c9a
Use syntax kinds
CyrusNajmabadi Dec 25, 2024
ef0568f
Pass arrays
CyrusNajmabadi Dec 25, 2024
8d0afed
Do not pass semantic model
CyrusNajmabadi Dec 25, 2024
171b3d3
Anon types
CyrusNajmabadi Dec 25, 2024
93a3846
Cleanup
CyrusNajmabadi Dec 25, 2024
6a1c3f3
Do not pass semantic model along
CyrusNajmabadi Dec 25, 2024
d5fcdeb
Clean up return types
CyrusNajmabadi Dec 25, 2024
39bfda0
Clean up return types
CyrusNajmabadi Dec 25, 2024
8bdf297
Simplufy
CyrusNajmabadi Dec 26, 2024
07aeb41
Inline
CyrusNajmabadi Dec 26, 2024
e416d99
Propagate marked attributes from method type parameters to type param…
AlekseyTs Dec 26, 2024
8cdd391
Fix crash when classifying embeddded test classifications
CyrusNajmabadi Dec 28, 2024
acfbf81
Move helper
CyrusNajmabadi Dec 29, 2024
988a92e
Shuffle a few things
CyrusNajmabadi Dec 29, 2024
9a212ad
Call the right overload
CyrusNajmabadi Dec 29, 2024
d2b41d1
Simplify further
CyrusNajmabadi Dec 29, 2024
412e22a
Simplify further
CyrusNajmabadi Dec 29, 2024
67a613e
Remove use of cloning
CyrusNajmabadi Dec 29, 2024
b297641
Simplify annotations
CyrusNajmabadi Dec 29, 2024
4c4c7dd
simplify
CyrusNajmabadi Dec 29, 2024
9578118
Simplify generics
CyrusNajmabadi Dec 29, 2024
2893412
Simplify generics
CyrusNajmabadi Dec 29, 2024
da25b2f
Simplify generics
CyrusNajmabadi Dec 29, 2024
b8addf2
Move helpers
CyrusNajmabadi Dec 29, 2024
cbc7ca8
move data flow analysis
CyrusNajmabadi Dec 29, 2024
40f32b8
simplify
CyrusNajmabadi Dec 29, 2024
f1e3461
Make private
CyrusNajmabadi Dec 29, 2024
652a504
Cleanup
CyrusNajmabadi Dec 29, 2024
e00bb87
Remove use of originalspan
CyrusNajmabadi Dec 29, 2024
432ba07
remove unneeded data
CyrusNajmabadi Dec 29, 2024
c9f7a0c
delete
CyrusNajmabadi Dec 29, 2024
d86f8a3
Share code
CyrusNajmabadi Dec 29, 2024
502768c
in progress
CyrusNajmabadi Dec 30, 2024
fa05f16
in progress
CyrusNajmabadi Dec 30, 2024
4035085
in progress
CyrusNajmabadi Dec 30, 2024
547024c
Share more code
CyrusNajmabadi Dec 30, 2024
c52bc5e
Share code
CyrusNajmabadi Dec 30, 2024
cc913b5
Switch to executable statements
CyrusNajmabadi Dec 30, 2024
48bc3d2
Simplify
CyrusNajmabadi Dec 30, 2024
4d1c7f5
in progress
CyrusNajmabadi Dec 30, 2024
751e1cc
Simplify api
CyrusNajmabadi Dec 30, 2024
7e87b4e
remove pointless tracking
CyrusNajmabadi Dec 30, 2024
dfd977d
Correct strings
Cosifne Dec 30, 2024
483c4a8
Correct pkgdef
Cosifne Dec 30, 2024
2e8bad9
Fix formatting
Cosifne Dec 31, 2024
1abb24e
Delete dead code
Cosifne Dec 31, 2024
2f867e6
Add comment
Cosifne Dec 31, 2024
7ea23ce
File scope ns
Cosifne Dec 31, 2024
3a01437
Fix failures
Youssef1313 Jan 2, 2025
7d33556
Use collection expressions (#76534)
CyrusNajmabadi Jan 2, 2025
225abf2
Ensure 'remove unnecessary using' shows up before 'convert to program…
CyrusNajmabadi Jan 2, 2025
bbbe484
Do not dismiss extract method when a notification is shown to the use…
CyrusNajmabadi Jan 2, 2025
dabda72
Fix crash when classifying embedded test classifications (#76576)
CyrusNajmabadi Jan 2, 2025
9c189e7
Prefix 'unmerged changes' with 'TODO' (#62319)
CyrusNajmabadi Jan 2, 2025
1c74b2e
Add more test scenarios for symbol completion after scoped (#65747)
CyrusNajmabadi Jan 2, 2025
8bf80c6
Add F1 test for scoped (#64094)
CyrusNajmabadi Jan 2, 2025
9304403
Merge branch 'main' into extractMethodCleanup
CyrusNajmabadi Jan 2, 2025
2038e1a
Merge branch 'main' into extractMethodCleanup
CyrusNajmabadi Jan 2, 2025
b9c705a
Language Feature Status.md: correct dictionary expressions (#76574)
cston Jan 2, 2025
6af4373
Update few completion tests (#65490)
CyrusNajmabadi Jan 2, 2025
d0a39c3
Extract method cleanup (#76550)
CyrusNajmabadi Jan 2, 2025
f16cf64
Merge branch 'main' into extractMethodCleanup2
CyrusNajmabadi Jan 2, 2025
2b8801a
Update src/Features/Core/Portable/ExtractMethod/SelectionInfo.cs
CyrusNajmabadi Jan 2, 2025
ed44ed0
Merge branch 'extractMethodCleanup2' into extractMethodCleanup4
CyrusNajmabadi Jan 2, 2025
28d509d
Merge branch 'extractMethodCleanup4' into extractMethodCleanup5
CyrusNajmabadi Jan 2, 2025
7f2db9d
Merge remote-tracking branch 'upstream/main' into feature/2024-12-09-…
CyrusNajmabadi Jan 2, 2025
99d5122
PR feedback
CyrusNajmabadi Jan 2, 2025
364e938
Add test demonstreating old behavior
CyrusNajmabadi Jan 2, 2025
cc6848f
Update src/Features/Core/Portable/ExtractMethod/SelectionInfo.cs
CyrusNajmabadi Jan 2, 2025
f11598a
Simplify
CyrusNajmabadi Jan 2, 2025
523eab5
fix test
CyrusNajmabadi Jan 2, 2025
a7ff9bf
Introduce local variable supporting target-type new syntax (#76342)
CyrusNajmabadi Jan 2, 2025
87d6ec9
Remove dead code
Cosifne Jan 2, 2025
c9ceb1c
Simplify
CyrusNajmabadi Jan 2, 2025
ccbc092
Continued Extract method cleanup (#76577)
CyrusNajmabadi Jan 2, 2025
3ee94ca
Merge branch 'main' into extractMethodCleanup4
CyrusNajmabadi Jan 2, 2025
a2f9367
Merge branch 'extractMethodCleanup4' into extractMethodCleanup5
CyrusNajmabadi Jan 2, 2025
334ef85
Simplify
CyrusNajmabadi Jan 2, 2025
eb42688
Simplify
CyrusNajmabadi Jan 2, 2025
86e38e3
remove unused enum value
CyrusNajmabadi Jan 2, 2025
cf33ce2
Fix docs
CyrusNajmabadi Jan 2, 2025
379d05c
Pass CT'
CyrusNajmabadi Jan 2, 2025
6b25538
Continued Extract method cleanup (part 2) (#76585)
CyrusNajmabadi Jan 2, 2025
1155abd
Merge remote-tracking branch 'upstream/main' into extractMethodCleanup5
CyrusNajmabadi Jan 2, 2025
10c9136
remove non-functional code
CyrusNajmabadi Jan 2, 2025
1fd8425
remove unused cancellation token
CyrusNajmabadi Jan 2, 2025
bfa4f1a
Propagate marked attributes to synthesized fields. (#76567)
AlekseyTs Jan 2, 2025
fd40510
Reduce allocations during checksum creation. (#76524)
ToddGrun Jan 3, 2025
14944a9
Merge `features/GeneratedCodeAttributes` to main (#76602)
AlekseyTs Jan 3, 2025
d29eff1
Cleanup Extract method code (part 3) (#76587)
CyrusNajmabadi Jan 3, 2025
5fb756d
Simplify
CyrusNajmabadi Jan 3, 2025
969f3c5
Simplify
CyrusNajmabadi Jan 3, 2025
5802cbd
Simplify
CyrusNajmabadi Jan 3, 2025
40eb46d
Simplify
CyrusNajmabadi Jan 3, 2025
db220c8
Share code
CyrusNajmabadi Jan 3, 2025
be145e5
Simplify
CyrusNajmabadi Jan 3, 2025
f1a16f3
Simplify
CyrusNajmabadi Jan 3, 2025
e3c94b7
Move specific code to subclass
CyrusNajmabadi Jan 3, 2025
281c3eb
Remove unused prop
CyrusNajmabadi Jan 3, 2025
04c78ec
Simplify generics
CyrusNajmabadi Jan 3, 2025
f5cc86a
Simplify annnotations
CyrusNajmabadi Jan 3, 2025
0fabbe3
delete file
CyrusNajmabadi Jan 3, 2025
ea10e13
Avoid allocs
CyrusNajmabadi Jan 3, 2025
78c90d3
Inline method
CyrusNajmabadi Jan 3, 2025
4fc8842
Simplify code
CyrusNajmabadi Jan 3, 2025
2ae4777
Simplify code
CyrusNajmabadi Jan 3, 2025
c5b653e
Simplify code
CyrusNajmabadi Jan 3, 2025
3a2c060
Simplify code
CyrusNajmabadi Jan 3, 2025
571c103
Simplify code
CyrusNajmabadi Jan 3, 2025
b7e0970
Simplify code
CyrusNajmabadi Jan 3, 2025
1a6f76e
Simplify code
CyrusNajmabadi Jan 3, 2025
ef140ca
Switch to a multi dictionary
CyrusNajmabadi Jan 3, 2025
04b07b0
Delete unnecessary type
CyrusNajmabadi Jan 3, 2025
56e9b8e
rename and reorder
CyrusNajmabadi Jan 3, 2025
1c3acff
in progress
CyrusNajmabadi Jan 3, 2025
033dab6
move comptuation
CyrusNajmabadi Jan 3, 2025
d4c5063
be more consistent
CyrusNajmabadi Jan 3, 2025
8c4ea43
be more consistent
CyrusNajmabadi Jan 3, 2025
03adb27
Switch to more modern vb construc
CyrusNajmabadi Jan 3, 2025
692a6cc
Rewrite unified settings test (#76591)
Cosifne Jan 3, 2025
0396afe
Allow users to define EmbeddedAttribute (#76523)
333fred Jan 3, 2025
1f18834
Switch to more modern vb construct (#76615)
CyrusNajmabadi Jan 3, 2025
68ed6d9
Fix assembly load when file path contains URI reserved chars
dibarbet Jan 3, 2025
e067c25
feedback and cleanup
dibarbet Jan 4, 2025
bba3545
Remove another unnecessary annotation container
CyrusNajmabadi Jan 4, 2025
cf2eaf2
delete
CyrusNajmabadi Jan 4, 2025
48d5703
delete
CyrusNajmabadi Jan 4, 2025
a5fe5d1
Siplify
CyrusNajmabadi Jan 4, 2025
77df282
Additional extract method cleanup. (#76611)
CyrusNajmabadi Jan 4, 2025
978be80
Reduce pooled array allocations in the SyntaxParser (#76610)
ToddGrun Jan 4, 2025
a1c72a3
Ensure Location.None in additional locations can round trip correctly
Youssef1313 Jan 5, 2025
f7e10cf
Ensure Location.None in additional locations can round trip correctly…
CyrusNajmabadi Jan 5, 2025
319c939
Remove need to pass generator parameter to helper methods
CyrusNajmabadi Jan 6, 2025
42ba77c
simplfy
CyrusNajmabadi Jan 6, 2025
835e4eb
API updates
CyrusNajmabadi Jan 6, 2025
09f90e3
Remove parameter
CyrusNajmabadi Jan 6, 2025
04c3cca
Expose breakable range handler to Razor
davidwengier Jan 6, 2025
651d5aa
Fix
CyrusNajmabadi Jan 6, 2025
6015720
Fix public api
CyrusNajmabadi Jan 6, 2025
04063fb
Add a useful helper method
davidwengier Jan 6, 2025
642ee01
Document breaks due to preferring ReadOnlySpan over Span (#76572)
jjonescz Jan 6, 2025
b86d831
Remove scope variance exceptions (#76296)
jjonescz Jan 6, 2025
3638dd9
Use the target branch for bootstrap build documentation (#76628)
jaredpar Jan 6, 2025
e39bbe6
Donot offer 'use auto prop' with ref-fields
CyrusNajmabadi Jan 6, 2025
67dd320
Update 'use compund expr' to support 'field keyword'
CyrusNajmabadi Jan 6, 2025
6cac171
Do not offer 'use auto prop' with ref-fields (#76638)
CyrusNajmabadi Jan 6, 2025
e4242b9
Update 'use compound expr' to support 'field keyword' (#76639)
CyrusNajmabadi Jan 6, 2025
83debc8
Expose breakable range handler to Razor (#76629)
davidwengier Jan 6, 2025
4c6dfb8
Make full source build pure NetCurrent (#76640)
jaredpar Jan 6, 2025
0e54217
Fix assembly load when file path contains URI reserved chars (#76617)
dibarbet Jan 6, 2025
f28e37d
Remove need to pass generator parameter to helper methods (#76627)
CyrusNajmabadi Jan 6, 2025
84d42b9
Put WRN_InterceptsLocationAttributeUnsupportedSignature into .NET 9 w…
RikkiGibson Jan 7, 2025
f413bb2
Merge remote-tracking branch 'upstream/main' into merge_main_to_17_13
dibarbet Jan 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ UnitTestResults.html
*.nuget.props
*.nuget.targets
project.lock.json
msbuild.binlog
*.binlog
*.project.lock.json

*_i.c
Expand Down
7 changes: 0 additions & 7 deletions Roslyn.sln
Original file line number Diff line number Diff line change
Expand Up @@ -539,8 +539,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Exte
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.ExternalAccess.EditorConfigGenerator", "src\VisualStudio\ExternalAccess\EditorConfigGenerator\Microsoft.CodeAnalysis.ExternalAccess.EditorConfigGenerator.csproj", "{09AEDEE4-6358-47C9-8022-3BD37A518070}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationTestBuildProject", "src\VisualStudio\IntegrationTest\IntegrationTestBuildProject.csproj", "{4D9D7A28-BB44-4F3F-81DA-14F39B853718}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Features.DiagnosticsTests.Utilities", "src\Features\DiagnosticsTestUtilities\Microsoft.CodeAnalysis.Features.DiagnosticsTests.Utilities.csproj", "{5BABC440-4F1B-46E8-9068-DD7F02ED25D3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Features.Test.Utilities", "src\Features\TestUtilities\Microsoft.CodeAnalysis.Features.Test.Utilities.csproj", "{5762E483-75CE-4328-A410-511F30737712}"
Expand Down Expand Up @@ -1365,10 +1363,6 @@ Global
{09AEDEE4-6358-47C9-8022-3BD37A518070}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09AEDEE4-6358-47C9-8022-3BD37A518070}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09AEDEE4-6358-47C9-8022-3BD37A518070}.Release|Any CPU.Build.0 = Release|Any CPU
{4D9D7A28-BB44-4F3F-81DA-14F39B853718}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4D9D7A28-BB44-4F3F-81DA-14F39B853718}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4D9D7A28-BB44-4F3F-81DA-14F39B853718}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4D9D7A28-BB44-4F3F-81DA-14F39B853718}.Release|Any CPU.Build.0 = Release|Any CPU
{5BABC440-4F1B-46E8-9068-DD7F02ED25D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5BABC440-4F1B-46E8-9068-DD7F02ED25D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5BABC440-4F1B-46E8-9068-DD7F02ED25D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -1652,7 +1646,6 @@ Global
{B1481D94-682E-46EC-ADBE-A16EB46FEEE9} = {55A62CFA-1155-46F1-ADF3-BEEE51B58AB5}
{5E8FB6D6-6C5C-42E6-9220-1EAA7ED9BCAD} = {1AE9182D-B03E-4B00-B32E-37AE01715F57}
{09AEDEE4-6358-47C9-8022-3BD37A518070} = {5880FECB-91F1-4AB8-8726-75EAFA8A918E}
{4D9D7A28-BB44-4F3F-81DA-14F39B853718} = {CC126D03-7EAC-493F-B187-DCDEE1EF6A70}
{5BABC440-4F1B-46E8-9068-DD7F02ED25D3} = {3E5FE3DB-45F7-4D83-9097-8F05D3B3AEC6}
{5762E483-75CE-4328-A410-511F30737712} = {3E5FE3DB-45F7-4D83-9097-8F05D3B3AEC6}
{6D819E80-BA2F-4317-8368-37F8F4434D3A} = {806F0C6F-3640-4C92-8D55-6767B1535467}
Expand Down
3 changes: 3 additions & 0 deletions azure-pipelines-pr-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ variables:
value: false
- name: Codeql.SkipTaskAutoInjection
value: true
- name: SignType
value: ''

# To retrieve OptProf data we need to authenticate to the VS drop storage.
# If the pipeline is running in DevDiv, the account has access to the VS drop storage.
Expand Down Expand Up @@ -339,5 +341,6 @@ extends:
# Symbol validation is not entirely reliable as of yet, so should be turned off until
# https://github.com/dotnet/arcade/issues/2871 is resolved.
enableSymbolValidation: false
enableSigningValidation: false
enableSourceLinkValidation: false
SDLValidationParameters: false
12 changes: 7 additions & 5 deletions docs/Language Feature Status.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,22 @@ efforts behind them.

| Feature | Branch | State | Developer | Reviewer | IDE Buddy | LDM Champ |
| ------- | ------ | ----- | --------- | -------- | --------- | --------- |
| [Default in deconstruction](https://github.com/dotnet/roslyn/pull/25562) | [decon-default](https://github.com/dotnet/roslyn/tree/features/decon-default) | [In Progress](https://github.com/dotnet/roslyn/issues/25559) | [jcouv](https://github.com/jcouv) | [gafter](https://github.com/gafter) | | [jcouv](https://github.com/jcouv) |
| [Roles/Extensions](https://github.com/dotnet/csharplang/issues/5497) | [roles](https://github.com/dotnet/roslyn/tree/features/roles) | [In Progress](https://github.com/dotnet/roslyn/issues/66722) | [jcouv](https://github.com/jcouv) | [AlekseyTs](https://github.com/AlekseyTs), [jjonescz](https://github.com/jjonescz) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [MadsTorgersen](https://github.com/MadsTorgersen) |
| String literals in data section as UTF8 | [PR](https://github.com/dotnet/roslyn/pull/76036) | [In Progress](https://github.com/dotnet/roslyn/issues/76234) | [jjonescz](https://github.com/jjonescz) | [AlekseyTs](https://github.com/AlekseyTs), [jcouv](https://github.com/jcouv) | N/A | N/A |
| Runtime Async | [features/runtime-async](https://github.com/dotnet/roslyn/tree/features/runtime-async) | [In Progress](https://github.com/dotnet/roslyn/issues/75960) | [333fred](https://github.com/333fred) | [jcouv](https://github.com/jcouv), [RikkiGibson](https://github.com/RikkiGibson) | | |
| [Simple lambda parameters with modifiers](https://github.com/dotnet/csharplang/blob/main/proposals/simple-lambda-parameters-with-modifiers.md) | [PR](https://github.com/dotnet/roslyn/pull/75400) | [In Progress](https://github.com/dotnet/roslyn/issues/76298) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [jjonescz](https://github.com/jjonescz), [cston](https://github.com/cston) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) |
| [Null-conditional assignment](https://github.com/dotnet/csharplang/issues/6045) | [null-conditional-assignment](https://github.com/dotnet/roslyn/tree/features/null-conditional-assignment) | [In Progress](https://github.com/dotnet/roslyn/issues/75554) | [RikkiGibson](https://github.com/RikkiGibson) | [cston](https://github.com/cston), [jjonescz](https://github.com/jjonescz) | TBD | [RikkiGibson](https://github.com/RikkiGibson) |
| [Extensions](https://github.com/dotnet/csharplang/issues/8697) | [extensions](https://github.com/dotnet/roslyn/tree/features/extensions) | [In Progress](https://github.com/dotnet/roslyn/issues/76130) | [jcouv](https://github.com/jcouv), [AlekseyTs](https://github.com/AlekseyTs) | [jjonescz](https://github.com/jjonescz), TBD | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [MadsTorgersen](https://github.com/MadsTorgersen) |
| [Dictionary expressions](https://github.com/dotnet/csharplang/issues/8659) | [dictionary-expressions](https://github.com/dotnet/roslyn/tree/features/dictionary-expressions) | [In Progress](https://github.com/dotnet/roslyn/issues/76310) | [cston](https://github.com/cston), [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [333fred](https://github.com/333fred), [jcouv](https://github.com/jcouv) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) |
| [`field` keyword in properties](https://github.com/dotnet/csharplang/issues/140) | [field-keyword](https://github.com/dotnet/roslyn/tree/features/field-keyword) | [Merged into 17.12p3](https://github.com/dotnet/roslyn/issues/57012) | [Youssef1313](https://github.com/Youssef1313), [cston](https://github.com/cston) | [333fred](https://github.com/333fred), [RikkiGibson](https://github.com/RikkiGibson) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) |
| [First-class Span Types](https://github.com/dotnet/csharplang/issues/7905) | [FirstClassSpan](https://github.com/dotnet/roslyn/tree/features/FirstClassSpan) | [Merged into 17.13p1](https://github.com/dotnet/roslyn/issues/73445) | [jjonescz](https://github.com/jjonescz) | [cston](https://github.com/cston), [333fred](https://github.com/333fred) | | [333fred](https://github.com/333fred), [stephentoub](https://github.com/stephentoub) |
| [Unbound generic types in `nameof`](https://github.com/dotnet/csharplang/issues/8480) | [PR](https://github.com/dotnet/roslyn/pull/75368) | [In Progress](https://github.com/dotnet/roslyn/pull/75368) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [jcouv](https://github.com/jcouv) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) |
| Runtime Async | [features/runtime-async](https://github.com/dotnet/roslyn/tree/features/runtime-async) | [In Progress](https://github.com/dotnet/roslyn/issues/75960) | [333fred](https://github.com/333fred) | [jcouv](https://github.com/jcouv), [RikkiGibson](https://github.com/RikkiGibson) | | |
| [Unbound generic types in `nameof`](https://github.com/dotnet/csharplang/issues/8480) | [PR](https://github.com/dotnet/roslyn/pull/75368) | [Merged into 17.13p2](https://github.com/dotnet/roslyn/pull/75368) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [jcouv](https://github.com/jcouv), [AlekseyTs](https://github.com/AlekseyTs) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) |

# Working Set VB

| Feature | Branch | State | Developer | Reviewer | IDE Buddy | LDM Champ |
| ------- | ------ | ----- | --------- | -------- | --------- | --------- |
| Recognizing 'unmanaged' constraint | main | [Merged into 17.13 P2](https://github.com/dotnet/roslyn/pull/75665) | [AlekseyTs](https://github.com/AlekseyTs) | [cston](https://github.com/cston), [333fred](https://github.com/333fred) | (no IDE impact) | [jaredpar](https://github.com/jaredpar) |
| Overload Resolution Priority | [features/VBOverloadResolutionPriority](https://github.com/dotnet/roslyn/tree/features/VBOverloadResolutionPriority) | In Progress | [AlekseyTs](https://github.com/AlekseyTs) | [333fred](https://github.com/333fred), [cston](https://github.com/cston) | (no IDE impact) | [333fred](https://github.com/333fred) |
| Overload Resolution Priority | main | [Merged into 17.13 P3](https://github.com/dotnet/roslyn/pull/76419) | [AlekseyTs](https://github.com/AlekseyTs) | [333fred](https://github.com/333fred), [cston](https://github.com/cston) | (no IDE impact) | [333fred](https://github.com/333fred) |


# C# 13.0
Expand Down
142 changes: 140 additions & 2 deletions docs/compilers/CSharp/Compiler Breaking Changes - DotNet 10.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Assert.Equal([2], x); // previously Assert.Equal<T>(T[], T[]), now ambiguous wit
Assert.Equal([2], x.AsSpan()); // workaround

var y = new int[] { 1, 2 };
var s = new ArraySegment<int>(x, 1, 1);
var s = new ArraySegment<int>(y, 1, 1);
Assert.Equal(y, s); // previously Assert.Equal<T>(T, T), now ambiguous with Assert.Equal<T>(Span<T>, Span<T>)
Assert.Equal(y.AsSpan(), s); // workaround
```
Expand All @@ -39,11 +39,26 @@ static class C
public static void R<T>(IEnumerable<T> e) => Console.Write(1);
public static void R<T>(Span<T> s) => Console.Write(2);
// another workaround:
[OverloadResolutionPriority(1)]
public static void R<T>(ReadOnlySpan<T> s) => Console.Write(3);
}
```

For that reason, `ReadOnlySpan<T>` is generally preferred over `Span<T>` by overload resolution in C# 14.
In some cases, that might lead to compilation breaks,
for example when there are overloads for both `Span<T>` and `ReadOnlySpan<T>`, both taking and returning the same span type:

```cs
double[] x = new double[0];
Span<ulong> y = MemoryMarshal.Cast<double, ulong>(x); // previously worked, now compilation error
Span<ulong> z = MemoryMarshal.Cast<double, ulong>(x.AsSpan()); // workaround

static class MemoryMarshal
{
public static ReadOnlySpan<TTo> Cast<TFrom, TTo>(ReadOnlySpan<TFrom> span) => default;
public static Span<TTo> Cast<TFrom, TTo>(Span<TFrom> span) => default;
}
```

When using C# 14 or newer and targeting a .NET older than `net10.0`
or .NET Framework with `System.Memory` reference,
there is a breaking change with `Enumerable.Reverse` and arrays:
Expand Down Expand Up @@ -89,3 +104,126 @@ class C
}
}
```

## Set state of enumerator object to "after" during disposal

***Introduced in Visual Studio 2022 version 17.13***

The state machine for enumerators incorrectly allowed resuming execution after the enumerator was disposed.
Now, `MoveNext()` on a disposed enumerator properly returns `false` without executing any more user code.

```csharp
var enumerator = C.GetEnumerator();

Console.Write(enumerator.MoveNext()); // prints True
Console.Write(enumerator.Current); // prints 1

enumerator.Dispose();

Console.Write(enumerator.MoveNext()); // now prints False

class C
{
public static IEnumerator<int> GetEnumerator()
{
yield return 1;
Console.Write("not executed after disposal")
yield return 2;
}
}
```

## `UnscopedRefAttribute` cannot be used with old ref safety rules

***Introduced in Visual Studio 2022 version 17.13***

The `UnscopedRefAttribute` unintentionally affected code compiled by new Roslyn compiler versions
even when the code was compiled in the context of the earlier ref safety rules
(i.e., targeting C# 10 or earlier with net6.0 or earlier).
However, the attribute should not have an effect in that context, and that is now fixed.

Code that previously did not report any errors in C# 10 or earlier with net6.0 or earlier can now fail to compile:

```cs
using System.Diagnostics.CodeAnalysis;
struct S
{
public int F;

// previously allowed in C# 10 with net6.0
// now fails with the same error as if the [UnscopedRef] wasn't there:
// error CS8170: Struct members cannot return 'this' or other instance members by reference
[UnscopedRef] public ref int Ref() => ref F;
}
```

To prevent misunderstanding (thinking the attribute has an effect
but it actually does not because your code is compiled with the earlier ref safety rules),
a warning is reported when the attribute is used in C# 10 or earlier with net6.0 or earlier:

```cs
using System.Diagnostics.CodeAnalysis;
struct S
{
// both are errors in C# 10 with net6.0:
// warning CS9269: UnscopedRefAttribute is only valid in C# 11 or later or when targeting net7.0 or later.
[UnscopedRef] public ref int Ref() => throw null!;
public static void M([UnscopedRef] ref int x) { }
}
```

## Variance of `scoped` and `[UnscopedRef]` is more strict

***Introduced in Visual Studio 2022 version 17.13***

Scope can be changed when overriding a method, implementing an interface, or converting a lambda/method to a delegate under
[some conditions](https://github.com/dotnet/csharplang/blob/05064c2a9567b7a58a07e526dff403ece1866541/proposals/csharp-11.0/low-level-struct-improvements.md#scoped-mismatch)
(roughly, `scoped` can be added and `[UnscopedRef]` can be removed).
Previously, the compiler did not report an error/warning for such mismatch under some circumstances, but it is now always reported.
Note that the error is downgraded to a warning in `unsafe` contexts and also (in scenarios where it would be a breaking change) with LangVersion 12 or lower.

```cs
D1 d1 = (ref int i) => { }; // previously no mismatch error reported, now:
// error CS8986: The 'scoped' modifier of parameter 'i' doesn't match target 'D1'.

D2 d2 = (ref int i) => ref i; // an error was and continues to be reported:
// error CS8986: The 'scoped' modifier of parameter 'i' doesn't match target 'D2'.

delegate void D1(scoped ref int x);
delegate ref int D2(scoped ref int x);
```

```cs
using System.Diagnostics.CodeAnalysis;

D1 d1 = ([UnscopedRef] ref int i) => { }; // previously no mismatch error reported, now:
// error CS8986: The 'scoped' modifier of parameter 'i' doesn't match target 'D1'.

D2 d2 = ([UnscopedRef] ref int i) => ref i; // an error was and continues to be reported:
// error CS8986: The 'scoped' modifier of parameter 'i' doesn't match target 'D2'.

delegate void D1(ref int x);
delegate ref int D2(ref int x);
```

## `Microsoft.CodeAnalysis.EmbeddedAttribute` is validated on declaration

***Introduced in Visual Studio 2022 version 17.13***

The compiler now validates the shape of `Microsoft.CodeAnalysis.EmbeddedAttribute` when declared in source. Previously, the compiler
would allow user-defined declarations of this attribute, but only when it didn't need to generate one itself. We now validate that:

1. It must be internal
2. It must be a class
3. It must be sealed
4. It must be non-static
5. It must have an internal or public parameterless constructor
6. It must inherit from System.Attribute.
7. It must be allowed on any type declaration (class, struct, interface, enum, or delegate)

```cs
namespace Microsoft.CodeAnalysis;

// Previously, sometimes allowed. Now, CS9271
public class EmbeddedAttribute : Attribute {}
```
21 changes: 14 additions & 7 deletions docs/compilers/CSharp/Runtime Async Design.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,22 @@ public static class RuntimeHelpers
}
```

Additionally, we use the following helper attributes to indicate information to the runtime. If these attributes are not present in the reference assemblies, we will generate them; the runtime matches by full
name, not by type identity, so we do not need to care about using the "canonical" versions.
We presume the following `MethodImplOptions` bit is present. This is used to indicate to the JIT that it should generate an async state machine for the method.

```cs
namespace System.Runtime.CompilerServices;

// Used to tell the runtime to generate the async state machinery for this method
[AttributeUsage(AttributeTargets.Method)]
public class RuntimeAsyncMethodAttribute() : Attribute();
public enum MethodImplOptions
{
Async = 1024
}
```

Additionally, we use the following helper type to indicate information to the runtime. If this type is not present in the reference assemblies, we will generate it; the runtime matches by full
name, not by type identity, so we do not need to care about using the "canonical" version.

```cs
namespace System.Runtime.CompilerServices;

// Used to mark locals that should be hoisted to the generated async closure. Note that the runtime does not guarantee that all locals marked with this modreq will be hoisted; if it can prove that it
// doesn't need to hoist a variable, it may avoid doing so.
Expand All @@ -67,7 +74,7 @@ public class RuntimeAsyncMethodGenerationAttribute(bool runtimeAsync) : Attribut

## Transformation strategy

As mentioned previously, we try to expose as little of this to initial binding as possible. The one major exception to this is our handling of the `RuntimeAsyncMethodAttribute`; we do not let this be applied to
As mentioned previously, we try to expose as little of this to initial binding as possible. The one major exception to this is our handling of the `MethodImplOption.Async`; we do not let this be applied to
user code, and will issue an error if a user tries to do this by hand.

Compiler generated async state machines and runtime generated async share some of the same building blocks. Both need to have `await`s with in `catch` and `finally` blocks rewritten to pend the exceptions,
Expand Down Expand Up @@ -98,7 +105,7 @@ async Task M()
```

```cs
[RuntimeAsyncMethod, Experimental]
[MethodImpl(MethodImplOptions.Async), Experimental]
Task M()
{
// ... see lowering strategy for each kind of await below ...
Expand Down
Loading
Loading