Skip to content

Commit 6374b36

Browse files
committed
Fix compile fail tests
Oh boy we're back to rustc vomitting nonsense when a constraint fails...
1 parent b9a4860 commit 6374b36

13 files changed

Lines changed: 68 additions & 7 deletions

diesel/src/macros/mod.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ macro_rules! table_body {
416416
}
417417

418418
impl<T> AppearsInFromClause<T> for table where
419-
T: Table + JoinTo<table> + AppearsInFromClause<PleaseGenerateInverseJoinImpls<table>, Count=Never>,
419+
T: Table + JoinTo<table>,
420420
{
421421
type Count = Never;
422422
}
@@ -548,9 +548,6 @@ macro_rules! joinable_inner {
548548
primary_key_ty = $primary_key_ty:ty,
549549
primary_key_expr = $primary_key_expr:expr,
550550
) => {
551-
impl $crate::query_source::AppearsInFromClause<$right_table_ty> for $left_table_ty {
552-
type Count = $crate::query_source::Never;
553-
}
554551
impl $crate::JoinTo<$right_table_ty> for $left_table_ty {
555552
type JoinOnClause = $crate::expression::helper_types::Eq<
556553
$crate::expression::nullable::Nullable<$foreign_key>,

diesel_compile_tests/tests/compile-fail/aggregate_expression_requires_column_from_same_table.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,29 @@ fn main() {
2020
let source = users::table.select(sum(posts::id));
2121
//~^ ERROR E0277
2222
//~| ERROR AppearsInFromClause
23+
//~| ERROR E0277
24+
//~| ERROR E0277
25+
//~| ERROR E0277
26+
//~| ERROR E0277
2327
let source = users::table.select(avg(posts::id));
2428
//~^ ERROR E0277
2529
//~| ERROR AppearsInFromClause
30+
//~| ERROR E0277
31+
//~| ERROR E0277
32+
//~| ERROR E0277
33+
//~| ERROR E0277
2634
let source = users::table.select(max(posts::id));
2735
//~^ ERROR E0277
2836
//~| ERROR AppearsInFromClause
37+
//~| ERROR E0277
38+
//~| ERROR E0277
39+
//~| ERROR E0277
40+
//~| ERROR E0277
2941
let source = users::table.select(min(posts::id));
3042
//~^ ERROR E0277
3143
//~| ERROR AppearsInFromClause
44+
//~| ERROR E0277
45+
//~| ERROR E0277
46+
//~| ERROR E0277
47+
//~| ERROR E0277
3248
}

diesel_compile_tests/tests/compile-fail/any_is_only_selectable_if_inner_expr_is_selectable.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,8 @@ fn main() {
2222

2323
stuff.filter(name.eq(any(more_stuff::names)));
2424
//~^ ERROR E0277
25+
//~| ERROR E0277
26+
//~| ERROR E0277
27+
//~| ERROR E0277
28+
//~| ERROR E0271
2529
}

diesel_compile_tests/tests/compile-fail/boxed_queries_require_selectable_expression_for_filter.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,8 @@ table! {
2121
fn main() {
2222
users::table.into_boxed::<Pg>().filter(posts::title.eq("Hello"));
2323
//~^ ERROR AppearsInFromClause
24+
//~| ERROR E0277
25+
//~| ERROR E0277
26+
//~| ERROR E0277
27+
//~| ERROR E0277
2428
}

diesel_compile_tests/tests/compile-fail/boxed_queries_require_selectable_expression_for_order.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,8 @@ table! {
2121
fn main() {
2222
users::table.into_boxed::<Pg>().order(posts::title.desc());
2323
//~^ ERROR AppearsInFromClause
24+
//~| ERROR E0277
25+
//~| ERROR E0277
26+
//~| ERROR E0277
27+
//~| ERROR E0277
2428
}

diesel_compile_tests/tests/compile-fail/cannot_join_to_non_joinable_table.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ enable_multi_table_joins!(users, comments);
3030

3131
fn main() {
3232
let _ = users::table.inner_join(posts::table);
33-
//~^ ERROR users::table: diesel::JoinTo<posts::table>
33+
//~^ ERROR 0275
3434
let _ = users::table.left_outer_join(posts::table);
35-
//~^ ERROR users::table: diesel::JoinTo<posts::table>
35+
// We would get an error here but 0275 halts everything
3636

3737
// Sanity check to make sure the error is when users
3838
// become involved
3939
let join = posts::table.inner_join(comments::table);
4040
let _ = users::table.inner_join(join);
41-
//~^ ERROR users::table: diesel::JoinTo<posts::table>
41+
// We would get an error here but 0275 halts everything
4242
}

diesel_compile_tests/tests/compile-fail/custom_returning_requires_selectable_expression.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,8 @@ fn main() {
3737
let stmt = insert(&new_user).into(users).returning((name, bad::age));
3838
//~^ ERROR SelectableExpression
3939
//~| ERROR AppearsInFromClause
40+
//~| ERROR E0277
41+
//~| ERROR E0277
42+
//~| ERROR E0277
43+
//~| ERROR E0277
4044
}

diesel_compile_tests/tests/compile-fail/filter_cannot_take_comparison_for_columns_from_another_table.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ table! {
2020
fn main() {
2121
let _ = users::table.filter(posts::id.eq(1));
2222
//~^ ERROR AppearsInFromClause
23+
//~| ERROR E0277
24+
//~| ERROR E0277
25+
//~| ERROR E0277
26+
//~| ERROR E0277
2327
let _ = users::table.filter(users::name.eq(posts::title));
2428
//~^ ERROR AppearsInFromClause
29+
//~| ERROR E0277
30+
//~| ERROR E0277
31+
//~| ERROR E0277
32+
//~| ERROR E0277
2533
}

diesel_compile_tests/tests/compile-fail/order_requires_column_from_same_table.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,8 @@ table! {
1818
fn main() {
1919
let source = users::table.order(posts::id);
2020
//~^ ERROR E0277
21+
//~| ERROR E0277
22+
//~| ERROR E0277
23+
//~| ERROR E0277
24+
//~| ERROR E0271
2125
}

diesel_compile_tests/tests/compile-fail/pg_upsert_do_update_requires_valid_update.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ fn main() {
4242
insert(&NewUser("Sean").on_conflict(id, do_update().set(name.eq(posts::title)))).into(users).execute(&connection);
4343
//~^ ERROR E0277
4444
//~| ERROR no method named `execute`
45+
//~| ERROR E0277
46+
//~| ERROR E0277
47+
//~| ERROR E0277
48+
//~| ERROR E0271
4549

4650
// Update column with excluded value that is not selectable
4751
insert(&NewUser("Sean").on_conflict(id, do_update().set(name.eq(excluded(posts::title))))).into(users).execute(&connection);

0 commit comments

Comments
 (0)