Added a test for coherence when a generic type param has a default value from an associated type
This commit is contained in:
parent
97c9437585
commit
194814065c
2 changed files with 36 additions and 0 deletions
|
|
@ -20,3 +20,12 @@ pub struct BatchInsert<'a, T: 'a, Tab> {
|
|||
impl<'a, T:'a, Tab, DB> QueryFragment<DB> for BatchInsert<'a, T, Tab>
|
||||
where DB: SupportsDefaultKeyword + Backend,
|
||||
{}
|
||||
|
||||
pub trait LibToOwned {
|
||||
type Owned;
|
||||
}
|
||||
|
||||
pub struct LibCow<T: LibToOwned, Owned = <T as LibToOwned>::Owned> {
|
||||
pub t: T,
|
||||
pub o: Owned,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
// run-pass
|
||||
// aux-build:re_rebalance_coherence_lib.rs
|
||||
|
||||
#![allow(dead_code)]
|
||||
#![feature(re_rebalance_coherence)]
|
||||
// check that a generic type with a default value from an associated type can be used without
|
||||
// specifying the value, and without invoking coherence errors.
|
||||
|
||||
extern crate re_rebalance_coherence_lib as lib;
|
||||
use lib::*;
|
||||
|
||||
struct MyString {}
|
||||
|
||||
impl LibToOwned for MyString {
|
||||
type Owned = String;
|
||||
}
|
||||
|
||||
impl PartialEq<MyString> for LibCow<MyString> {
|
||||
fn eq(&self, _other: &MyString) -> bool {
|
||||
// Test that the default type is used.
|
||||
let _s: &String = &self.o;
|
||||
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
Loading…
Add table
Add a link
Reference in a new issue