github rust-lang/rust-analyzer 2025-10-27

10 hours ago

Commit: 049767e
Release: 2025-10-27 (v0.3.2658)

New Features

Fixes

  • #20583 (first contribution) add rust-analyzer.semanticHighlighting.comments.enable option.
  • #20697, #20745 (first contribution) fix negative literals in const generics.
  • #19867 (first contribution) allow &raw [mut | const] for union fields in safe code.
  • #20432 (first contribution) improve identifier pattern handling in assists.
  • #20891 (first contribution) add negation semantic token type.
  • #20425 (first contribution) add parser heuristic to warn on unterminated strings.
  • #20520 add option to hide reborrows in adjustment inlay hints.
  • #20721 implement fallback properly.
  • #20755 add #[doc = include_str!(…)] completion.
  • #20423 make import sorting order follow the 2024 edition style.
  • #20801 small fixes for import insertion.
  • #20866 run cargo metadata on sysroot right from its path.
  • #20554 improve handling of the env! macro.
  • #20587 deduplicate methods in completion by function ID and not by name.
  • #20803 replace --show-output task defaults with --nocapture.
  • #20459 track diagnostic generations per package.
  • #20689 make flycheck clearing dependency-aware.
  • #20635 don't trigger two flychecks when saving files that are part of targets.
  • #20402 add more workarounds for incorrect startup diagnostics.
  • #20787 fix spurious incorrect_generics_len on generic enum variants used through type aliases.
  • #20770 don't trigger trait-impl-incorrect-safety on unresolved traits.
  • #20642 make #[target_feature] safe on WASM.
  • #20504 avoid infinite recursion while lowering associated type bounds from supertraits.
  • #20720 prevent rustup from automatically installing toolchains.
  • #20528 masquerade as nightly cargo when invoking flycheck with -Zscript.
  • #20612 fix "Expand macro recursively" on nested macro calls.
  • #20517 only compute unstable paths on nightly toolchains for IDE features.
  • #20639 resolve paths to snapshot test libraries absolutely.
  • #20547 don't highlight unrelated unsafe operation on unsafe blocks.
  • #20579 don't pass --target to rustc twice while fetching target data layout.
  • #20475 don't duplicate lang items with overridden sysroot crates.
  • #20518 fix else completion in let _ = if x {} $0.
  • #20390 add if-else completions in let statements and argument lists.
  • #20620, #20657 add else keyword completion after let statements.
  • #20653 don't output an empty generic parameters list in generate_function.
  • #20708 fix panic in destructure_struct_binding.
  • #20702 fix else completion before else keyword.
  • #20700 fix extract_variable on if-let.
  • #20709 fix panic in destructure_struct_binding.
  • #20710 fix shorthand fields in unused_variables.
  • #20661 tighten up expected type completions in if.
  • #20507 handle expected return type in completions.
  • #20725 fix lifetime elision handling for Fn-style trait bounds.
  • #20624 fix lifetime_bounds.
  • #20723 fix bind_unused_param with binding modes and underscore prefixes.
  • #20722 fix pull_assignment_up on chained ifs.
  • #20679 fix type completion with nested patterns.
  • #20592 handle closures inside match in add_braces.
  • #20543 don't suggest invalid transformation in replace_if_let_with_match.
  • #20742 don't turn unused variables into raw identifier.
  • #20598 support let chains in convert_to_guarded_return.
  • #20731 handle tuple and slice rest patterns in expand_rest_pattern.
  • #20729 add const generic parameter keyword completion.
  • #20793 add missing parentheses on ambiguity in missing_unsafe.
  • #20513 complete let in let-chains.
  • #20812 complete self parameters in associated trait functions.
  • #20805 improve parse errors for static and const.
  • #20824 fix completion type analysis in empty closures.
  • #20817 support add_explicit_type on parameters in let statements.
  • #20816 handle closure return type adjustments in add_return_type.
  • #20526 support let-chains for .let completions.
  • #20788 allow more string literal conversions from raw strings.
  • #20838 don't make convert_to_guarded_return applicable on let-else.
  • #20758 support else blocks with ! return type in convert_to_guarded_return.
  • #20772 support match inside if in pull_assignment_up.
  • #20673 support break with value in completions.
  • #20858 include trailing underscores when hiding inlay hints.
  • #20872 add missing rest pattern in convert_named_struct_to_tuple_struct.
  • #20880 fix invalid rest pattern in convert_tuple_struct_to_named_struct.
  • #20455 fix indent in convert_match_to_let_else.
  • #20509 fix indent in move_guard_to_arm_body.
  • #20613 fix indent in unresolved_field diagnostic fixes.
  • #20845 fix indent in add_braces.
  • #20850 fix indent in add_missing_match_arms.
  • #20670 improve incomplete statement heuristic.
  • #20831 add shorthand record field completions.
  • #20571 add type keyword completions.
  • #20886 improve handling of missing names in MethodCallExpr.
  • #20905 fix array inhabitedness check.
  • #20889 improve field completion parentheses heuristic.
  • #20658 complete else in more expressions.
  • #20611 add parantheses for precedence in replace_arith_op.
  • #20912 complete let before expression in if.
  • #20764 handle if-let in convert_to_guarded_return.
  • #20712 handle shorthand field patterns in destructure_tuple_binding.
  • #20589 place new module outside impl block in extract_module.
  • #20913 support let-chains in replace_is_method_with_if_let_method.
  • #20626 improve whitespace in make::struct_field_list.
  • #20534 improve semicolon handling in toggle_macro_delimiter.
  • #20442 only import the item in "Unqualify method call" when needed.
  • #20686 only offer generate_default_from_enum_variant when the variant name is completely selected.
  • #20771 offer invert_if on else.
  • #20844 offer add_braces on assignments.
  • #20599 offer apply_demorgan on !.
  • #20456 support guards in replace_match_with_if_let.
  • #20714 allow trailing comma in remove_dbg!.
  • #20511 don't offer convert_integer_literal on selections.
  • #20512 don't offer replace_arith_op on selections.
  • #20736 don't offer invert_if on if-let chains.
  • #20682 don't offer change_visibility for variant fields.
  • #20688 reduce replace_is_method_with_if_let_method applicability range.
  • #20759 fix casts and use typed syntax tree API in convert_to_guarded_return.
  • #20876 fix signature_help LSP conversion creating invalid UTF-16 offsets.

Internal Improvements

  • #20379 (first contribution) consistently use --- for horizontal rules.
  • #20483 (first contribution) optimize VS Code extension icon.
  • #20794 (first contribution) deduplicate sort and dedup calls.
  • #20667 add regression test for The One and Only Issue.
  • #20376 merge Trait and TraitAlias handling.
  • #20399 enable warning logs by default.
  • #20706 avoid allocating in stdx::replace.
  • #20730, #20748, #20860 migrate expand_record_rest_pattern, replace_arith_op and generate_single_field_struct_from assists to SyntaxEditor.
  • #20796 bump salsa.
  • #20852 do not enable force-always-assert by default.
  • #20631 remove support for #[register_attr].
  • #20804 pass --target to xtask install.
  • #20683 expose iterators over the types in InferenceResult.
  • #20669 add a testing guide.
  • #20633 clarify introduction in the README and manual.
  • #20638 add FAQ entry about Cargo build lock and cache conflicts.
  • #20560 add progress bars to more places in analysis-stats.
  • #20652 improve rust-analyzer diagnostics.
  • #20774 build x86_64-apple-darwin binaries on macos-14.

See also the changelog post.

Don't miss a new rust-analyzer release

NewReleases is sending notifications on new releases.