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

Projects
None yet
8 participants
@nagisa
Copy link
Contributor

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

This comment has been minimized.

Copy link
Collaborator

commented Apr 25, 2019

r? @QuietMisdreavus

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

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

commented Apr 26, 2019

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

This comment has been minimized.

Copy link
Contributor

commented Apr 28, 2019

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

@nagisa

This comment has been minimized.

Copy link
Contributor Author

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 nagisa:rustdoc-all-the-auto-traits branch from 60a1ef8 to a5f06e6 May 2, 2019

@nagisa

This comment has been minimized.

Copy link
Contributor Author

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

This comment has been minimized.

Copy link
Member

commented May 2, 2019

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 nagisa:rustdoc-all-the-auto-traits branch from a5f06e6 to edc5758 May 3, 2019

@nagisa

This comment has been minimized.

Copy link
Contributor Author

commented May 3, 2019

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

@bors

This comment has been minimized.

Copy link
Contributor

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 nagisa:rustdoc-all-the-auto-traits branch from edc5758 to 67aa915 May 4, 2019

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

commented May 4, 2019

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 nagisa:rustdoc-all-the-auto-traits branch from 67aa915 to 4a5e4da May 5, 2019

@nagisa

This comment has been minimized.

Copy link
Contributor Author

commented May 10, 2019

@bors

This comment has been minimized.

Copy link
Contributor

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 nagisa:rustdoc-all-the-auto-traits branch from 4a5e4da to 963184b May 19, 2019

@nagisa

This comment has been minimized.

Copy link
Contributor Author

commented May 19, 2019

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

@nagisa nagisa reopened this May 19, 2019

@bors

This comment has been minimized.

Copy link
Contributor

commented May 24, 2019

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

@GuillaumeGomez

This comment has been minimized.

Copy link
Member

commented May 29, 2019

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

@nagisa nagisa force-pushed the nagisa:rustdoc-all-the-auto-traits branch from 5c07ac9 to 40c9a0a Jun 1, 2019

@nagisa

This comment has been minimized.

Copy link
Contributor Author

commented Jun 1, 2019

Rebased, @GuillaumeGomez.

@GuillaumeGomez

This comment has been minimized.

Copy link
Member

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

eddyb approved these changes Jun 2, 2019

@eddyb

This comment has been minimized.

Copy link
Member

commented Jun 2, 2019

@bors r+

@bors

This comment has been minimized.

Copy link
Contributor

commented Jun 2, 2019

📌 Commit 40c9a0a has been approved by eddyb

@nagisa

This comment has been minimized.

Copy link
Contributor Author

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

This comment has been minimized.

Copy link
Contributor

commented Jun 8, 2019

⌛️ Trying commit 40c9a0a with merge 5ee7357...

bors added a commit that referenced this pull request Jun 8, 2019

Auto merge of #60293 - nagisa:rustdoc-all-the-auto-traits, r=<try>
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

This comment has been minimized.

Copy link
Contributor

commented Jun 8, 2019

💔 Test failed - checks-travis

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

commented Jun 8, 2019

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

This comment has been minimized.

Copy link
Member

commented Jun 9, 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.

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

This comment has been minimized.

Copy link
Contributor Author

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

This comment has been minimized.

Copy link
Contributor

commented Jun 12, 2019

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

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.

@nagisa nagisa force-pushed the nagisa:rustdoc-all-the-auto-traits branch from 40c9a0a to 4c8d00a Jun 20, 2019

@nagisa

This comment has been minimized.

Copy link
Contributor Author

commented Jun 20, 2019

@bors try

@bors

This comment has been minimized.

Copy link
Contributor

commented Jun 20, 2019

⌛️ Trying commit 4c8d00a with merge c742533...

bors added a commit that referenced this pull request Jun 20, 2019

Auto merge of #60293 - nagisa:rustdoc-all-the-auto-traits, r=<try>
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

This comment has been minimized.

Copy link
Contributor

commented Jun 20, 2019

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

@nagisa

This comment has been minimized.

Copy link
Contributor Author

commented Jun 20, 2019

@bors r=eddyb

@bors

This comment has been minimized.

Copy link
Contributor

commented Jun 20, 2019

📌 Commit 4c8d00a has been approved by eddyb

@bors

This comment has been minimized.

Copy link
Contributor

commented Jun 20, 2019

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

bors added a commit that referenced this pull request Jun 20, 2019

Auto merge of #60293 - nagisa:rustdoc-all-the-auto-traits, r=eddyb
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

This comment has been minimized.

Copy link
Contributor

commented Jun 21, 2019

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

@bors bors added the merged-by-bors label Jun 21, 2019

@bors bors merged commit 4c8d00a into rust-lang:master Jun 21, 2019

3 checks passed

Travis CI - Pull Request Build Passed
Details
homu Test successful
Details
pr Build #20190620.19 succeeded
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.