Skip to content

mixing up the order of keywords leads to crash #18623

@joboet

Description

@joboet

rust-analyzer version: rust-analyzer 0.4.2207-standalone (f499faf 2024-12-04)

rustc version: rustc 1.77.0

editor or extension: VSCode, extension version v0.4.2207

code snippet to reproduce:

use std::arch::asm;

fn main() {
    asm!(
        label crashy = { return; }
    )
}

I found out about asm_goto and played with it a bit, but mistyped and mixed up the label order. This led to rust-analyzer crashing.

Backtrace
thread 'Worker' panicked at crates/parser/src/parser.rs:57:9:
the parser seems stuck
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: parser::parser::Parser::err_recover
   3: parser::grammar::expressions::atom::atom_expr
   4: parser::grammar::expressions::expr_bp
   5: parser::grammar::expressions::stmt
   6: parser::grammar::entry::top::macro_stmts
   7: parser::TopEntryPoint::parse
   8: syntax_bridge::token_tree_to_syntax_node
   9: <hir_expand::db::ParseMacroExpansionQuery as ra_salsa::plumbing::QueryFunction>::execute
  10: ra_salsa::Cycle::catch
  11: ra_salsa::derived_lru::slot::Slot<Q,MP>::execute
  12: <ra_salsa::derived_lru::DerivedStorage<Q,MP> as ra_salsa::plumbing::QueryStorageOps<Q>>::fetch
  13: <DB as hir_expand::db::ExpandDatabase>::parse_macro_expansion
  14: hir_expand::db::parse_or_expand
  15: <hir_expand::db::AstIdMapQuery as ra_salsa::plumbing::QueryFunction>::execute
  16: ra_salsa::Cycle::catch
  17: ra_salsa::derived::slot::Slot<Q>::execute
  18: ra_salsa::derived::slot::Slot<Q>::read
  19: <ra_salsa::derived::DerivedStorage<Q> as ra_salsa::plumbing::QueryStorageOps<Q>>::fetch
  20: <DB as hir_expand::db::ExpandDatabase>::ast_id_map
  21: hir_def::item_tree::ItemTree::file_item_tree_with_source_map_query
  22: ra_salsa::Cycle::catch
  23: ra_salsa::derived::slot::Slot<Q>::execute
  24: ra_salsa::derived::slot::Slot<Q>::read
  25: <ra_salsa::derived::DerivedStorage<Q> as ra_salsa::plumbing::QueryStorageOps<Q>>::fetch
  26: <DB as hir_def::db::DefDatabase>::file_item_tree_with_source_map
  27: ra_salsa::Cycle::catch
  28: ra_salsa::derived::slot::Slot<Q>::execute
  29: ra_salsa::derived::slot::Slot<Q>::read
  30: <ra_salsa::derived::DerivedStorage<Q> as ra_salsa::plumbing::QueryStorageOps<Q>>::fetch
  31: <DB as hir_def::db::DefDatabase>::file_item_tree
  32: hir_def::nameres::collector::DefCollector::collect_macro_expansion
  33: hir_def::nameres::collector::collect_defs
  34: hir_def::nameres::DefMap::block_def_map_query
  35: ra_salsa::Cycle::catch
  36: ra_salsa::derived::slot::Slot<Q>::execute
  37: ra_salsa::derived::slot::Slot<Q>::read
  38: <ra_salsa::derived::DerivedStorage<Q> as ra_salsa::plumbing::QueryStorageOps<Q>>::fetch
  39: <DB as hir_def::db::DefDatabase>::block_def_map
  40: hir_def::body::lower::ExprCollector::collect_block_
  41: hir_def::body::lower::ExprCollector::maybe_collect_expr
  42: hir_def::body::lower::ExprCollector::collect_expr_opt
  43: hir_def::body::lower::lower
  44: hir_def::body::Body::body_with_source_map_query
  45: ra_salsa::Cycle::catch
  46: ra_salsa::derived_lru::slot::Slot<Q,MP>::execute
  47: <ra_salsa::derived_lru::DerivedStorage<Q,MP> as ra_salsa::plumbing::QueryStorageOps<Q>>::fetch
  48: <DB as hir_def::db::DefDatabase>::body_with_source_map
  49: hir::DefWithBody::diagnostics
  50: hir::ModuleDef::diagnostics
  51: hir::Module::diagnostics
  52: ide_diagnostics::semantic_diagnostics
  53: ide_diagnostics::full_diagnostics
  54: ra_salsa::Cancelled::catch
  55: rust_analyzer::handlers::request::handle_code_action
  56: core::ops::function::FnOnce::call_once{{vtable.shim}}
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions