expand comment
This commit is contained in:
parent
4ba683ee52
commit
7fc84ac964
1 changed files with 29 additions and 0 deletions
|
|
@ -1,4 +1,33 @@
|
|||
// Regression test for #81317: type can no longer be infered as of 1.49
|
||||
//
|
||||
// The problem is that the xor operator and the index.into() each have two candidate impls that could apply
|
||||
// { S as BitXor<S>, S as BitXor<&'a S> } for xor and
|
||||
// { T::I as Into<u64>, T::I as Into<S> } for index.into()
|
||||
// previously inference was able to infer that the only valid combination was
|
||||
// S as BitXor<S> and T::I as Into<S>
|
||||
//
|
||||
// after rust-lang/rust#73905 this is no longer infered
|
||||
//
|
||||
// the error message could be better e.g. when iv is unused or has an an explicitly specified type S
|
||||
// there is currently the following help message
|
||||
//
|
||||
// error[E0284]: type annotations needed
|
||||
// --> src/main.rs:13:24
|
||||
// |
|
||||
// 42 | let iv = S ^ index.into();
|
||||
// | - ^^^^
|
||||
// | |
|
||||
// | type must be known at this point
|
||||
// |
|
||||
// = note: cannot satisfy `<S as BitXor<_>>::Output == _`
|
||||
// help: try using a fully qualified path to specify the expected types
|
||||
// |
|
||||
// 42 - let iv = S ^ index.into();
|
||||
// 42 + let iv = S ^ <<T as P>::I as Into<T>>::into(index);
|
||||
//
|
||||
// this is better as it's actually sufficent to fix the problem,
|
||||
// while just specifying the type of iv as currently suggested is insufficent
|
||||
//
|
||||
//@ check-fail
|
||||
|
||||
use std::ops::BitXor;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue