Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Building diesel documentation fails #54524

Closed
weiznich opened this issue Sep 24, 2018 · 28 comments · Fixed by #55717
Closed

Building diesel documentation fails #54524

weiznich opened this issue Sep 24, 2018 · 28 comments · Fixed by #55717
Labels
P-high High priority regression-from-stable-to-beta Performance or correctness regression from stable to beta. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.

Comments

@weiznich
Copy link
Contributor

After #52545 is fixed now, I've tried to build diesels documentation and failed with the following error:

 Documenting diesel v1.3.3 (/home/weiznich/Dokumente/rust/diesel/diesel)
error[E0275]: overflow evaluating the requirement `<&_ as insertable::Insertable<_>>::Values`
  |
  = help: consider adding a `#![recursion_limit="128"]` attribute to your crate
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&_, &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&(_, _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&(_, _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&((_, _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&((_, _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&(((_, _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&(((_, _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&(((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&(((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&(((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&(((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&(((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&(((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_
, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _,
_, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _,
 _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&(((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _,
 _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&(((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _
, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _
, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _,
_, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&(((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _,
_, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&(((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _,
 _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _,
 _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _
, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&(((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _
, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&(((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _),
_, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&((((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _),
_, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&((((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _),
 _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&(((((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _),
 _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&(((((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)
, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&((((((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)
, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&((((((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _
), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&(((((((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _
), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `(&(((((((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _,
_), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), &_, &_, &_, &_)`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&((((((((((((((((((((_, _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _,
_), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _), _, _, _, _)`
…

Note that a normal build of diesel succeeds and also all doc tests are passing.

rustc version: rustc 1.30.0-nightly (4591a24 2018-09-22)
rustdoc version: rustdoc 1.30.0-nightly (4591a24 2018-09-22)
diesel version: git master at commit 42d5b831

@killercup killercup added the T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. label Sep 24, 2018
@Diggsey
Copy link
Contributor

Diggsey commented Sep 30, 2018

This breaks the documentation for all crates which depend on diesel too, unless you run with --no-deps 😦

@weiznich
Copy link
Contributor Author

weiznich commented Oct 2, 2018

Is there anything I can do to help to debug/fix this?

@weiznich
Copy link
Contributor Author

weiznich commented Oct 3, 2018

I've played a bit further around with this.
That strange thing is that it seems to depend on feature flags on diesel.
cargo +nightly doc --no-default-features and cargo +nightly doc --no-default-features --features "postgres" works fine.
Any of cargo +nightly doc --no-default-features --features "sqlite", cargo +nightly doc --no-default-features --features "mysql", cargo +nightly doc --no-default-features --features "with-deprecated" and cargo +nightly doc --no-default-features --features "32-column-tables" fails with the error posted above.
So given the structure of the diesel code base the feature with the smallest impact is "32-column-table" because it is used only in one place. This macro is used to implement various traits for tuples of different sizes. The number in the front indicates the number of tuple elements. Toying around with this has shown that documentation builds fine (if only this feature is passed) as long as we generate those impl for tuples up to 16 elements. For bigger tuples building the documentation fails. That seems strange.

@joelgallant
Copy link
Contributor

Is this the same as #53122?

@weiznich
Copy link
Contributor Author

Is this the same as #53122?

Seems to be the same underlying issue, but it should be noted that this happens for me on the 2015 edition. (So it is probably not dependent on the edition.)

Also a similar error occurs if someone tries to build diesel with cargo build --no-default-features --features "sqlite" on windows using the -gnu or the -msvc toolchain. Surprisingly this does not happen on linux. For me it seems to be quite strange that some trait resolution thing seems to be depended on the os used to compiling the crate in absent of any os specific impls.

@weiznich
Copy link
Contributor Author

I've played around a bit more and tried to get cargo doc --no-default-features --features "with-deprecated" working on diesel. Turns out that removing some traits makes it building and documenting. I've no clue why, because those traits are not connected to Insertable that is mentioned in the error message in any way.
I'm totally willing to dig into this event deeper, but I've no idea where to look for what so it would be great if anyone is willing to provide some guidance for this.

@weiznich
Copy link
Contributor Author

I've tried to play with cargo bisect-rustc to find the point where this error was introduced in rustdoc. (This happens also on released diesel (1.3.0) versions, where rustdoc was working at release time.)
This points to somewhere between 07-24 and 07-30 (Unfortunately there are no nightly's in between)

This results in the following commit range 5ed2b5120...a1e6bcb2085

Rustdoc related commits:

Blind guess without any future investigation: It is related to dab7151?

cc @GuillaumeGomez as author of that commit

@GuillaumeGomez
Copy link
Member

It's very likely but it was supposed to be fixed by #54199.

cc @nikomatsakis

@weiznich
Copy link
Contributor Author

@GuillaumeGomez This comment sounds that this also requires some changes in rustdoc. Are they already done?
Is there anything other I can do to help solving this?

(This is basically blocking diesel doing a release 😟 )

@GuillaumeGomez
Copy link
Member

Ah indeed. Opening an issue to keep it in mind.

@GuillaumeGomez
Copy link
Member

Opened #55197.

@GuillaumeGomez
Copy link
Member

Unfortunately, as said in this comment, problem doesn't lie in rustdoc but still in rustc.

Or maybe I missed something else? cc @nikomatsakis

@nikomatsakis
Copy link
Contributor

Sorry, missed these notifications. I will add to my list to investigate.

@pietroalbini
Copy link
Member

This is a stable-to-stable regression: worked in 1.29.2 and broken in 1.30.0.

@pietroalbini pietroalbini added I-nominated T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. regression-from-stable-to-stable Performance or correctness regression from one stable version to another. labels Nov 2, 2018
@pietroalbini
Copy link
Member

cc @rust-lang/compiler can we get this fixed soon?

@oli-obk
Copy link
Contributor

oli-obk commented Nov 6, 2018

I'm looking into it

Backtrace
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::print
             at libstd/sys_common/backtrace.rs:71
             at libstd/sys_common/backtrace.rs:59
   2: std::panicking::default_hook::{{closure}}
             at libstd/panicking.rs:211
   3: std::panicking::default_hook
             at libstd/panicking.rs:227
   4: std::panicking::rust_panic_with_hook
             at libstd/panicking.rs:480
   5: std::panicking::begin_panic
             at /home/oliver/Projects/rust/rust4/src/libstd/panicking.rs:410
   6: rustc_errors::Handler::emit_db
             at librustc_errors/lib.rs:500
             at librustc_errors/lib.rs:607
             at librustc_errors/lib.rs:724
   7: rustc_errors::diagnostic_builder::DiagnosticBuilder::emit
             at librustc_errors/diagnostic_builder.rs:98
   8: rustc::traits::error_reporting::<impl rustc::infer::InferCtxt<'a, 'gcx, 'tcx>>::report_overflow_error
             at librustc/traits/error_reporting.rs:550
   9: rustc::traits::project::opt_normalize_projection_type
             at librustc/traits/project.rs:888
             at librustc/traits/project.rs:642
  10: rustc::traits::project::project_and_unify_type
             at librustc/traits/project.rs:246
  11: rustc::infer::InferCtxt::commit_if_ok
             at librustc/traits/project.rs:210
             at librustc/infer/mod.rs:822
  12: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at librustc/traits/project.rs:205
             at librustc/traits/select.rs:825
  13: rustc::infer::InferCtxt::probe
             at librustc/traits/select.rs:671
             at librustc/traits/select.rs:1091
             at librustc/traits/select.rs:559
             at librustc/infer/mod.rs:854
  14: rustc::traits::select::SelectionContext::evaluate_candidate
             at librustc/traits/select.rs:559
             at librustc/traits/select.rs:1088
  15: rustc::traits::select::SelectionContext::evaluate_stack
             at librustc/traits/select.rs:1044
  16: rustc::dep_graph::graph::DepGraph::with_anon_task
             at librustc/traits/select.rs:915
             at librustc/traits/select.rs:1237
             at librustc/dep_graph/graph.rs:378
  17: rustc::traits::select::SelectionContext::in_task
             at librustc/traits/select.rs:1235
  18: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at librustc/traits/select.rs:915
             at librustc/traits/select.rs:698
  19: rustc::infer::InferCtxt::probe
             at librustc/traits/select.rs:671
             at librustc/traits/select.rs:1091
             at librustc/traits/select.rs:559
             at librustc/infer/mod.rs:854
  20: rustc::traits::select::SelectionContext::evaluate_candidate
             at librustc/traits/select.rs:559
             at librustc/traits/select.rs:1088
  21: <&mut I as core::iter::iterator::Iterator>::next
             at librustc/traits/select.rs:1376
             at /home/oliver/Projects/rust/rust4/src/libcore/ops/function.rs:286
             at /home/oliver/Projects/rust/rust4/src/libcore/option.rs:424
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:1394
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:1394
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:2686
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:2523
             at /home/oliver/Projects/rust/rust4/src/libcore/result.rs:1232
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/iterator.rs:2623
  22: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter
             at /home/oliver/Projects/rust/rust4/src/liballoc/vec.rs:1788
  23: rustc::traits::select::SelectionContext::candidate_from_obligation_no_cache
             at /home/oliver/Projects/rust/rust4/src/liballoc/vec.rs:1700
             at /home/oliver/Projects/rust/rust4/src/libcore/result.rs:1249
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/iterator.rs:1476
             at librustc/traits/select.rs:1374
  24: rustc::dep_graph::graph::DepGraph::with_anon_task
             at librustc/traits/select.rs:1216
             at librustc/traits/select.rs:1237
             at librustc/dep_graph/graph.rs:378
  25: rustc::traits::select::SelectionContext::in_task
             at librustc/traits/select.rs:1235
  26: rustc::traits::select::SelectionContext::candidate_from_obligation
             at librustc/traits/select.rs:1216
  27: rustc::traits::select::SelectionContext::select
             at librustc/traits/select.rs:597
  28: rustc::infer::InferCtxt::commit_if_ok
             at librustc/traits/project.rs:1056
             at librustc/infer/mod.rs:822
  29: rustc::traits::project::opt_normalize_projection_type
             at librustc/traits/project.rs:1055
             at librustc/traits/project.rs:914
             at librustc/traits/project.rs:642
  30: rustc::traits::project::project_and_unify_type
             at librustc/traits/project.rs:246
  31: rustc::infer::InferCtxt::commit_if_ok
             at librustc/traits/project.rs:210
             at librustc/infer/mod.rs:822
  32: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at librustc/traits/project.rs:205
             at librustc/traits/select.rs:825
  33: rustc::infer::InferCtxt::probe
             at librustc/traits/select.rs:671
             at librustc/traits/select.rs:1091
             at librustc/traits/select.rs:559
             at librustc/infer/mod.rs:854
  34: rustc::traits::select::SelectionContext::evaluate_candidate
             at librustc/traits/select.rs:559
             at librustc/traits/select.rs:1088
  35: rustc::traits::select::SelectionContext::evaluate_stack
             at librustc/traits/select.rs:1044
  36: rustc::dep_graph::graph::DepGraph::with_anon_task
             at librustc/traits/select.rs:915
             at librustc/traits/select.rs:1237
             at librustc/dep_graph/graph.rs:378
  37: rustc::traits::select::SelectionContext::in_task
             at librustc/traits/select.rs:1235
  38: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at librustc/traits/select.rs:915
             at librustc/traits/select.rs:698
  39: rustc::infer::InferCtxt::probe
             at librustc/traits/select.rs:671
             at librustc/traits/select.rs:1091
             at librustc/traits/select.rs:559
             at librustc/infer/mod.rs:854
  40: rustc::traits::select::SelectionContext::evaluate_candidate
             at librustc/traits/select.rs:559
             at librustc/traits/select.rs:1088
  41: <&mut I as core::iter::iterator::Iterator>::next
             at librustc/traits/select.rs:1376
             at /home/oliver/Projects/rust/rust4/src/libcore/ops/function.rs:286
             at /home/oliver/Projects/rust/rust4/src/libcore/option.rs:424
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:1394
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:1394
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:2686
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:2523
             at /home/oliver/Projects/rust/rust4/src/libcore/result.rs:1232
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/iterator.rs:2623
  42: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter
             at /home/oliver/Projects/rust/rust4/src/liballoc/vec.rs:1788
  43: rustc::traits::select::SelectionContext::candidate_from_obligation_no_cache
             at /home/oliver/Projects/rust/rust4/src/liballoc/vec.rs:1700
             at /home/oliver/Projects/rust/rust4/src/libcore/result.rs:1249
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/iterator.rs:1476
             at librustc/traits/select.rs:1374
  44: rustc::dep_graph::graph::DepGraph::with_anon_task
             at librustc/traits/select.rs:1216
             at librustc/traits/select.rs:1237
             at librustc/dep_graph/graph.rs:378
  45: rustc::traits::select::SelectionContext::in_task
             at librustc/traits/select.rs:1235
  46: rustc::traits::select::SelectionContext::candidate_from_obligation
             at librustc/traits/select.rs:1216
  47: rustc::traits::select::SelectionContext::select
             at librustc/traits/select.rs:597
  48: rustc::infer::InferCtxt::commit_if_ok
             at librustc/traits/project.rs:1056
             at librustc/infer/mod.rs:822
  49: rustc::traits::project::opt_normalize_projection_type
             at librustc/traits/project.rs:1055
             at librustc/traits/project.rs:914
             at librustc/traits/project.rs:642
  50: rustc::traits::project::project_and_unify_type
             at librustc/traits/project.rs:246
  51: rustc::infer::InferCtxt::commit_if_ok
             at librustc/traits/project.rs:210
             at librustc/infer/mod.rs:822
  52: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at librustc/traits/project.rs:205
             at librustc/traits/select.rs:825
  53: rustc::infer::InferCtxt::probe
             at librustc/traits/select.rs:671
             at librustc/traits/select.rs:1091
             at librustc/traits/select.rs:559
             at librustc/infer/mod.rs:854
  54: rustc::traits::select::SelectionContext::evaluate_candidate
             at librustc/traits/select.rs:559
             at librustc/traits/select.rs:1088
  55: rustc::traits::select::SelectionContext::evaluate_stack
             at librustc/traits/select.rs:1044
  56: rustc::dep_graph::graph::DepGraph::with_anon_task
             at librustc/traits/select.rs:915
             at librustc/traits/select.rs:1237
             at librustc/dep_graph/graph.rs:378
  57: rustc::traits::select::SelectionContext::in_task
             at librustc/traits/select.rs:1235
  58: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at librustc/traits/select.rs:915
             at librustc/traits/select.rs:698
  59: rustc::infer::InferCtxt::probe
             at librustc/traits/select.rs:671
             at librustc/traits/select.rs:1091
             at librustc/traits/select.rs:559
             at librustc/infer/mod.rs:854
  60: rustc::traits::select::SelectionContext::evaluate_candidate
             at librustc/traits/select.rs:559
             at librustc/traits/select.rs:1088
  61: <&mut I as core::iter::iterator::Iterator>::next
             at librustc/traits/select.rs:1376
             at /home/oliver/Projects/rust/rust4/src/libcore/ops/function.rs:286
             at /home/oliver/Projects/rust/rust4/src/libcore/option.rs:424
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:1394
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:1394
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:2686
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:2523
             at /home/oliver/Projects/rust/rust4/src/libcore/result.rs:1232
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/iterator.rs:2623
  62: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter
             at /home/oliver/Projects/rust/rust4/src/liballoc/vec.rs:1788
  63: rustc::traits::select::SelectionContext::candidate_from_obligation_no_cache
             at /home/oliver/Projects/rust/rust4/src/liballoc/vec.rs:1700
             at /home/oliver/Projects/rust/rust4/src/libcore/result.rs:1249
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/iterator.rs:1476
             at librustc/traits/select.rs:1374
  64: rustc::dep_graph::graph::DepGraph::with_anon_task
             at librustc/traits/select.rs:1216
             at librustc/traits/select.rs:1237
             at librustc/dep_graph/graph.rs:378
  65: rustc::traits::select::SelectionContext::in_task
             at librustc/traits/select.rs:1235
  66: rustc::traits::select::SelectionContext::candidate_from_obligation
             at librustc/traits/select.rs:1216
  67: rustc::traits::select::SelectionContext::select
             at librustc/traits/select.rs:597
  68: rustc::infer::InferCtxt::commit_if_ok
             at librustc/traits/project.rs:1056
             at librustc/infer/mod.rs:822
  69: rustc::traits::project::opt_normalize_projection_type
             at librustc/traits/project.rs:1055
             at librustc/traits/project.rs:914
             at librustc/traits/project.rs:642
  70: rustc::traits::project::project_and_unify_type
             at librustc/traits/project.rs:246
  71: rustc::infer::InferCtxt::commit_if_ok
             at librustc/traits/project.rs:210
             at librustc/infer/mod.rs:822
  72: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at librustc/traits/project.rs:205
             at librustc/traits/select.rs:825
  73: rustc::infer::InferCtxt::probe
             at librustc/traits/select.rs:671
             at librustc/traits/select.rs:1091
             at librustc/traits/select.rs:559
             at librustc/infer/mod.rs:854
  74: rustc::traits::select::SelectionContext::evaluate_candidate
             at librustc/traits/select.rs:559
             at librustc/traits/select.rs:1088
  75: rustc::traits::select::SelectionContext::evaluate_stack
             at librustc/traits/select.rs:1044
  76: rustc::dep_graph::graph::DepGraph::with_anon_task
             at librustc/traits/select.rs:915
             at librustc/traits/select.rs:1237
             at librustc/dep_graph/graph.rs:378
  77: rustc::traits::select::SelectionContext::in_task
             at librustc/traits/select.rs:1235
  78: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at librustc/traits/select.rs:915
             at librustc/traits/select.rs:698
  79: rustc::infer::InferCtxt::probe
             at librustc/traits/select.rs:671
             at librustc/traits/select.rs:1091
             at librustc/traits/select.rs:559
             at librustc/infer/mod.rs:854
  80: rustc::traits::select::SelectionContext::evaluate_candidate
             at librustc/traits/select.rs:559
             at librustc/traits/select.rs:1088
  81: <&mut I as core::iter::iterator::Iterator>::next
             at librustc/traits/select.rs:1376
             at /home/oliver/Projects/rust/rust4/src/libcore/ops/function.rs:286
             at /home/oliver/Projects/rust/rust4/src/libcore/option.rs:424
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:1394
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:1394
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:2686
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/mod.rs:2523
             at /home/oliver/Projects/rust/rust4/src/libcore/result.rs:1232
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/iterator.rs:2623
  82: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter
             at /home/oliver/Projects/rust/rust4/src/liballoc/vec.rs:1788
  83: rustc::traits::select::SelectionContext::candidate_from_obligation_no_cache
             at /home/oliver/Projects/rust/rust4/src/liballoc/vec.rs:1700
             at /home/oliver/Projects/rust/rust4/src/libcore/result.rs:1249
             at /home/oliver/Projects/rust/rust4/src/libcore/iter/iterator.rs:1476
             at librustc/traits/select.rs:1374
  84: rustc::dep_graph::graph::DepGraph::with_anon_task
             at librustc/traits/select.rs:1216
             at librustc/traits/select.rs:1237
             at librustc/dep_graph/graph.rs:378
  85: rustc::traits::select::SelectionContext::in_task
             at librustc/traits/select.rs:1235
  86: rustc::traits::select::SelectionContext::candidate_from_obligation
             at librustc/traits/select.rs:1216
  87: rustc::traits::select::SelectionContext::select
             at librustc/traits/select.rs:597
  88: rustc::infer::InferCtxt::commit_if_ok
             at librustc/traits/project.rs:1056
             at librustc/infer/mod.rs:822
  89: rustc::traits::project::opt_normalize_projection_type
             at librustc/traits/project.rs:1055
             at librustc/traits/project.rs:914
             at librustc/traits/project.rs:642
  90: rustc::traits::project::project_and_unify_type
             at librustc/traits/project.rs:246
  91: rustc::infer::InferCtxt::commit_if_ok
             at librustc/traits/project.rs:210
             at librustc/infer/mod.rs:822
  92: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at librustc/traits/project.rs:205
             at librustc/traits/select.rs:825
  93: rustc::infer::InferCtxt::probe
             at librustc/traits/select.rs:671
             at librustc/traits/select.rs:1091
             at librustc/traits/select.rs:559
             at librustc/infer/mod.rs:854
  94: rustc::traits::select::SelectionContext::evaluate_candidate
             at librustc/traits/select.rs:559
             at librustc/traits/select.rs:1088
  95: rustc::traits::select::SelectionContext::evaluate_stack
             at librustc/traits/select.rs:1044
  96: rustc::dep_graph::graph::DepGraph::with_anon_task
             at librustc/traits/select.rs:915
             at librustc/traits/select.rs:1237
             at librustc/dep_graph/graph.rs:378
  97: rustc::traits::select::SelectionContext::in_task
             at librustc/traits/select.rs:1235
  98: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at librustc/traits/select.rs:915
             at librustc/traits/select.rs:698
  99: rustc::infer::InferCtxt::probe
             at librustc/traits/select.rs:671
             at librustc/traits/select.rs:1091
             at librustc/traits/select.rs:559
             at librustc/infer/mod.rs:854

@oli-obk
Copy link
Contributor

oli-obk commented Nov 6, 2018

I managed to get that one failure ironed out, now rustdoc is failing with

error: `[grouped_by]` cannot be resolved, ignoring it...                                                                                                        
   --> diesel/src/associations/mod.rs:204:6                                                                                                                     
    |                                                                                                                                                           
204 | //! [`grouped_by`] is called on a `Vec<Child>` with a `&[Parent]`.                                                                                        
    |      ^^^^^^^^^^^^ cannot be resolved, ignoring                                                                                                            
    |                                                                                                                                                           
note: lint level defined here                                                                                                                                   
   --> diesel/src/lib.rs:131:9                                                                                                                                  
    |                                                                                                                                                           
131 | #![deny(warnings, missing_debug_implementations, missing_copy_implementations, missing_docs)]                                                             
    |         ^^^^^^^^                                                                                                                                          
    = note: #[deny(intra_doc_link_resolution_failure)] implied by #[deny(warnings)]                                                                             
    = help: to escape `[` and `]` characters, just add '\' before them like `\[` or `\]`

which I think is completely unrelated and should be fixed by diesel

@weiznich
Copy link
Contributor Author

weiznich commented Nov 6, 2018

I managed to get that one failure ironed out, now rustdoc is failing with …

Yes that's totally a issue with diesels documentation. I should have a patch for this somewhere in my local diesel clone, I will push that patch as soon as I've found it 😉

bors added a commit that referenced this issue Nov 7, 2018
Bubble up an overflow error so that rustdoc can ignore it

fixes #54524

Idk how to write a test for this, other than trying to minimize the entire diesel crate. If desirable I will do that.

Note that there are many other such overflow errors hiding out there. Should we try to proactively eliminate them or do we just whack-a-mole them?

cc @GuillaumeGomez

r? @nikomatsakis
@pnkfelix
Copy link
Member

pnkfelix commented Nov 8, 2018

visited for T-compiler triage. marking P-high. It has a PR and @oli-obk and @pnkfelix have been repeatedly trying to get it to land successfully...

@pnkfelix pnkfelix added P-high High priority and removed I-nominated labels Nov 8, 2018
bors added a commit that referenced this issue Nov 8, 2018
Bubble up an overflow error so that rustdoc can ignore it

fixes #54524

Idk how to write a test for this, other than trying to minimize the entire diesel crate. If desirable I will do that.

Note that there are many other such overflow errors hiding out there. Should we try to proactively eliminate them or do we just whack-a-mole them?

cc @GuillaumeGomez

r? @nikomatsakis
@pietroalbini
Copy link
Member

This is going to be fixed in 1.30.1, which should be released in minutes.

@weiznich
Copy link
Contributor Author

weiznich commented Nov 8, 2018

I can confirm that this is fixed with the 1.30.1 release 🎉

@pnkfelix
Copy link
Member

pnkfelix commented Nov 8, 2018

So the backport landed before the original PR’s code in master ...???

@oli-obk
Copy link
Contributor

oli-obk commented Nov 8, 2018

I think I figured it out what happened. This indeed appears fixed on stable, but still exists on master to best of my knowledge

@oli-obk oli-obk reopened this Nov 8, 2018
@oli-obk
Copy link
Contributor

oli-obk commented Nov 8, 2018

The fix was not landed in master, but this particular issue just doesn't exist on stable yet.

@oli-obk oli-obk added regression-from-stable-to-beta Performance or correctness regression from stable to beta. and removed regression-from-stable-to-stable Performance or correctness regression from one stable version to another. labels Nov 8, 2018
@Mark-Simulacrum
Copy link
Member

I've beta nominated and accepted #55717 as well per the marking here (stable/beta regression).

bors added a commit that referenced this issue Nov 10, 2018
Bubble up an overflow error so that rustdoc can ignore it

fixes #54524

Idk how to write a test for this, other than trying to minimize the entire diesel crate. If desirable I will do that.

Note that there are many other such overflow errors hiding out there. Should we try to proactively eliminate them or do we just whack-a-mole them?

cc @GuillaumeGomez

r? @nikomatsakis
@oli-obk
Copy link
Contributor

oli-obk commented Nov 10, 2018

Still needs a backport

@oli-obk oli-obk reopened this Nov 10, 2018
@goffrie
Copy link
Contributor

goffrie commented Nov 14, 2018

#55849 landed, so this is done, right?

@pietroalbini
Copy link
Member

Yep.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P-high High priority regression-from-stable-to-beta Performance or correctness regression from stable to beta. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging a pull request may close this issue.