@mattgoldman@JetBrainsRider You can set any hotkey for `Structural Navigation Forward` and `Structural Navigation Backward` commands in `Settings -> Keymap`.
These commands will be available even if you turn off the tab key integration
@maartenballiauw@phamilton1234@JetBrainsRider@akarpov89 You can create your own inspection like this in @resharper by providing a code pattern for it
You can also provide a replacement pattern to provide a quick fix and apply it in bulk for the whole solution
It's under R# -> Options -> Code Inspection -> Code Patterns
@khellang@buhakmeh@maartenballiauw@guy_langston@resharper It's likely that `reader.ReadLine()` is known to anyone who'll read the code and is unlikely to ever change its return value to something more general than a string so `is string` might be fine here
But in general using nominal type checks as null checks is a problematic pattern
@khellang@buhakmeh@maartenballiauw@guy_langston@resharper `is { }` pattern explicitly checks for null values only
It doesn't require the reader of the code to know what `GetData` returns and can never change from null check only to a type check due to an unrelated refactoring
@stevetalkscode@MadsTorgersen@resharper@billwagner Could you please tell more about the case where you had to use the suppression? I'd be glad to investigate the false positive but ReSharper recognizes code invariant checks like the one recommended above and doesn't flag them. Perhaps the original scenario was a bit more complex?
Improved Support for Source Generators in R#
π‘ Inlay hints, highlighting, navigation, ...
π€― Refactoring with generated code
Read the in-depth post by @a_tessenr https://t.co/cfamx8NFrU #dotnet#csharp
Now that I think about, supporting that single language feature actually took longer than quitting two of my previous jobs. Felt like switching to a separate full time position for this period of time too γ
Took me almost 30 months to properly support nullable reference types but finally it's done. Now it's time to add more features on top of it γ
The first batch is already available in EAPs - https://t.co/vdwQFoIHd3
Nullable reference types just got better! πͺ
π€ How to migrate to nullable reference types
πͺ Switch annotation syntax to attribute syntax
βοΈ Deal with suppressions
π οΈ Change nullability
π Specify types explicitly when using var
#dotnet https://t.co/lUYjEsTn6z
@citizenmatt Fun fact: there was a compiler bug that caused
`A?.B!.C` behave like `(A?.B).C`
The bug is fixed along with C# 9 release and it's actually a breaking change for some code γ
https://t.co/ZCMctQOXGs
https://t.co/NL54mZyfD1
I've been working on a viral... cough NRT feature recently for @resharper. It's still rough on the edges but I want to show you a glimpse of what it can do.
@suchoss@JetBrainsRider Like this?
If you paste anything that requires escaping in a string in @JetBrainsRider or @resharper you'll get a popup suggesting you to escape everything that needs to be escaped e.g quotes in verbatim strings, line breaks in regular strings, curly braces in interpolations etc
Our first talk at JetBrains .NET Days Online:
π C# Source Generators in Action, by @a_tessenr
Starting in 10 min! Register and join us: https://t.co/M0VHgMw8bL
#JBDotNetDays#dotnet
If you are interested in source generators you might want to check 'Source Generators in Action' session at .NET Days Online 2021 tomorrow. Hope you'll enjoy it and learn something new there γ
Tomorrow we kick off JetBrains .NET Days Online 2021.π₯ 14 community speakers will talk about topics like C#, F#, GraphQL, Blazor, gRPC, and more!
Make sure to register and check the talks:
https://t.co/eiJIKSx7Og
#JBDotNetDays#dotnet
@PolarizedIons@JetBrainsRider The scenario you've hit is unfortunately quite common
Would you prefer Rider to hide compiler warnings that are known to be false even though you'll get some during compilation? Provided they are not lifted to errors of course
I'm collecting ideas for improving the analysis γ
@PolarizedIons@JetBrainsRider The compiler's unable to track dependencies such as `if 'result' is false 'user' is not null`. Here's the compiler's issue for the problem: https://t.co/59MLn8jx6g
Sadly, not matching the compiler here might result in errors during compilation that won't be visible in the editor
@PolarizedIons@JetBrainsRider Thanks. I suspect there should be a `return` statement in `if (!result)` since currently the code dereferences `user` even if returned value is `false`.
Unfortunately the `return` statement won't help in this case since Rider must match the compiler's behavior