forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of rust-lang#105095 - matthiaskrgr:rollup-9pu7vrx, r=matth…
…iaskrgr Rollup of 9 pull requests Successful merges: - rust-lang#103065 (rustdoc-json: Document and Test that args can be patterns.) - rust-lang#104865 (Don't overwrite local changes when updating submodules) - rust-lang#104895 (Avoid Invalid code suggested when encountering unsatisfied trait bounds in derive macro code) - rust-lang#105063 (Rustdoc Json Tests: Don't assume that core::fmt::Debug will always have one item.) - rust-lang#105064 (rustdoc: add comment to confusing CSS `main { min-width: 0 }`) - rust-lang#105074 (Add Nicholas Bishop to `.mailmap`) - rust-lang#105081 (Add a regression test for rust-lang#104322) - rust-lang#105086 (rustdoc: clean up sidebar link CSS) - rust-lang#105091 (add Tshepang Mbambo to .mailmap) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
- Loading branch information
Showing
11 changed files
with
206 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
// @is "$.index[*][?(@.name=='fst')].inner.decl.inputs[0][0]" '"(x, _)"' | ||
pub fn fst<X, Y>((x, _): (X, Y)) -> X { | ||
x | ||
} | ||
|
||
// @is "$.index[*][?(@.name=='drop_int')].inner.decl.inputs[0][0]" '"_"' | ||
pub fn drop_int(_: i32) {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
// force-host | ||
// no-prefer-dynamic | ||
|
||
#![crate_type = "proc-macro"] | ||
|
||
extern crate proc_macro; | ||
|
||
use proc_macro::TokenStream; | ||
|
||
#[proc_macro_derive(AddImpl)] | ||
|
||
pub fn derive(input: TokenStream) -> TokenStream { | ||
"use std::cmp::Ordering; | ||
impl<T> Ord for PriorityQueue<T> { | ||
fn cmp(&self, other: &Self) -> Ordering { | ||
self.0.cmp(&self.height) | ||
} | ||
} | ||
" | ||
.parse() | ||
.unwrap() | ||
} |
20 changes: 20 additions & 0 deletions
20
src/test/ui/proc-macro/issue-104884-trait-impl-sugg-err.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
// aux-build:issue-104884.rs | ||
|
||
use std::collections::BinaryHeap; | ||
|
||
#[macro_use] | ||
extern crate issue_104884; | ||
|
||
#[derive(PartialEq, Eq, PartialOrd, Ord)] | ||
struct PriorityQueueEntry<T> { | ||
value: T, | ||
} | ||
|
||
#[derive(PartialOrd, AddImpl)] | ||
//~^ ERROR can't compare `PriorityQueue<T>` with `PriorityQueue<T>` | ||
//~| ERROR the trait bound `PriorityQueue<T>: Eq` is not satisfied | ||
//~| ERROR can't compare `T` with `T` | ||
|
||
struct PriorityQueue<T>(BinaryHeap<PriorityQueueEntry<T>>); | ||
|
||
fn main() {} |
48 changes: 48 additions & 0 deletions
48
src/test/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
error[E0277]: can't compare `PriorityQueue<T>` with `PriorityQueue<T>` | ||
--> $DIR/issue-104884-trait-impl-sugg-err.rs:13:10 | ||
| | ||
LL | #[derive(PartialOrd, AddImpl)] | ||
| ^^^^^^^^^^ no implementation for `PriorityQueue<T> == PriorityQueue<T>` | ||
| | ||
= help: the trait `PartialEq` is not implemented for `PriorityQueue<T>` | ||
note: required by a bound in `PartialOrd` | ||
--> $SRC_DIR/core/src/cmp.rs:LL:COL | ||
| | ||
LL | pub trait PartialOrd<Rhs: ?Sized = Self>: PartialEq<Rhs> { | ||
| ^^^^^^^^^^^^^^ required by this bound in `PartialOrd` | ||
= note: this error originates in the derive macro `PartialOrd` (in Nightly builds, run with -Z macro-backtrace for more info) | ||
|
||
error[E0277]: the trait bound `PriorityQueue<T>: Eq` is not satisfied | ||
--> $DIR/issue-104884-trait-impl-sugg-err.rs:13:22 | ||
| | ||
LL | #[derive(PartialOrd, AddImpl)] | ||
| ^^^^^^^ the trait `Eq` is not implemented for `PriorityQueue<T>` | ||
| | ||
note: required by a bound in `Ord` | ||
--> $SRC_DIR/core/src/cmp.rs:LL:COL | ||
| | ||
LL | pub trait Ord: Eq + PartialOrd<Self> { | ||
| ^^ required by this bound in `Ord` | ||
= note: this error originates in the derive macro `AddImpl` (in Nightly builds, run with -Z macro-backtrace for more info) | ||
|
||
error[E0277]: can't compare `T` with `T` | ||
--> $DIR/issue-104884-trait-impl-sugg-err.rs:13:22 | ||
| | ||
LL | #[derive(PartialOrd, AddImpl)] | ||
| ^^^^^^^ no implementation for `T < T` and `T > T` | ||
| | ||
note: required for `PriorityQueue<T>` to implement `PartialOrd` | ||
--> $DIR/issue-104884-trait-impl-sugg-err.rs:13:10 | ||
| | ||
LL | #[derive(PartialOrd, AddImpl)] | ||
| ^^^^^^^^^^ | ||
note: required by a bound in `Ord` | ||
--> $SRC_DIR/core/src/cmp.rs:LL:COL | ||
| | ||
LL | pub trait Ord: Eq + PartialOrd<Self> { | ||
| ^^^^^^^^^^^^^^^^ required by this bound in `Ord` | ||
= note: this error originates in the derive macro `AddImpl` which comes from the expansion of the derive macro `PartialOrd` (in Nightly builds, run with -Z macro-backtrace for more info) | ||
|
||
error: aborting due to 3 previous errors | ||
|
||
For more information about this error, try `rustc --explain E0277`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
// build-pass | ||
// | ||
// Tests that overflows do not occur in certain situations | ||
// related to generic diesel code | ||
|
||
use mini_diesel::*; | ||
|
||
pub trait HandleDelete<K> {} | ||
|
||
pub fn handle_delete<D, R>() | ||
where | ||
R: HasTable, | ||
R::Table: HandleDelete<D> + 'static, | ||
{ | ||
} | ||
|
||
impl<K, T> HandleDelete<K> for T | ||
where | ||
T: Table + HasTable<Table = T> + 'static, | ||
K: 'static, | ||
&'static K: Identifiable<Table = T>, | ||
T::PrimaryKey: EqAll<<&'static K as Identifiable>::Id>, | ||
T::Query: FilterDsl<<T::PrimaryKey as EqAll<<&'static K as Identifiable>::Id>>::Output>, | ||
Filter<T::Query, <T::PrimaryKey as EqAll<<&'static K as Identifiable>::Id>>::Output>: | ||
IntoUpdateTarget<Table = T>, | ||
{ | ||
} | ||
|
||
mod mini_diesel { | ||
pub trait HasTable { | ||
type Table: Table; | ||
} | ||
|
||
pub trait Identifiable: HasTable { | ||
type Id; | ||
} | ||
|
||
pub trait EqAll<Rhs> { | ||
type Output; | ||
} | ||
|
||
pub trait IntoUpdateTarget: HasTable { | ||
type WhereClause; | ||
} | ||
|
||
pub trait Query { | ||
type SqlType; | ||
} | ||
|
||
pub trait AsQuery { | ||
type Query: Query; | ||
} | ||
impl<T: Query> AsQuery for T { | ||
type Query = Self; | ||
} | ||
|
||
pub trait FilterDsl<Predicate> { | ||
type Output; | ||
} | ||
|
||
impl<T, Predicate> FilterDsl<Predicate> for T | ||
where | ||
T: Table, | ||
T::Query: FilterDsl<Predicate>, | ||
{ | ||
type Output = Filter<T::Query, Predicate>; | ||
} | ||
|
||
pub trait QuerySource { | ||
type FromClause; | ||
} | ||
|
||
pub trait Table: QuerySource + AsQuery + Sized { | ||
type PrimaryKey; | ||
} | ||
|
||
pub type Filter<Source, Predicate> = <Source as FilterDsl<Predicate>>::Output; | ||
} | ||
|
||
fn main() {} |