Changelog #35

Commit: 8ff40af
Release: 2020-07-27

Sponsors

New Features

  • #5524 allow opting out of experimental diagnostics like MismatchedArgCount.

  • #5518 use resolved paths in SSR rules. The main user-visible changes are:

    • SSR now matches paths based on whether they resolve to the same thing instead of whether they’re written the same.

      • So foo() won’t match foo() if it’s a different function foo(), but will match bar::foo() if it’s the same foo.

    • Paths in the replacement will now be rendered with appropriate qualification for their context.

      • For example foo::Bar will render as just Bar inside the module foo, but might render as baz::foo::Bar from elsewhere.

    • This means that all paths in the search pattern and replacement template must be able to be resolved.

    • It now also matters where you invoke SSR from, since paths are resolved relative to wherever that is.

    • Search now uses find-uses on paths to locate places to try matching. This means that when a path is present in the pattern, search will generally be pretty fast.

    • Function calls can now match method calls again, but this time only if they resolve to the same function.

  • #5527 track internal metrics: https://rust-analyzer.github.io/metrics/.

  • #5470 use cargo.target for checkOnSave.

  • #5451 highlight more cases punctuation characters.

  • #5475 support Trait as _ imports.

  • #5492 use symbol tags.

  • #5500 problem matcher auto detects relative/absolute paths and matches VSCode LSP’s owner and source.

  • #5473 new format of rust-project.json — configuration file for non Cargo-based projects.

Fixes

  • #5467 allow null or empty values for configuration.

  • #5466 do not show default types in function and closure return values.

  • #5478 replace existing visibility modifier in Fix Visibility assist.

  • #5480 fix snippetTextEdits applying to other files.

Internal Improvements

  • #5458, #5472 fully switch from insta to expect.

  • #5479 allow gathering memory stats on non-jemalloc Linux.

  • #5481 track document versions in the server.

  • #5497 store macro invocation parameters green trees instead of token trees, which improves memory usage.

  • #5519 cache macro expansion in semantics.