Changelog #21

Commit: 90f8378
Release: 2020-04-20

New Features

  • #3958 Initial support for proc-macros

    79734928 c57c1d80 82f7 11ea 93a5 9081087402e0

    To enable it, set the following settings:

    1
    2
    3
    4
    
    {
        "rust-analyzer.cargo.loadOutDirsFromCheck": true,
        "rust-analyzer.procMacro.enabled": true
    }
    
  • #3990 switch to Chalk recursive solver. This significantly improves type inference when associated types are involved, for example, with iterators:

    79728444 3a4a5a00 82ee 11ea 83ab 1f3e539dde69
    Before
    79728643 8ac1b780 82ee 11ea 867a b231d46b89a0
    After
  • #4034 add unresolvedReference semantic tag for names which rust-analyzer fails to resolve. Adding to VS Code config

    1
    2
    3
    
    "editor.tokenColorCustomizationsExperimental": {
        "unresolvedReference": "#FF0000"
    }
    

    will give fast feedback about unresolved references, highlighting them in red. No default highlighting is set, as rust-analyzer still has a fair number of false positives.

    79669212 42a17880 81ba 11ea 9274 bceac6448914
  • #3962 don’t assign shortcut for Parent Module command. The original shortcut was ctrl+u, but it conflicts with VS Code build-in. It is recommended to assign custom shortcut for rust-analyzer.parentModule action.

  • #3965 implement inline associated type bounds.

  • #3966 add support for bounds on associated types in trait definitions.

  • #4026 omit more parameter hints in the presence of underscores.

  • #3894 implement exhaustiveness checking for record enum variants.

Fixes

  • #3961 fix extraneous comma when merging import.

  • #3969 Add Function assist now uses todo! macro.

  • #3967 handle Self::Type in trait definitions when referring to own associated type.

  • #3948 fix inlay hints config synchronization between client and server.

  • #3979 fix missing match arm false positive for enum with no variants.

  • #4010 fix diagnostics ranges in macros.

  • #4011 fix self-fulfilling completion.

  • #4012 fix panic on ellipsis in pattern.

  • #4021 fix type equality for dyn Trait.

  • #4022 fix panic in syntax highlighting.

  • #4023 fix another crash from wrong binders.

  • #4027 don’t qualify builtins in generated code.

  • #4036 fix name resolution in guard closes and record patterns.

Internal Improvements

  • #3971 add rust-analyzer diagnostics command for batch processing.

  • #3964 nicer Chalk debug logs.

  • #3994, #4016 don’t expose implementation details of SyntaxNodePtr.

  • #3995 separate project discovery from project loading.

  • #4008 add more info about what failed in tidy tests.