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

rustdoc: generate implementors for all auto traits #60293

Merged
merged 1 commit into from
Jun 21, 2019

Conversation

nagisa
Copy link
Member

@nagisa nagisa commented Apr 25, 2019

Previously we would only generate a list of synthetic implementations
for two well known traits – Send and Sync. With this patch all the auto
traits known to rustc are considered. This includes such traits like
Unpin and user’s own traits.

Sadly the implementation still iterates through the list of crate items
and checks them against the traits, which for non-std crates containing
their own auto-traits will still not include types defined in std/core.

It is an improvement nontheless.

@rust-highfive
Copy link
Collaborator

r? @QuietMisdreavus

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Apr 25, 2019
@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:04bf2bd3:start=1556235558705585229,finish=1556235559498044560,duration=792459331
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
$ export GCP_CACHE_BUCKET=rust-lang-ci-cache
$ export AWS_ACCESS_KEY_ID=AKIA46X5W6CZEJZ6XT55
---
travis_time:start:test_assembly
Check compiletest suite=assembly mode=assembly (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
[01:23:49] 
[01:23:49] running 9 tests
[01:23:49] iiiiiiiii
[01:23:49] 
[01:23:49]  finished in 0.150
[01:23:49] travis_fold:end:test_assembly

---
travis_time:start:test_debuginfo
Check compiletest suite=debuginfo mode=debuginfo-both (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
[01:24:05] 
[01:24:05] running 121 tests
[01:24:30] .iiiii...i.....i..i...i..i.i.i..i.ii...i.....i..i....i..........iiii..........i...ii...i.......ii.i. 100/121
[01:24:34] i.i......iii.i.....ii
[01:24:34] 
[01:24:34]  finished in 29.331
[01:24:34] travis_fold:end:test_debuginfo

---
travis_time:start:test_rustdoc
Check compiletest suite=rustdoc mode=rustdoc (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
[01:28:34] 
[01:28:34] running 304 tests
[01:29:49] ............................i...............F....................................................... 100/304
[01:31:59] .................................................................................................... 300/304
[01:32:01] ....
[01:32:01] failures:
[01:32:01] 
[01:32:01] 
[01:32:01] ---- [rustdoc] rustdoc/empty-section.rs stdout ----
[01:32:01] 
[01:32:01] error: htmldocck failed!
[01:32:01] status: exit code: 1
[01:32:01] command: "/usr/bin/python2.7" "/checkout/src/etc/htmldocck.py" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc/empty-section" "/checkout/src/test/rustdoc/empty-section.rs"
[01:32:01] ------------------------------------------
[01:32:01] 
[01:32:01] ------------------------------------------
[01:32:01] stderr:
[01:32:01] stderr:
[01:32:01] ------------------------------------------
[01:32:01] 8: @!has check failed
[01:32:01]  `PATTERN` did not match
[01:32:01]  // @!has - 'Auto Trait Implementations'
[01:32:01] Encountered 1 errors
[01:32:01] 
[01:32:01] ------------------------------------------
[01:32:01] 
---
[01:32:01] thread 'main' panicked at 'Some tests failed', src/tools/compiletest/src/main.rs:517:22
[01:32:01] note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
[01:32:01] 
[01:32:01] 
[01:32:01] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--rustdoc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustdoc" "--src-base" "/checkout/src/test/rustdoc" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "rustdoc" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-6.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -O -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "6.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
[01:32:01] 
[01:32:01] 
[01:32:01] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
[01:32:01] Build completed unsuccessfully in 0:20:08
[01:32:01] Build completed unsuccessfully in 0:20:08
[01:32:01] make: *** [check] Error 1
[01:32:01] Makefile:48: recipe for target 'check' failed
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:03b1611e
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Fri Apr 26 01:11:32 UTC 2019
---
travis_time:end:00209284:start=1556241094209385924,finish=1556241094214291889,duration=4905965
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:2adb8434
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:02104671
travis_time:start:02104671
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:211225e0
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@bors
Copy link
Contributor

bors commented Apr 28, 2019

☔ The latest upstream changes (presumably #60317) made this pull request unmergeable. Please resolve the merge conflicts.

@nagisa
Copy link
Member Author

nagisa commented May 2, 2019

FWIW this is what the new output looks like: I haven’t been successful in making the tested section actually empty. It is possible to make Freeze not implemented by adding a UnsafeCell as a field into the struct, but it still ends up showing up as impl !Freeze for Foo in the Auto Implementations section.
Screenshot_2019-05-02 foo Foo - Rust

@nagisa nagisa force-pushed the rustdoc-all-the-auto-traits branch from 60a1ef8 to a5f06e6 Compare May 2, 2019 11:34
@nagisa
Copy link
Member Author

nagisa commented May 2, 2019

It seems like @eddyb’s changes which landed recently resolved the issue with Freeze appearing in the impl list, which makes this PR complete now.

@QuietMisdreavus
Copy link
Member

Looks good! Can you add a test that includes a crate-local auto trait to make sure it shows up properly on other types within that crate?

@nagisa nagisa force-pushed the rustdoc-all-the-auto-traits branch from a5f06e6 to edc5758 Compare May 3, 2019 21:01
@nagisa
Copy link
Member Author

nagisa commented May 3, 2019

@QuietMisdreavus updated. Please confirm the added test makes sense.

@bors
Copy link
Contributor

bors commented May 4, 2019

☔ The latest upstream changes (presumably #60462) made this pull request unmergeable. Please resolve the merge conflicts.

@nagisa nagisa force-pushed the rustdoc-all-the-auto-traits branch from edc5758 to 67aa915 Compare May 4, 2019 22:00
@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:22b04b48:start=1557007263198269933,finish=1557007264278482835,duration=1080212902
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
$ export GCP_CACHE_BUCKET=rust-lang-ci-cache
$ export AWS_ACCESS_KEY_ID=AKIA46X5W6CZEJZ6XT55
---
[00:54:24] 
[00:54:24] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:24]    --> src/librustdoc/clean/mod.rs:261:20
[00:54:24]     |
[00:54:24] 261 |             if let Res::Def(DefKind::Mod, def_id) = res {
[00:54:24] 
[00:54:24] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:24]    --> src/librustdoc/clean/mod.rs:261:29
[00:54:24]     |
[00:54:24]     |
[00:54:24] 261 |             if let Res::Def(DefKind::Mod, def_id) = res {
[00:54:24]     |                             ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:24] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:24]    --> src/librustdoc/clean/mod.rs:284:38
[00:54:24]     |
[00:54:24] 284 |                         as_primitive(Res::Def(
[00:54:24] 284 |                         as_primitive(Res::Def(
[00:54:24]     |                                      ^^^ use of undeclared type or module `Res`
[00:54:24] 
[00:54:24] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:24]    --> src/librustdoc/clean/mod.rs:285:29
[00:54:24]     |
[00:54:24] 285 |                             DefKind::Mod,
[00:54:24]     |                             ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:24] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:24]    --> src/librustdoc/clean/mod.rs:305:20
[00:54:24]     |
[00:54:24]     |
[00:54:24] 305 |             if let Res::Def(DefKind::Mod, def_id) = res {
[00:54:24] 
[00:54:24] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:24]    --> src/librustdoc/clean/mod.rs:305:29
[00:54:24]     |
[00:54:24]     |
[00:54:24] 305 |             if let Res::Def(DefKind::Mod, def_id) = res {
[00:54:24]     |                             ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:24] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:24]    --> src/librustdoc/clean/mod.rs:329:36
[00:54:24]     |
[00:54:24]     |
[00:54:24] 329 |                         as_keyword(Res::Def(
[00:54:24] 
[00:54:24] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:24]    --> src/librustdoc/clean/mod.rs:330:29
[00:54:24]     |
[00:54:24]     |
[00:54:24] 330 |                             DefKind::Mod,
[00:54:24]     |                             ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:24] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:24]     --> src/librustdoc/clean/mod.rs:1166:14
[00:54:24]      |
[00:54:24] 1166 |         res: Res::Err,
[00:54:24] 1166 |         res: Res::Err,
[00:54:24]      |              ^^^ use of undeclared type or module `Res`
[00:54:24] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:2790:24
[00:54:25]      |
[00:54:25] 2790 |                 if let Res::Def(DefKind::TyParam, did) = path.res {
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:2790:33
[00:54:25]      |
[00:54:25]      |
[00:54:25] 2790 |                 if let Res::Def(DefKind::TyParam, did) = path.res {
[00:54:25]      |                                 ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:2800:24
[00:54:25]      |
[00:54:25]      |
[00:54:25] 2800 |                 if let Res::Def(DefKind::TyAlias, def_id) = path.res {
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:2800:33
[00:54:25]      |
[00:54:25]      |
[00:54:25] 2800 |                 if let Res::Def(DefKind::TyAlias, def_id) = path.res {
[00:54:25]      |                                 ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:2899:26
[00:54:25]      |
[00:54:25] 2899 |                     res: Res::Def(
---
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:2915:27
[00:54:25]      |
[00:54:25] 2915 |                     res = Res::Def(DefKind::Trait, proj.trait_ref(cx.tcx).def_id);
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:2915:36
[00:54:25]      |
[00:54:25]      |
[00:54:25] 2915 |                     res = Res::Def(DefKind::Trait, proj.trait_ref(cx.tcx).def_id);
[00:54:25]      |                                    ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:3907:23
[00:54:25]      |
[00:54:25] 3907 |             let res = Res::Def(
[00:54:25] 3907 |             let res = Res::Def(
[00:54:25]      |                       ^^^ use of undeclared type or module `Res`
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:3908:17
[00:54:25]      |
[00:54:25] 3908 |                 DefKind::Mod,
[00:54:25]      |                 ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:3963:21
[00:54:25]      |
[00:54:25]      |
[00:54:25] 3963 |                     Res::Def(DefKind::Mod, did) => {
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:3963:30
[00:54:25]      |
[00:54:25]      |
[00:54:25] 3963 |                     Res::Def(DefKind::Mod, did) => {
[00:54:25]      |                              ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4160:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4160 |         Res::PrimTy(p) => match p {
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4168:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4168 |         Res::SelfTy(..) if path.segments.len() == 1 => {
[00:54:25]      |         ^^^ use of undeclared type or module `Res`
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4171:9
[00:54:25]      |
[00:54:25] 4171 |         Res::Def(DefKind::TyParam, _) if path.segments.len() == 1 => {
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4171:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4171 |         Res::Def(DefKind::TyParam, _) if path.segments.len() == 1 => {
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4174:9
[00:54:25]      |
[00:54:25] 4174 |         Res::SelfTy(..)
[00:54:25] 4174 |         Res::SelfTy(..)
[00:54:25]      |         ^^^ use of undeclared type or module `Res`
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4175:11
[00:54:25]      |
[00:54:25] 4175 |         | Res::Def(DefKind::TyParam, _)
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4175:20
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4175 |         | Res::Def(DefKind::TyParam, _)
[00:54:25]      |                    ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4176:11
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4176 |         | Res::Def(DefKind::AssociatedTy, _) => true,
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4176:20
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4176 |         | Res::Def(DefKind::AssociatedTy, _) => true,
[00:54:25]      |                    ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4187:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4187 |         Res::Def(DefKind::Fn, i) => (i, TypeKind::Function),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4187:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4187 |         Res::Def(DefKind::Fn, i) => (i, TypeKind::Function),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4188:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4188 |         Res::Def(DefKind::TyAlias, i) => (i, TypeKind::Typedef),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4188:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4188 |         Res::Def(DefKind::TyAlias, i) => (i, TypeKind::Typedef),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4189:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4189 |         Res::Def(DefKind::Enum, i) => (i, TypeKind::Enum),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4189:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4189 |         Res::Def(DefKind::Enum, i) => (i, TypeKind::Enum),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4190:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4190 |         Res::Def(DefKind::Trait, i) => (i, TypeKind::Trait),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4190:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4190 |         Res::Def(DefKind::Trait, i) => (i, TypeKind::Trait),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4191:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4191 |         Res::Def(DefKind::Struct, i) => (i, TypeKind::Struct),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4191:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4191 |         Res::Def(DefKind::Struct, i) => (i, TypeKind::Struct),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4192:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4192 |         Res::Def(DefKind::Union, i) => (i, TypeKind::Union),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4192:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4192 |         Res::Def(DefKind::Union, i) => (i, TypeKind::Union),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4193:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4193 |         Res::Def(DefKind::Mod, i) => (i, TypeKind::Module),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4193:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4193 |         Res::Def(DefKind::Mod, i) => (i, TypeKind::Module),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4194:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4194 |         Res::Def(DefKind::ForeignTy, i) => (i, TypeKind::Foreign),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4194:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4194 |         Res::Def(DefKind::ForeignTy, i) => (i, TypeKind::Foreign),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4195:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4195 |         Res::Def(DefKind::Const, i) => (i, TypeKind::Const),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4195:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4195 |         Res::Def(DefKind::Const, i) => (i, TypeKind::Const),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4196:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4196 |         Res::Def(DefKind::Static, i) => (i, TypeKind::Static),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4196:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4196 |         Res::Def(DefKind::Static, i) => (i, TypeKind::Static),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4197:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4197 |         Res::Def(DefKind::Variant, i) => (cx.tcx.parent(i).expect("cannot get parent def id"),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4197:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4197 |         Res::Def(DefKind::Variant, i) => (cx.tcx.parent(i).expect("cannot get parent def id"),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4199:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4199 |         Res::Def(DefKind::Macro(mac_kind), i) => match mac_kind {
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4199:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4199 |         Res::Def(DefKind::Macro(mac_kind), i) => match mac_kind {
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4205:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4205 |         Res::Def(DefKind::TraitAlias, i) => (i, TypeKind::TraitAlias),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `DefKind`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4205:18
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4205 |         Res::Def(DefKind::TraitAlias, i) => (i, TypeKind::TraitAlias),
[00:54:25]      |                  ^^^^^^^ use of undeclared type or module `DefKind`
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4206:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4206 |         Res::SelfTy(Some(def_id), _) => (def_id, TypeKind::Trait),
[00:54:25] 
[00:54:25] error[E0433]: failed to resolve: use of undeclared type or module `Res`
[00:54:25]     --> src/librustdoc/clean/mod.rs:4207:9
[00:54:25]      |
[00:54:25]      |
[00:54:25] 4207 |         Res::SelfTy(_, Some(impl_def_id)) => return impl_def_id,
[00:54:25] 
[00:54:25] error[E0412]: cannot find type `Res` in this scope
[00:54:25]    --> src/librustdoc/clean/mod.rs:260:34
[00:54:25]     |
[00:54:25]     |
[00:54:25] 260 |         let as_primitive = |res: Res| {
[00:54:25] help: possible candidate is found in another module, you can import it into scope
[00:54:25]     |
[00:54:25] 12  | use rustc::hir::def::Res;
[00:54:25]     |
[00:54:25]     |
[00:54:25] 
[00:54:25] error[E0412]: cannot find type `Res` in this scope
[00:54:25]    --> src/librustdoc/clean/mod.rs:304:32
[00:54:25]     |
[00:54:25] 304 |         let as_keyword = |res: Res| {
[00:54:25] help: possible candidate is found in another module, you can import it into scope
[00:54:25]     |
[00:54:25] 12  | use rustc::hir::def::Res;
[00:54:25]     |
---
[00:54:25] 
[00:54:25] error[E0412]: cannot find type `Res` in this scope
[00:54:25]     --> src/librustdoc/clean/mod.rs:4183:47
[00:54:25]      |
[00:54:25] 4183 | pub fn register_res(cx: &DocContext<'_>, res: Res) -> DefId {
[00:54:25] help: possible candidate is found in another module, you can import it into scope
[00:54:25]      |
[00:54:25] 12   | use rustc::hir::def::Res;
[00:54:25]      |
---
22636 ./src/llvm-project/llgo/third_party/gofrontend/libgo
21336 ./src/stdsimd/crates/stdsimd-veriafter_failure.4
travis_fold:start:after_failure.5
travis_time:start:0ec218d0
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:1d11f76b
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@nagisa nagisa force-pushed the rustdoc-all-the-auto-traits branch from 67aa915 to 4a5e4da Compare May 5, 2019 19:23
@nagisa
Copy link
Member Author

nagisa commented May 10, 2019

ping @QuietMisdreavus ^

@bors
Copy link
Contributor

bors commented May 13, 2019

☔ The latest upstream changes (presumably #60630) made this pull request unmergeable. Please resolve the merge conflicts.

@nagisa nagisa closed this May 19, 2019
@nagisa nagisa force-pushed the rustdoc-all-the-auto-traits branch from 4a5e4da to 963184b Compare May 19, 2019 01:07
@nagisa
Copy link
Member Author

nagisa commented May 19, 2019

Rebased. Also GitHub is being weird and auto-closing stuff???

@nagisa nagisa reopened this May 19, 2019
@bors
Copy link
Contributor

bors commented May 24, 2019

☔ The latest upstream changes (presumably #61105) made this pull request unmergeable. Please resolve the merge conflicts.

@GuillaumeGomez
Copy link
Member

Please ping me once you have rebased so I can review. :)

@nagisa nagisa force-pushed the rustdoc-all-the-auto-traits branch from 5c07ac9 to 40c9a0a Compare June 1, 2019 17:12
@nagisa
Copy link
Member Author

nagisa commented Jun 1, 2019

Rebased, @GuillaumeGomez.

@GuillaumeGomez
Copy link
Member

GuillaumeGomez commented Jun 1, 2019

Looks all good to me. Considering that it's using rustc internals, I guess someone from the @rust-lang/compiler team should take a look as well? Otherwise r=me.

@eddyb
Copy link
Member

eddyb commented Jun 2, 2019

@bors r+

@bors
Copy link
Contributor

bors commented Jun 2, 2019

📌 Commit 40c9a0a0ac470f0fef5fd749bd5279aa54034a2d has been approved by eddyb

@nagisa
Copy link
Member Author

nagisa commented Jun 8, 2019

Wow, this genuinely looks like a case of a type so composed that a recursion depth of 64 is insufficient. It is feasible to go ahead and "just" increase the limit, however it is not impossible for this to rear its end in the wild either… in which case it would be a regression.

Is it possible to do a crater run for a rustdoc? @rust-lang/infra

@bors
Copy link
Contributor

bors commented Jun 8, 2019

⌛ Trying commit 40c9a0a0ac470f0fef5fd749bd5279aa54034a2d with merge 5ee7357c1e9b359a616859f22af499161b68bae2...

@bors
Copy link
Contributor

bors commented Jun 8, 2019

💔 Test failed - checks-travis

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 8, 2019
@rust-highfive
Copy link
Collaborator

The job dist-x86_64-linux of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_fold:end:services

travis_fold:start:git.checkout
travis_time:start:0240d400
$ git clone --depth=2 --branch=try https://github.com/rust-lang/rust.git rust-lang/rust
---
[01:21:50]     Checking tempfile v3.0.5
[01:21:50]  Documenting rustc_macros v0.1.0 (/checkout/src/librustc_macros)
[01:21:50]     Checking parking_lot v0.7.1
[01:21:51]     Checking rustc_data_structures v0.0.0 (/checkout/src/librustc_data_structures)
[01:21:51] error[E0275]: overflow evaluating the requirement `(syn::generics::TypeParamBound, syn::token::Add): std::marker::Unpin`
[01:21:51]   |
[01:21:51]   = help: consider adding a `#![recursion_limit="128"]` attribute to your crate
[01:21:51]   = note: required because it appears within the type `*const (syn::generics::TypeParamBound, syn::token::Add)`
[01:21:51]   = note: required because it appears within the type `std::ptr::Unique<(syn::generics::TypeParamBound, syn::token::Add)>`
[01:21:51]   = note: required because it appears within the type `alloc::raw_vec::RawVec<(syn::generics::TypeParamBound, syn::token::Add)>`
[01:21:51]   = note: required because it appears within the type `std::vec::Vec<(syn::generics::TypeParamBound, syn::token::Add)>`
[01:21:51]   = note: required because it appears within the type `syn::punctuated::Punctuated<syn::generics::TypeParamBound, syn::token::Add>`
[01:21:51]   = note: required because it appears within the type `syn::path::Constraint`
[01:21:51]   = note: required because it appears within the type `syn::path::GenericArgument`
[01:21:51]   = note: required because it appears within the type `(syn::path::GenericArgument, syn::token::Comma)`
[01:21:51]   = note: required because it appears within the type `*const (syn::path::GenericArgument, syn::token::Comma)`
[01:21:51]   = note: required because it appears within the type `std::ptr::Unique<(syn::path::GenericArgument, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `alloc::raw_vec::RawVec<(syn::path::GenericArgument, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `std::vec::Vec<(syn::path::GenericArgument, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `syn::punctuated::Punctuated<syn::path::GenericArgument, syn::token::Comma>`
[01:21:51]   = note: required because it appears within the type `syn::path::AngleBracketedGenericArguments`
[01:21:51]   = note: required because it appears within the type `syn::path::PathArguments`
[01:21:51]   = note: required because it appears within the type `syn::path::PathSegment`
[01:21:51]   = note: required because it appears within the type `(syn::path::PathSegment, syn::token::Colon2)`
[01:21:51]   = note: required because it appears within the type `*const (syn::path::PathSegment, syn::token::Colon2)`
[01:21:51]   = note: required because it appears within the type `std::ptr::Unique<(syn::path::PathSegment, syn::token::Colon2)>`
[01:21:51]   = note: required because it appears within the type `alloc::raw_vec::RawVec<(syn::path::PathSegment, syn::token::Colon2)>`
[01:21:51]   = note: required because it appears within the type `std::vec::Vec<(syn::path::PathSegment, syn::token::Colon2)>`
[01:21:51]   = note: required because it appears within the type `syn::punctuated::Punctuated<syn::path::PathSegment, syn::token::Colon2>`
[01:21:51]   = note: required because it appears within the type `syn::path::Path`
[01:21:51]   = note: required because it appears within the type `syn::attr::Attribute`
[01:21:51]   = note: required because it appears within the type `*const syn::attr::Attribute`
[01:21:51]   = note: required because it appears within the type `std::ptr::Unique<syn::attr::Attribute>`
[01:21:51]   = note: required because it appears within the type `alloc::raw_vec::RawVec<syn::attr::Attribute>`
[01:21:51]   = note: required because it appears within the type `std::vec::Vec<syn::attr::Attribute>`
[01:21:51]   = note: required because it appears within the type `syn::generics::LifetimeDef`
[01:21:51]   = note: required because it appears within the type `(syn::generics::LifetimeDef, syn::token::Comma)`
[01:21:51]   = note: required because it appears within the type `*const (syn::generics::LifetimeDef, syn::token::Comma)`
[01:21:51]   = note: required because it appears within the type `std::ptr::Unique<(syn::generics::LifetimeDef, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `alloc::raw_vec::RawVec<(syn::generics::LifetimeDef, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `std::vec::Vec<(syn::generics::LifetimeDef, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `syn::punctuated::Punctuated<syn::generics::LifetimeDef, syn::token::Comma>`
[01:21:51]   = note: required because it appears within the type `syn::generics::BoundLifetimes`
[01:21:51]   = note: required because it appears within the type `std::option::Option<syn::generics::BoundLifetimes>`
[01:21:51]   = note: required because it appears within the type `syn::ty::TypeBareFn`
[01:21:51]   = note: required because it appears within the type `syn::ty::Type`
[01:21:51]   = note: required because it appears within the type `syn::expr::GenericMethodArgument`
[01:21:51]   = note: required because it appears within the type `(syn::expr::GenericMethodArgument, syn::token::Comma)`
[01:21:51]   = note: required because it appears within the type `*const (syn::expr::GenericMethodArgument, syn::token::Comma)`
[01:21:51]   = note: required because it appears within the type `std::ptr::Unique<(syn::expr::GenericMethodArgument, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `alloc::raw_vec::RawVec<(syn::expr::GenericMethodArgument, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `std::vec::Vec<(syn::expr::GenericMethodArgument, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `syn::punctuated::Punctuated<syn::expr::GenericMethodArgument, syn::token::Comma>`
[01:21:51]   = note: required because it appears within the type `syn::expr::MethodTurbofish`
[01:21:51]   = note: required because it appears within the type `std::option::Option<syn::expr::MethodTurbofish>`
[01:21:51]   = note: required because it appears within the type `syn::expr::ExprMethodCall`
[01:21:51]   = note: required because it appears within the type `syn::expr::Expr`
[01:21:51]   = note: required because it appears within the type `(syn::expr::Expr, syn::token::Comma)`
[01:21:51]   = note: required because it appears within the type `*const (syn::expr::Expr, syn::token::Comma)`
[01:21:51]   = note: required because it appears within the type `std::ptr::Unique<(syn::expr::Expr, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `alloc::raw_vec::RawVec<(syn::expr::Expr, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `std::vec::Vec<(syn::expr::Expr, syn::token::Comma)>`
[01:21:51]   = note: required because it appears within the type `syn::punctuated::Punctuated<syn::expr::Expr, syn::token::Comma>`
[01:21:51]   = note: required because it appears within the type `query::QueryModifier`
[01:21:51]   = note: required because it appears within the type `*const query::QueryModifier`
[01:21:51]   = note: required because it appears within the type `std::ptr::Unique<query::QueryModifier>`
[01:21:51]   = note: required because it appears within the type `alloc::raw_vec::RawVec<query::QueryModifier>`
[01:21:51]   = note: required because it appears within the type `std::vec::Vec<query::QueryModifier>`
[01:21:51]   = note: required because it appears within the type `query::List<query::QueryModifier>`
[01:21:51]   = note: required because it appears within the type `query::Query`
[01:21:51] error: aborting due to previous error
[01:21:51] 
[01:21:51] For more information about this error, try `rustc --explain E0275`.
[01:21:51] error: Could not document `rustc_macros`.
[01:21:51] error: Could not document `rustc_macros`.
[01:21:51] 
[01:21:51] Caused by:
[01:21:51]   process didn't exit successfully: `/checkout/obj/build/bootstrap/debug/rustdoc --edition=2018 --crate-name rustc_macros src/librustc_macros/src/lib.rs --color always -o /checkout/obj/build/x86_64-unknown-linux-gnu/stage1-rustc/doc -L dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-rustc/release/deps --extern itertools=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-rustc/release/deps/libitertools-19fc87ee0f6fa1f2.rmeta --extern proc_macro2=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-rustc/release/deps/libproc_macro2-0c67e46c5c2a44eb.rmeta --extern quote=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-rustc/release/deps/libquote-e43b075d44cdae48.rmeta --extern syn=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-rustc/release/deps/libsyn-c87c3069fba1eb26.rmeta --extern synstructure=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-rustc/release/deps/libsynstructure-a98d8643b06622c5.rmeta` (exit code: 1)
[01:21:55] error: build failed
[01:21:55] 
[01:21:55] 
[01:21:55] 
[01:21:55] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "doc" "--target" "x86_64-unknown-linux-gnu" "-j" "4" "--release" "--locked" "--color" "always" "--features" "jemalloc" "--manifest-path" "/checkout/src/rustc/Cargo.toml" "--no-deps" "-p" "rustc_apfloat" "-p" "rustc_traits" "-p" "rustc_lint" "-p" "rustc_allocator" "-p" "rustc_codegen_llvm" "-p" "syntax_pos" "-p" "syntax_ext" "-p" "rustc_macros" "-p" "rustc_mir" "-p" "rustc_metadata" "-p" "rustc_llvm" "-p" "rustc_typeck" "-p" "rustc_data_structures" "-p" "build_helper" "-p" "rustc_passes" "-p" "rustc_interface" "-p" "rustc_codegen_ssa" "-p" "rustc_plugin" "-p" "serialize" "-p" "rustc_target" "-p" "rustc_fs_util" "-p" "rustc_codegen_utils" "-p" "fmt_macros" "-p" "arena" "-p" "rustc_resolve" "-p" "rustc_save_analysis" "-p" "graphviz" "-p" "rustc_errors" "-p" "syntax" "-p" "rustc_incremental" "-p" "rustc_driver" "-p" "rustc_borrowck" "-p" "rustc" "-p" "rustc_privacy"
[01:21:55] 
[01:21:55] 
[01:21:55] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap dist --host x86_64-unknown-linux-gnu --target x86_64-unknown-linux-gnu
[01:21:55] Build completed unsuccessfully in 1:15:21
---
travis_time:end:0b7ff732:start=1560036292088115841,finish=1560036292107883889,duration=19768048
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:26f7df89
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:09f06807
travis_time:start:09f06807
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:357fbebf
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@shepmaster
Copy link
Member

Wow, this genuinely looks like a case of a type so composed that a recursion depth of 64 is insufficient. It is feasible to go ahead and "just" increase the limit, however it is not impossible for this to rear its end in the wild either… in which case it would be a regression.

Note that there are currently pending changes (see #61472 / #60444) that seemingly will force crates to increase their recursion limit to be able to run rustdoc, so this might be generally allowed.

@nagisa
Copy link
Member Author

nagisa commented Jun 9, 2019

A-ha. I guess all I have to do is to wait for @nikomatsakis to fix it then. (I could not easily get documentation to get built locally for some reason…)

@bors
Copy link
Contributor

bors commented Jun 12, 2019

☔ The latest upstream changes (presumably #61722) made this pull request unmergeable. Please resolve the merge conflicts.

Previously we would only generate a list of synthetic implementations
for two well known traits – Send and Sync. With this patch all the auto
traits known to rustc are considered. This includes such traits like
Unpin and user’s own traits.

Sadly the implementation still iterates through the list of crate items
and checks them against the traits, which for non-std crates containing
their own auto-traits will still not include types defined in std/core.

It is an improvement nontheless.
@nagisa nagisa force-pushed the rustdoc-all-the-auto-traits branch from 40c9a0a to 4c8d00a Compare June 20, 2019 14:37
@nagisa
Copy link
Member Author

nagisa commented Jun 20, 2019

@bors try

@bors
Copy link
Contributor

bors commented Jun 20, 2019

⌛ Trying commit 4c8d00a with merge c742533...

bors added a commit that referenced this pull request Jun 20, 2019
rustdoc: generate implementors for all auto traits

Previously we would only generate a list of synthetic implementations
for two well known traits – Send and Sync. With this patch all the auto
traits known to rustc are considered. This includes such traits like
Unpin and user’s own traits.

Sadly the implementation still iterates through the list of crate items
and checks them against the traits, which for non-std crates containing
their own auto-traits will still not include types defined in std/core.

It is an improvement nontheless.
@bors
Copy link
Contributor

bors commented Jun 20, 2019

☀️ Try build successful - checks-travis
Build commit: c742533

@nagisa
Copy link
Member Author

nagisa commented Jun 20, 2019

@bors r=eddyb

@bors
Copy link
Contributor

bors commented Jun 20, 2019

📌 Commit 4c8d00a has been approved by eddyb

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jun 20, 2019
@bors
Copy link
Contributor

bors commented Jun 20, 2019

⌛ Testing commit 4c8d00a with merge 9d5b6ef...

bors added a commit that referenced this pull request Jun 20, 2019
rustdoc: generate implementors for all auto traits

Previously we would only generate a list of synthetic implementations
for two well known traits – Send and Sync. With this patch all the auto
traits known to rustc are considered. This includes such traits like
Unpin and user’s own traits.

Sadly the implementation still iterates through the list of crate items
and checks them against the traits, which for non-std crates containing
their own auto-traits will still not include types defined in std/core.

It is an improvement nontheless.
@bors
Copy link
Contributor

bors commented Jun 21, 2019

☀️ Test successful - checks-travis, status-appveyor
Approved by: eddyb
Pushing 9d5b6ef to master...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants