提交 d2ea7e20 编写于 作者: O Oli Scherer

Avoid an ICE and instead let the compiler report a useful error

上级 42dcf70f
......@@ -662,7 +662,11 @@ fn consts(
match b.kind() {
ty::ConstKind::Infer(InferConst::Var(_)) if D::forbid_inference_vars() => {
// Forbid inference variables in the RHS.
bug!("unexpected inference var {:?}", b)
self.infcx.tcx.sess.delay_span_bug(
self.delegate.span(),
format!("unexpected inference var {:?}", b,),
);
Ok(a)
}
// FIXME(invariance): see the related FIXME above.
_ => self.infcx.super_combine_consts(self, a, b),
......
use std::convert::TryFrom;
pub fn test_usage(p: ()) {
SmallCString::try_from(p).map(|cstr| cstr);
//~^ ERROR: type annotations needed
}
pub struct SmallCString<const N: usize> {}
impl<const N: usize> TryFrom<()> for SmallCString<N> {
type Error = ();
fn try_from(path: ()) -> Result<Self, Self::Error> {
unimplemented!();
}
}
fn main() {}
error[E0282]: type annotations needed
--> $DIR/issue-98299.rs:4:5
|
LL | SmallCString::try_from(p).map(|cstr| cstr);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for enum `Result<SmallCString<{_: usize}>, ()>`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0282`.
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册