Rust-GCC / Rust-GCC/gccrs

Follow up to 4735

Open
#4,849 0 comments 0 reactions 1 assignee View on GitHub

@P-E-P is already working on this.

Since Sep 6, 2026.

bug
Dominant language
C++
Stars
2.9k
Forks
231
Avg merge
19h 55m
Merged PRs (30d)
67

Description

Although #4735 is now fixed (#4844), it only outputs an error message because the self segment cannot be accepted alone, it needs enclosing braces.

The following code has the required braces and also ICE.

Code
use self::{self};
Meta
Error output
internal compiler error: in value, at rust/util/optional.h:1333
Backtrace

0x46a847f internal_error(char const*, ...)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/diagnostic-global-context.cc:787
0x46b4b1d fancy_abort(char const*, int, char const*)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/diagnostics/context.cc:1813
0x186f256 tl::optional<unsigned int>::value() &&
  ../../gcc/rust/util/optional.h:1333
0x18688c3 Rust::Analysis::Mappings::get_ast_crate_by_node_id_raw(unsigned int)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/util/rust-hir-map.cc:261
0x186c6cd Rust::Analysis::Mappings::insert_glob_container(unsigned int, Rust::AST::GlobContainer*)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/util/rust-hir-map.cc:1163
0x191a6cf Rust::Resolver2_0::Early::finalize_rebind_import(Rust::Resolver2_0::Early::ImportPair const&)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/resolve/rust-early-name-resolver-2.0.cc:582
0x191a9c4 Rust::Resolver2_0::Early::visit(Rust::AST::UseDeclaration&)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/resolve/rust-early-name-resolver-2.0.cc:624
0x16a2430 Rust::AST::UseDeclaration::accept_vis(Rust::AST::ASTVisitor&)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/ast/rust-ast.cc:4742
0x17331ad void Rust::AST::DefaultASTVisitor::visit<Rust::AST::Item>(std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> >&)
  ../../gcc/rust/ast/rust-ast-visitor.h:417
0x172cbc6 Rust::AST::DefaultASTVisitor::visit(Rust::AST::Crate&)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/ast/rust-ast-visitor.cc:39
0x1905754 Rust::Resolver2_0::DefaultResolver::visit(Rust::AST::Crate&)::$_0::operator()() const
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/resolve/rust-default-resolver.cc:41
0x19056a3 void Rust::Resolver2_0::CanonicalPathCtx::scope_inner<Rust::Resolver2_0::CanonicalPathCtx::scope_crate<Rust::Resolver2_0::DefaultResolver::visit(Rust::AST::Crate&)::$_0&>(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Rust::Resolver2_0::DefaultResolver::visit(Rust::AST::Crate&)::$_0&)::{lambda()#1}, Rust::Resolver2_0::DefaultResolver::visit(Rust::AST::Crate&)::$_0&>(unsigned int, Rust::Resolver2_0::DefaultResolver::visit(Rust::AST::Crate&)::$_0&, Rust::Resolver2_0::DefaultResolver::visit(Rust::AST::Crate&)::$_0&)
  ../../gcc/rust/resolve/rust-name-resolution-context.h:466
0x1902f47 void Rust::Resolver2_0::CanonicalPathCtx::scope_crate<Rust::Resolver2_0::DefaultResolver::visit(Rust::AST::Crate&)::$_0&>(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Rust::Resolver2_0::DefaultResolver::visit(Rust::AST::Crate&)::$_0&)
  ../../gcc/rust/resolve/rust-name-resolution-context.h:432
0x1902ef9 Rust::Resolver2_0::DefaultResolver::visit(Rust::AST::Crate&)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/resolve/rust-default-resolver.cc:51
0x191855a Rust::Resolver2_0::Early::go(Rust::AST::Crate&)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/resolve/rust-early-name-resolver-2.0.cc:81
0x1770897 Rust::Session::expansion(Rust::AST::Crate&, Rust::Resolver2_0::NameResolutionContext&)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/rust-session-manager.cc:1084
0x176e885 Rust::Session::compile_crate(char const*)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/rust-session-manager.cc:741
0x176e0b6 Rust::Session::handle_input_files(int, char const**)
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/rust-session-manager.cc:478
0x152a6c3 grs_langhook_parse_file()
  /home/patryp/Documents/gccrs_bis/build/gcc/../../gcc/rust/rust-lang.cc:165

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.