Skip to content

Conversation

@CyrusNajmabadi
Copy link
Member

We need this to get all the CI flakeyness fixes.

DoctorKrolic and others added 30 commits January 26, 2023 15:01
…t#66464)

* Use `SyntaxReference` instead of `SyntaxNode` in `EmitContext`

* Revert "Use `SyntaxReference` instead of `SyntaxNode` in `EmitContext`"

This reverts commit 76d807d.

* Additionally store syntax reference in `EmitContext`
* Disable static restore in more locations

* Run compilers CI when build scripts change

* Include compiler generators in compilers code change check

* Remove separate restore in bootstrap build
Add support for generating destructors in SyntaxGenerator
* InstrumentationState

* Rename

* Simplify instrumenter construction

* Renames

* Feedback

* Rename DynamicAnalysisInjector
…-deps-to-main

Merge release/dev17.5-vs-deps to main
Do not emit 'static' modifier on 'const' field
Remove BCL dependencies from insertion list
…ld-locations-to-same-document

Do not restrict field locations to the same document for "Replace with autoproperty" refactoring
…aces

Add support for generating explicit-interface members from SyntaxGenerator
Jared Parsons and others added 12 commits January 30, 2023 15:53
* Fix analyzer loading to prefer host

This changes the design of our analyzer loading policy to give hosts
more control over dependencies. Whenever possible analyzer dependencies
will be unified with the compiler host environment where previously we
only tried to unify dependencies owned directly by the compiler. This
will be achieved by using standard assembly loading practices that give
the host first shot at determining an `Assembly` to load for a given
`AssemblyName`.

For a concrete example of this problem consider some analyzers deploy
copies of `System.Memory.dll` in their analyzer folder. That means there
are two copies of `System.Memory.dll` in play: the one the compiler
deploys and the analyzer copy. The compiler prefers its copy because
so exchange types unify to a single place.

This won't change the designed behavior for the command line compilers.
In those scenarios the compiler is the host and the intent
compiler dependencies to be unified (this PR does fix a bug in this
area). It will make the implementation more rigorous though.

This will potentially change our behavior when loaded in hosts such as
Visual Studio. That environment has a much larger set of DLLs that can
be loaded into the primary load context. This is important though to
ensure propery type / dll unification happens where as today it can
result in duplicate types and assemblies.

This change also substantially updates our tests. Most of our tests were
focused on the default loading strategy (load in place, no shadow
copies). That is actually the least common loading strategy. The most
common is shadow copy loading. As such I revamped our test suite such
that the same set of tests run for all four of our main configurations:

- default + .NET Core
- default + .NET Framework
- shadow + .NET Core
- shadow + .NET Framework

The results are illuminating. There are more differences between these
scenarios than most people, likely, suspect. Later changes may try and
unify a few scenarios but for now wanted to mostly document the
behavior so it's not accidentally changed.

closes dotnet#66104
closes dotnet#60763
https://dev.azure.com/devdiv/DevDiv/_workitems/edit/1692992

Co-authored-by: Charles Stoner <[email protected]>
Co-authored-by: Charles Stoner <[email protected]>
* Add general nullable serializer

* Add test class

* Add a test for nullable options

* Add a general Enum serilizer

* Combine the type into EditorConfigValueSerilizer

* Add serializer for InlineDiagnosticsOptions

* Add serializer for Database

* Add serializer for BackgroundAnalysisScopeOption

* Add serializer for CompilerDiagnosticsScopeOption

* Add serializer for InsertBehavior

* Add serilizer for PropertyGenerationBehavior

* Add serializer for EnterKeyBehavior

* Add serializer for SnippetsBehavior

* Add serializer for RazorDiagnosticMode

* Add serializer for LiveShareDiagnosicMode and NormalDiagnosticMode

* When the parsed value itself is null, return true

* Onboard all the nullable and Enum type options to test

* Onboard a nullable enum case

* Add a invalid parse case

* Fix format

* Fix a typo

* Simplify

* Use a special way to parse enum to avoid strange case for Enum.Parse(). Compare string ignoring the case

* Modify the test to check both upper and lower case for bool?

* Add test to cover strange cases in Enum

* Add ingnoreCase: true in Enum.Parse

* Inline a method

* Extract a method

* Update comment

* Simplify the test

* Simplify the nullable serialization by reusing null serialization
Fix generating constraints with implement-abstract-class
Emit `default` constraint on an override when needed.
Moves MS.CA, MS.CA.C#, and MS.CA.VB to use net6.0 instead of netcoreapp3.1
* Enable GeneratedFilesOut for VB
Don't offer suggestion to swap ref-structs/pointers using a tuple
@CyrusNajmabadi CyrusNajmabadi requested review from a team as code owners January 31, 2023 21:35
@CyrusNajmabadi CyrusNajmabadi requested a review from a team January 31, 2023 21:35
@CyrusNajmabadi CyrusNajmabadi requested a review from a team as a code owner January 31, 2023 21:35
@ghost ghost added the Area-Compilers label Jan 31, 2023
@CyrusNajmabadi CyrusNajmabadi requested a review from cston January 31, 2023 21:35
@CyrusNajmabadi CyrusNajmabadi merged commit fe8abdb into dotnet:features/CollectionLiterals Jan 31, 2023
@CyrusNajmabadi CyrusNajmabadi deleted the mainToCollections branch January 31, 2023 23:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.