Added a test for coherence when a generic type param has a default value from an associated type

This commit is contained in:
Ohad Ravid 2019-06-04 17:22:03 +02:00
parent 97c9437585
commit 194814065c
2 changed files with 36 additions and 0 deletions

View file

@ -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,
}

View file

@ -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() {}