-
Notifications
You must be signed in to change notification settings - Fork 192
Open
Description
auto-reduced (treereduce-rust):
//@compile-flags: -frust-incomplete-and-experimental-compiler-do-not-use
macro_rules! ty_app {
($_a:pat) => {
($ctor)
};
}
pub fn foo() {
match ty {
ty_app!(bean::Array) => {}
}
}original:
pub enum TypeCtor {
Slice,
Array,
}
pub struct B<T>(T);
macro_rules! ty_app {
($_a:pat) => {
ApplicationTy($ctor)
};
}
pub fn foo(ty: ApplicationTy) {
match ty {
ty_app!(bean::Array) => {}
}
}Version information:
Command:
/home/matthias/vcs/github/gccrs/gccrs-build/gcc/crab1 -frust-incomplete-and-experimental-compiler-do-not-use
Program output
/tmp/icemaker_global_tempdir.jLLtoE9fZU30/rustc_testrunner_tmpdir_reporting.aqGFvJ5Bn6sj/mvce.rs:3:10: error: unrecognised token ‘$’ in grouped or tuple pattern after first pattern
3 | ($ctor)
| ^
crab1: internal compiler error: Segmentation fault
0x300c7d8 internal_error(char const*, ...)
../../gcc/diagnostic-global-context.cc:534
0x199d0df crash_signal
../../gcc/toplev.cc:323
0xde2ec4 Rust::AST::Pattern::clone_pattern() const
../../gcc/rust/ast/rust-ast.h:1427
0xde2ec4 Rust::AST::SingleASTNode::SingleASTNode(Rust::AST::SingleASTNode const&)
../../gcc/rust/ast/rust-ast.cc:76
0xea7605 void std::_Construct<Rust::AST::SingleASTNode, Rust::AST::SingleASTNode const&>(Rust::AST::SingleASTNode*, Rust::AST::SingleASTNode const&)
/usr/include/c++/15.2.1/bits/stl_construct.h:133
0xea7605 Rust::AST::SingleASTNode* std::__do_uninit_copy<Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode*>(Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode*)
/usr/include/c++/15.2.1/bits/stl_uninitialized.h:145
0xea7605 Rust::AST::SingleASTNode* std::uninitialized_copy<Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode*>(Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode*)
/usr/include/c++/15.2.1/bits/stl_uninitialized.h:266
0xea7605 Rust::AST::SingleASTNode* std::__uninitialized_copy_a<Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode*, Rust::AST::SingleASTNode>(Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode*, std::allocator<Rust::AST::SingleASTNode>&)
/usr/include/c++/15.2.1/bits/stl_uninitialized.h:637
0xea7605 void std::vector<Rust::AST::SingleASTNode, std::allocator<Rust::AST::SingleASTNode> >::_M_range_initialize_n<Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode const*>(Rust::AST::SingleASTNode const*, Rust::AST::SingleASTNode const*, unsigned long)
/usr/include/c++/15.2.1/bits/stl_vector.h:1989
0xea7605 std::vector<Rust::AST::SingleASTNode, std::allocator<Rust::AST::SingleASTNode> >::vector(std::initializer_list<Rust::AST::SingleASTNode>, std::allocator<Rust::AST::SingleASTNode> const&)
/usr/include/c++/15.2.1/bits/stl_vector.h:712
0xea7605 transcribe_pattern
../../gcc/rust/expand/rust-macro-expand.cc:1021
0xea7605 transcribe_context
../../gcc/rust/expand/rust-macro-expand.cc:1066
0xea7605 Rust::MacroExpander::transcribe_rule(Rust::AST::MacroRulesDefinition&, Rust::AST::MacroRule&, Rust::AST::DelimTokenTree&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Rust::MatchedFragmentContainer*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Rust::MatchedFragmentContainer*> > >&, Rust::AST::InvocKind, Rust::MacroExpander::ContextType)
../../gcc/rust/expand/rust-macro-expand.cc:1152
0xeaa284 Rust::MacroExpander::expand_decl_macro(unsigned long, Rust::AST::MacroInvocData&, Rust::AST::MacroRulesDefinition&, Rust::AST::InvocKind)
../../gcc/rust/expand/rust-macro-expand.cc:128
0xeaa728 Rust::MacroExpander::expand_invoc(Rust::AST::MacroInvocation&, Rust::AST::InvocKind)
../../gcc/rust/expand/rust-macro-expand.cc:330
0xeb791f Rust::ExpandVisitor::maybe_expand_pattern(std::unique_ptr<Rust::AST::Pattern, std::default_delete<Rust::AST::Pattern> >&)
../../gcc/rust/expand/rust-expand-visitor.cc:391
0xeb7b6e Rust::ExpandVisitor::visit(Rust::AST::MatchExpr&)
../../gcc/rust/expand/rust-expand-visitor.cc:752
0xeb67df Rust::ExpandVisitor::maybe_expand_expr(std::unique_ptr<Rust::AST::Expr, std::default_delete<Rust::AST::Expr> >&)
../../gcc/rust/expand/rust-expand-visitor.cc:337
0xeb94fe void Rust::ExpandVisitor::expand_macro_children<std::vector<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> >, std::allocator<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> > > >, std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> > >(std::vector<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> >, std::allocator<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> > > >&, std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> > (Rust::AST::SingleASTNode::*)())
../../gcc/rust/expand/rust-expand-visitor.h:134
0xeb94fe Rust::ExpandVisitor::expand_inner_items(std::vector<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> >, std::allocator<std::unique_ptr<Rust::AST::Item, std::default_delete<Rust::AST::Item> > > >&)
../../gcc/rust/expand/rust-expand-visitor.cc:237
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Metadata
Metadata
Assignees
Labels
No labels