gccrs
gccrs copied to clipboard
ICE when on invalid-code when construction enum
I tried this code:
enum Res {
OK,
BAD,
}
enum LOption {
Some(i32),
None,
}
fn test(v: LOption) -> Res {
return Res::BAD;
}
fn main() -> i32 {
// Should be:
// test(LOption::Some(2));
test(LOption(2));
0;
}
I expected to see this happen:
The compiler should reject the input.
Instead, this happened: :ice_cream:
crab1: internal compiler error: in visit, at rust/typecheck/rust-hir-type-check-expr.cc:197
0x2543935 Rust::Resolver::TypeCheckExpr::visit(Rust::HIR::CallExpr&)
../../gcc/rust/typecheck/rust-hir-type-check-expr.cc:197
0x23bd30f Rust::HIR::CallExpr::accept_vis(Rust::HIR::HIRExpressionVisitor&)
../../gcc/rust/hir/tree/rust-hir.cc:4831
0x2542ee7 Rust::Resolver::TypeCheckExpr::Resolve(Rust::HIR::Expr*)
../../gcc/rust/typecheck/rust-hir-type-check-expr.cc:42
0x24ebd21 Rust::TyTy::TypeCheckCallExpr::visit(Rust::TyTy::FnType&)
../../gcc/rust/typecheck/rust-tyty-call.cc:143
0x24d5789 Rust::TyTy::FnType::accept_vis(Rust::TyTy::TyVisitor&)
../../gcc/rust/typecheck/rust-tyty.cc:1879
0x254c7eb Rust::TyTy::TypeCheckCallExpr::go(Rust::TyTy::BaseType*, Rust::HIR::CallExpr&, Rust::TyTy::VariantDef&, Rust::Resolver::TypeCheckContext*)
../../gcc/rust/typecheck/rust-tyty-call.h:39
0x2543aa6 Rust::Resolver::TypeCheckExpr::visit(Rust::HIR::CallExpr&)
../../gcc/rust/typecheck/rust-hir-type-check-expr.cc:230
0x23bd30f Rust::HIR::CallExpr::accept_vis(Rust::HIR::HIRExpressionVisitor&)
../../gcc/rust/hir/tree/rust-hir.cc:4831
0x2542ee7 Rust::Resolver::TypeCheckExpr::Resolve(Rust::HIR::Expr*)
../../gcc/rust/typecheck/rust-hir-type-check-expr.cc:42
0x254eac9 Rust::Resolver::TypeCheckStmt::visit(Rust::HIR::ExprStmt&)
../../gcc/rust/typecheck/rust-hir-type-check-stmt.cc:41
0x23bd13b Rust::HIR::ExprStmt::accept_vis(Rust::HIR::HIRStmtVisitor&)
../../gcc/rust/hir/tree/rust-hir.cc:4777
0x254ea84 Rust::Resolver::TypeCheckStmt::Resolve(Rust::HIR::Stmt*)
../../gcc/rust/typecheck/rust-hir-type-check-stmt.cc:34
0x25456d4 Rust::Resolver::TypeCheckExpr::visit(Rust::HIR::BlockExpr&)
../../gcc/rust/typecheck/rust-hir-type-check-expr.cc:582
0x23bd889 Rust::HIR::BlockExpr::accept_vis(Rust::HIR::HIRExpressionVisitor&)
../../gcc/rust/hir/tree/rust-hir.cc:4993
0x2542ee7 Rust::Resolver::TypeCheckExpr::Resolve(Rust::HIR::Expr*)
../../gcc/rust/typecheck/rust-hir-type-check-expr.cc:42
0x252b702 Rust::Resolver::TypeCheckItem::visit(Rust::HIR::Function&)
../../gcc/rust/typecheck/rust-hir-type-check-item.cc:587
0x23bd8f3 Rust::HIR::Function::accept_vis(Rust::HIR::HIRVisItemVisitor&)
../../gcc/rust/hir/tree/rust-hir.cc:5005
0x252829f Rust::Resolver::TypeCheckItem::Resolve(Rust::HIR::Item&)
../../gcc/rust/typecheck/rust-hir-type-check-item.cc:55
0x24bc51f Rust::Resolver::TypeResolution::Resolve(Rust::HIR::Crate&)
../../gcc/rust/typecheck/rust-hir-type-check.cc:70
0x229bda9 Rust::Session::compile_crate(char const*)
../../gcc/rust/rust-session-manager.cc:667
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.
Meta
- What version of Rust GCC were you using, git sha if possible. 646046091b703621c4ba63adb76179c11a1dbb92
Reproducer on compiler-explorer (this is using the nightly build, so the link is expected to "work" when the bug is fixed)