New Features

  • #5535 Provide initial support for debugging with MSVC toolchain in CLion 2020.2. You can track current progress and restrictions here

  • #4640 Enable intelligent highlighting inside macro call bodies when new macro expansion engine is used

  • #5626 Add initial implementation of Move File refactoring. The refactoring currently supports moving a single file without submodules.

  • #5545, #5506 Now Rust plugin is dynamically loadable on 2020.2. It allows you to install the plugin without restarting the IDE

  • #5614, #5601 Add intentions to convert a method call to UFCS and vice versa (by @Kobzol)

  • #5557, #5561 Add quick fixes to remove unused variable / parameter (by @Kobzol)

  • #5550 Add the quick fix to convert an immutable reference to a mutable one (by @Kobzol)

  • #5609 Update icons for Rust items. Now they are more similar to C/C++ icons. Also, fix visibility modifiers for some items in structure view

    Before After
    image image
  • #5586 Make Introduce variable refactoring available as an intention (by @Kobzol)

  • Add or improve detection of the new compiler errors:
  • #5571 Now highlighting of lint inspection annotations is associated with corresponding lint levels defined by lint check attributes like allow, warn, etc. (by @Stzx)

  • #5571 Basic support for forbid attribute. Now messages from a forbidden lint are highlighted as errors in the editor (by @Stzx)

  • #5313 Allow a user to change mutability of parameters in Extract Function dialog (by @Kobzol)

  • #5548 Report type errors for references with different mutability even if a type is not fully known (by @Kobzol)

  • #5580 Enable Convert match statement to if let intention for irrefutable patterns (by @Kobzol)

  • #5579 Show unique editor tab names for main.rs, lib.rs and Cargo.toml (by @Kobzol)

  • #5533 Improve text for Convert to type quick fix (by @Kobzol)

  • #5354 Update Wrong type arguments number inspection (by @Kobzol)

  • #5462 Replace Remove all type arguments quick fix with Remove redundant type arguments quick fix (by @Stzx)

Fixes

  • #5603 Take into account namespaces when name shadowing occurs. For example, now use anyhow::anyhow doesn’t break name resolution

  • #5599 Fix false positive about not allowed impl Trait in associated type binding (by @Kobzol)

  • #5466 Fix false positive for Match must be exhaustive error (by @Mcat12)

  • #5381 Fix usage replacement in Extract Enum Variant refactoring (by @Kobzol)

  • #5633 Support tuple struct fields in Make public quick fix (by @Kobzol)

  • #5570 Make Self inside impl of enum to be resolved to both impl and enum items (by @fan-tom)

  • #5547 Don’t trigger Main function not found inspection if the file has top-level errors (by @Kobzol)

  • #5538 Fix Go to Declaration from associated type bindings on 2020.2

  • #5574 Fix parentheses completion for Fn* traits (by @Kobzol)

  • #5528 Liveness analysis takes into account destructured struct fields (by @Kobzol)

  • #5523 Fix Join Lines action for doc comment lines (by @Stzx)

  • #5515 Disable Promote Module to Directory and Downgrade Module to File refactorings for invalid files in the editor (by @Kobzol)

  • #4868 Correctly handle symlinked Cargo projects (by @Jezza)

  • #5623 Fix #[macro_export(local_inner_macros)] when used with the experimental macro expansion engine

  • #5597 Fix macro expansion infinite progress on 2020.2

  • #5640 Properly render types in annotations on 2020.2

  • #5611 Properly escape text in a test output pane

  • #5549 Get rid of options to disable the Test Tool window

  • Fix some exceptions:

    • #5584 In Remove reference and Change return type quick fixes
    • #5591 When analysing file with an external linter
    • #5583 During code folding of invalid macro calls
    • #5578 On Find Usages in Macros 2.0
    • #5595, #5590 In structure view and usage tooltip
    • #5596 When formatting file with rustfmt on save

Internal Improvements

  • #5629 Enable proofreading in commit messages

  • #5622 Provide issue / PR navigation in git log

Full set of changes can be found here