From d971a63c4b81340634f17579da0792a7467b8ea0 Mon Sep 17 00:00:00 2001 From: Scott Olson Date: Fri, 10 Feb 2017 05:27:02 -0800 Subject: [PATCH] Mark more errors as unsupported. --- src/error.rs | 2 +- src/eval_context.rs | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) 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,