New Features

  • Provide name resolution of items declared in impl blocks for type aliases. Taking performance into account, this feature is only enabled for types with a limited number of aliases
  • Provide the quick fix for Mismatched types error annotation to change a function’s return type. Note, it doesn’t work inside trait impl blocks for now

  • Now “Unresolved reference” inspection highlights code more precisely (by @Exidex)
  • Detect E0451 compiler error
  • Annotate slice patterns as an experimental feature for toolchains before 1.42

  • Parser improvements:

    • Support const trait impls syntax
    • Parse paths in attributes correctly
    • Correctly parse &raw operator. Note, type inference for the operator is not implemented yet
    • Fix parsing of lifetime bounds in Fn trait types (by @rrevenantt)

Performance Improvements

  • Slightly speeds up cfg attributes processing

Fixes

  • Prevent an infinite recursion while analyzing a control flow inside macros
  • Now some inspections (e.g., Liveness Analysis) correctly process macro calls. It should fix some false positive annotations
  • Now formatter adds a new line between items inside a function’s body
  • Fix “Introduce Variable” intention in case if the first expression is inside a nested block
  • Handle type aliases in “Destructure” intention (by @Kobzol)
  • Handle async functions in “Extract Function” refactoring (by @Kobzol)
  • Generates external documentation link for a public item from impl block even if it is located in a private module

Full set of changes can be found here