Skip to content

Commit

Permalink
Rollup merge of rust-lang#61535 - ohadravid:test-generic-with-default…
Browse files Browse the repository at this point in the history
…-assiociated-type-re-rebalance-coherence, r=nikomatsakis

Coherence test when a generic type param has a default value from an associated type

A followup on rust-lang#61400.
Before `re_rebalance_coherence`, this fails to compile (even though it should be accepted).
`re_rebalance_coherence` had no direct test for this, and I wanted to (a) make sure it doesn't regress in the future and (b) get it on record that this is actually the intended behavior.
  • Loading branch information
Centril authored Jul 12, 2019
2 parents 71f9384 + 1948140 commit 74ac956
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
Original file line number Diff line number Diff line change
@@ -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() {}

0 comments on commit 74ac956

Please sign in to comment.