New Features

  • #8005 Provide Invert if condition intention for if statement without else branch

  • #8126 Annotate labels with invalid names (by @t-kameyama)

  • #8115 Annotate macro 2.0 definitions as experimental and provide quick-fix to add decl_macro feature on nightly toolchain

  • #8054, #8083 Better process complex re-exports by auto import for unresolved UFCS method calls as well as during other refactorings and inspection quick-fixes

  • #7978 Adapt new name resolution engine to use it inside files without crate root (for example, standalone rust files). It allows resolving macros 2.0 and improve processing of complex re-exports in such files

  • #7976 Improve annotations of type aliases and associated types. Now the plugin doesn’t show outdated E0202 error, provides error messages similar to recent stable compiler and check usages of the following nightly features: generic_associated_types, inherent_associated_types, associated_type_defaults and extern_types

  • #8138 Take into account const generic parameters while <> completion

  • #7298 Provide enabled experimental features by Help | Create New Issue action which allows opening issue in our tracker right from your IDE

Fixes

  • Name resolution improvements:

    • #8176 Prefer enum variant over associated items with the same name

    • #8173 Fix exception during preparation phase of name resolution. In particular, it should fix analysis in sixtyfps crate

    • #8153 Correctly disambiguate constants/const parameters and unit structs during name resolution

    • #8135 Properly invalidate name resolution caches on adding or removing #![no_std] and #![no_core] attributes

    • #8186 Fix name resolution of some procedural macro calls. For example, yew::html! from yew crate

  • Procedural macro expansion fixes:

    • #8183 Do not expand async_trait procedural macro from async-trait crate. It should fix some code insight issues related to async_trait

    • #8155 Fix procedural macro expansion with nightly toolchain

    Note, procedural macro expansion is still under development, and it’s disabled by default for now. To turn it on, enable org.rust.cargo.evaluate.build.scripts and org.rust.macros.proc experimental features

  • #8100 Fix Extract variable refactoring on expression statements and return values (by @afetisov)

  • #8163 Correctly process enum and structs with the same names as primitive types like u32. It should help to infer proper types for such items and not to produce false positive Use of moved value error annotations, for example, in bevy crate

  • #8166 Fix false-positive unresolved reference for UFCS path inside trait impl when using unnamed trait import

  • #8157 Remove set, get and with name patterns from the Self convention inspection. This should reduce the number of false positive warnings produced by the inspection. It also moves the inspection closer to the corresponding wrong_self_convention inspection from Clippy (by @Kobzol)

  • #8112 Use absolute path during auto importing when the scope has child module with the same name as extern crate

  • #8052 Take into account code generated with attribute procedural macros by Unused imports inspection

  • #8195 Fix Rust code completion settings layout

Internal Improvements

  • #8159 Make 2021.3 platform default for development

  • #8152 Setup Dependabot for updating ra_ap_proc_macro_srv. It should help to keep procedural macro expansion engine up-to-date and quicker support changes related to procedural macros in nightly compiler

  • #8167 Prepare plugin for upcoming changes in untrusted editor notification

Full set of changes can be found here