Rollup merge of #98329 - oli-obk:fast_path_ice, r=cjgillot
Avoid an ICE and instead let the compiler report a useful error Fixes #98299
This commit is contained in:
commit
1b48f09536
@ -662,7 +662,11 @@ where
|
||||
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),
|
||||
|
18
src/test/ui/issues/issue-98299.rs
Normal file
18
src/test/ui/issues/issue-98299.rs
Normal file
@ -0,0 +1,18 @@
|
||||
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() {}
|
9
src/test/ui/issues/issue-98299.stderr
Normal file
9
src/test/ui/issues/issue-98299.stderr
Normal file
@ -0,0 +1,9 @@
|
||||
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`.
|
Loading…
x
Reference in New Issue
Block a user