diff --git a/src/error.rs b/src/error.rs index bc6510b1f129f..72eedba5e3e18 100644 --- a/src/error.rs +++ b/src/error.rs @@ -116,7 +116,7 @@ impl<'tcx> Error for EvalError<'tcx> { EvalError::AssumptionNotHeld => "`assume` argument was false", EvalError::InlineAsm => - "cannot evaluate inline assembly", + "miri does not support inline assembly", EvalError::TypeNotPrimitive(_) => "expected primitive type, got nonprimitive", EvalError::ReallocatedStaticMemory => diff --git a/src/eval_context.rs b/src/eval_context.rs index 31c4915185da1..2a2a5829d3777 100644 --- a/src/eval_context.rs +++ b/src/eval_context.rs @@ -1437,6 +1437,12 @@ pub fn eval_main<'a, 'tcx: 'a>( let mut ecx = EvalContext::new(tcx, limits); let mir = ecx.load_mir(def_id).expect("main function's MIR not found"); + if !mir.return_ty.is_nil() || mir.arg_count != 0 { + let msg = "miri does not support main functions without `fn()` type signatures"; + tcx.sess.err(&EvalError::Unimplemented(String::from(msg)).to_string()); + return; + } + ecx.push_stack_frame( def_id, DUMMY_SP,