New Features

  • Provide initial support for debugging with MSVC toolchain in CLion 2020.2. You can track current progress and restrictions here
  • Add initial implementation of Move File refactoring. The refactoring currently supports moving a single file without submodules.

  • Now Rust plugin is dynamically loadable on 2020.2. It allows you to install the plugin without restarting the IDE
  • Add intentions to convert a method call to UFCS and vice versa (by @Kobzol)

  • Add quick fixes to remove unused variable / parameter (by @Kobzol)

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

  • 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
  • Now highlighting of lint inspection annotations is associated with corresponding lint levels defined by lint check attributes like allow, warn, etc. (by @Stzx)
  • Basic support for forbid attribute. Now messages from a forbidden lint are highlighted as errors in the editor (by @Stzx)
  • Allow a user to change mutability of parameters in Extract Function dialog (by @Kobzol)
  • Report type errors for references with different mutability even if a type is not fully known (by @Kobzol)
  • Show unique editor tab names for main.rs, lib.rs and Cargo.toml (by @Kobzol)
  • Improve text for Convert to type quick fix (by @Kobzol)
  • Update Wrong type arguments number inspection (by @Kobzol)
  • Replace Remove all type arguments quick fix with Remove redundant type arguments quick fix (by @Stzx)

Fixes

  • Take into account namespaces when name shadowing occurs. For example, now use anyhow::anyhow doesn’t break name resolution
  • Fix false positive about not allowed impl Trait in associated type binding (by @Kobzol)
  • Fix false positive for Match must be exhaustive error (by @Mcat12)
  • Fix usage replacement in Extract Enum Variant refactoring (by @Kobzol)
  • Support tuple struct fields in Make public quick fix (by @Kobzol)
  • Make Self inside impl of enum to be resolved to both impl and enum items (by @fan-tom)
  • Don’t trigger Main function not found inspection if the file has top-level errors (by @Kobzol)
  • Fix Go to Declaration from associated type bindings on 2020.2
  • Fix parentheses completion for Fn* traits (by @Kobzol)
  • Liveness analysis takes into account destructured struct fields (by @Kobzol)
  • Fix Join Lines action for doc comment lines (by @Stzx)
  • Disable Promote Module to Directory and Downgrade Module to File refactorings for invalid files in the editor (by @Kobzol)
  • Correctly handle symlinked Cargo projects (by @Jezza)
  • Fix #[macro_export(local_inner_macros)] when used with the experimental macro expansion engine
  • Fix macro expansion infinite progress on 2020.2
  • Properly render types in annotations on 2020.2
  • Properly escape text in a test output pane
  • Get rid of options to disable the Test Tool window

  • Fix some exceptions:

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

Internal Improvements

  • Enable proofreading in commit messages
  • Provide issue / PR navigation in git log

Full set of changes can be found here