The JetBrains Blog
The latest updates on all JetBrains products and topics
Andrey is a software engineer at JetBrains working on C# language support in ReSharper and Rider from parser implementation to static analysis and refactorings. Interested in static analysis, type theory, and metaprogramming.
Improved Support for Source Generators in ReSharper 2021.2
The popularity of Source Generators is slowly yet steadily growing within the .NET community as more projects learn to utilize them to reduce tedious and repetitive development work. Newcomers can get an overview in our Source Generators introductory blog post, try various samples Microsoft provides, or watch the recorded talk "Source Generators in Practice" from JetBrains .NET Days Online. Source generators are a fantastic tool that allows you to generate code at compile-time. For example, you can use generators to extend every type in your project with equality methods or automatically pr
What’s New for C# Nullable Reference Types in ReSharper and Rider 2021.2 EAP?
With the language design finally stabilizing and less changes being made these days, we had the time to catch up on building some long-awaited features, and addressed some pitfalls that are unlikely to be handled by the C# language itself. In this blog post we’ll introduce some of the most interesting changes that will be included in the upcoming 2021.2 release of ReSharper and Rider: Migration to nullable reference typesDealing with nullable warning suppressionsRefactorings Let's dive in. (more…)
Improved Analysis and Hints for Nullable Reference Types
If you are already using nullable reference types, you might have noticed that they can help make your code safer. But not automagically... This feature relies heavily on everything called by your code being annotated. Unannotated APIs are a big problem for nullable reference types, as they never produce warnings. Values from such calls show extremely optimistic non-null hints, even though there are no guarantees that these hints are correct. Here's a compiler issue for this problem. For example, if you are using LINQ's FirstOrDefault() method from .NET Core 3.1, the compiler not only allows y