gccrs icon indicating copy to clipboard operation
gccrs copied to clipboard

ICE when on invalid-code when construction enum

Open dkm opened this issue 8 months ago • 0 comments

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)

dkm avatar Jun 12 '24 20:06 dkm