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

Implement DebugStruct::non_exhaustive. #66716

Merged
merged 2 commits into from
Jan 17, 2020

Conversation

derekdreery
Copy link
Contributor

@derekdreery derekdreery commented Nov 24, 2019

This patch adds a function (finish_non_exhaustive) to add ellipsis before the closing brace when formatting using DebugStruct.

Example

#![feature(debug_non_exhaustive)]
use std::fmt;

struct Bar {
    bar: i32,
    hidden: f32,
}

impl fmt::Debug for Bar {
    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
        fmt.debug_struct("Bar")
           .field("bar", &self.bar)
           .non_exhaustive(true) // Show that some other field(s) exist.
           .finish()
    }
}

assert_eq!(
    format!("{:?}", Bar { bar: 10, hidden: 1.0 }),
    "Bar { bar: 10, .. }",
);

@rust-highfive
Copy link
Collaborator

r? @kennytm

(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 Nov 24, 2019
@derekdreery
Copy link
Contributor Author

r? @scottmcm since they saw the internals post.

@rust-highfive rust-highfive assigned scottmcm and unassigned kennytm Nov 24, 2019
/// # #![feature(debug_non_exhaustive)]
/// use std::fmt;
///
/// struct Foo;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd add a field foo to this structure, just for clarity's sake.

Probably Box<dyn (pick your favorite object safe trait that isn't `Debug`)>.

@CAD97
Copy link
Contributor

CAD97 commented Nov 24, 2019

Would it be simpler to print non_exhaustive directly, like as a field? (Though this would mean that it would be possible to make the output awkward by calling non_exhaustive not directly before finish; maybe it could even be e.g. finish_non_exhaustive to avoid that?)

e.g. smth like

    pub fn non_exhaustive(&mut self) -> &mut DebugStruct<'a, 'b> {
        self.result = self.result.and_then(|_| {
            if self.is_pretty() {
                if !self.has_fields {
                    self.fmt.write_str(" {\n")?;
                }
                let mut slot = None;
                let mut state = Default::default();
                let mut writer = PadAdapter::wrap(&mut self.fmt, &mut slot, &mut state);
                writer.write_str("..\n")
            } else {
                let prefix = if self.has_fields { ", " } else { " { " };
                self.fmt.write_str(prefix)?;
                self.fmt.write_str("..")
            }
        });
        self.has_fields = true;
        self
    }

    pub fn finish_non_exhaustive(&mut self) -> fmt::Result {
        self.non_exhaustive().finish()
    }

@derekdreery
Copy link
Contributor Author

@CAD97

Would it be simpler to print non_exhaustive directly, like as a field? (Though this would mean that it would be possible to make the output awkward by calling non_exhaustive not directly before finish; maybe it could even be e.g. finish_non_exhaustive to avoid that?)

That is certainly another possibility, I'd be interested to hear other people's opinions.

@@ -190,7 +195,7 @@ impl<'a, 'b: 'a> DebugStruct<'a, 'b> {
/// }
///
/// assert_eq!(
/// format!("{:?}", Foo),
/// format!("{:?}", Foo { foo: Box::new([1, 2].into_iter().copied()) }),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩🚩🚩🚩🚩🚩

You do not want to use .into_iter().copied() here. This takes an autoref to &[_] and will break when we eventually add impl IntoIterator for [_]. Use .iter() instead.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okies thanks!

@JohnCSimon
Copy link
Member

Ping from triage: @scottmcm - all checks pass, can you please review this PR?

@JohnCSimon
Copy link
Member

Pinging again from triage:
@scottmcm - all checks pass, can you please review this PR?

@Dylan-DPC-zz
Copy link

r? @dtolnay

@rust-highfive rust-highfive assigned dtolnay and unassigned scottmcm Dec 10, 2019
Copy link
Member

@dtolnay dtolnay left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I would be on board with supporting .. in DebugStruct.

  • I think opaque_field should be removed from this PR. It is easy enough to get the same behavior with field("field", &format_args!("_")). But the representation Struct { field: _ } is not one that I find intuitive or would want to encourage. Almost anything would be better, for example field("field", &format_args!("<some Iterator>")). I would prefer to leave this up to the caller rather than dictating a default representation for opaque fields. This way the caller can write an impl that is as useful as possible within their constraints.

  • The bool argument of non_exhaustive doesn't seem useful. The caller would pretty much always need to pass true which is just noisy. In the rare case that a struct may or may not print as nonexhaustive depending on a runtime decision, the Debug impl can use an if around the non_exhaustive call.

  • I would lean toward making this an alternative to finish to sidestep the ambiguity about what it should do if you print more fields after calling non_exhaustive. f.debug_struct("Struct").field("field", &self.field).finish_non_exhaustive()

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-7 of your PR failed (pretty log, 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.
2019-12-16T10:28:41.5521176Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-12-16T10:28:42.5025389Z ##[command]git config gc.auto 0
2019-12-16T10:28:42.5028803Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-12-16T10:28:42.5030690Z ##[command]git config --get-all http.proxy
2019-12-16T10:28:42.5033493Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/66716/merge:refs/remotes/pull/66716/merge
---
2019-12-16T11:23:38.7468481Z .................................................................................................... 1600/9380
2019-12-16T11:23:42.7265115Z .................................................................................................... 1700/9380
2019-12-16T11:23:53.7318482Z ...................................................................i................................ 1800/9380
2019-12-16T11:24:00.3425987Z .................................................................................................... 1900/9380
2019-12-16T11:24:14.3422743Z ....................................................iiiii........................................... 2000/9380
2019-12-16T11:24:23.7182855Z .................................................................................................... 2200/9380
2019-12-16T11:24:25.8941064Z .................................................................................................... 2300/9380
2019-12-16T11:24:28.8642321Z .................................................................................................... 2400/9380
2019-12-16T11:24:49.3391195Z .................................................................................................... 2500/9380
---
2019-12-16T11:27:14.6634371Z .............................................................i...............i...................... 4800/9380
2019-12-16T11:27:21.5524226Z .................................................................................................... 4900/9380
2019-12-16T11:27:29.3326192Z .................................................................................................... 5000/9380
2019-12-16T11:27:34.0571043Z .....i.............................................................................................. 5100/9380
2019-12-16T11:27:43.7123265Z .......................................................................ii.ii...........i............ 5200/9380
2019-12-16T11:27:51.7042183Z .......i............................................................................................ 5400/9380
2019-12-16T11:28:00.9242211Z .................................................................................................... 5500/9380
2019-12-16T11:28:06.8770151Z .....................................................i.............................................. 5600/9380
2019-12-16T11:28:13.2234861Z .................................................................................................... 5700/9380
2019-12-16T11:28:13.2234861Z .................................................................................................... 5700/9380
2019-12-16T11:28:22.5139053Z .................................................................................................... 5800/9380
2019-12-16T11:28:28.8973247Z .........................................ii...i..ii...........i..................................... 5900/9380
2019-12-16T11:28:48.9813694Z .................................................................................................... 6100/9380
2019-12-16T11:28:56.1870837Z .................................................................................................... 6200/9380
2019-12-16T11:28:56.1870837Z .................................................................................................... 6200/9380
2019-12-16T11:29:05.8424598Z ..................................................................i..ii............................. 6300/9380
2019-12-16T11:29:36.4156354Z .................................................................................................... 6500/9380
2019-12-16T11:29:38.2788376Z ......................................i............................................................. 6600/9380
2019-12-16T11:29:40.2894021Z .................................................................................................... 6700/9380
2019-12-16T11:29:42.5221217Z ..............................i..................................................................... 6800/9380
---
2019-12-16T11:31:12.3094894Z .................................................................................................... 7400/9380
2019-12-16T11:31:16.3994497Z .................................................................................................... 7500/9380
2019-12-16T11:31:21.5315547Z .................................................................................................... 7600/9380
2019-12-16T11:31:30.0820110Z .................................................................................................... 7700/9380
2019-12-16T11:31:38.1421677Z ....................................................iiii............................................ 7800/9380
2019-12-16T11:31:51.4619104Z .................................................................................................... 8000/9380
2019-12-16T11:31:57.1136294Z .................................................................................................... 8100/9380
2019-12-16T11:32:11.2023366Z .................................................................................................... 8200/9380
2019-12-16T11:32:18.3645929Z .................................................................................................... 8300/9380
---
2019-12-16T11:34:29.1360454Z  finished in 5.716
2019-12-16T11:34:29.1554607Z Check compiletest suite=codegen mode=codegen (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-12-16T11:34:29.3345319Z 
2019-12-16T11:34:29.3346288Z running 166 tests
2019-12-16T11:34:32.0793380Z iiii......i........ii..iiii...i.............................i..i..................i....i............ 100/166
2019-12-16T11:34:34.0580978Z i.i.i...iii..iiiiiii.......................iii............ii......
2019-12-16T11:34:34.0586694Z 
2019-12-16T11:34:34.0589951Z  finished in 4.904
2019-12-16T11:34:34.0790467Z Check compiletest suite=codegen-units mode=codegen-units (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-12-16T11:34:34.2358608Z 
---
2019-12-16T11:34:36.1392784Z  finished in 2.060
2019-12-16T11:34:36.1590728Z Check compiletest suite=assembly mode=assembly (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-12-16T11:34:36.3118015Z 
2019-12-16T11:34:36.3118151Z running 9 tests
2019-12-16T11:34:36.3119437Z iiiiiiiii
2019-12-16T11:34:36.3120503Z 
2019-12-16T11:34:36.3121041Z  finished in 0.152
2019-12-16T11:34:36.3307063Z Check compiletest suite=incremental mode=incremental (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-12-16T11:34:36.5013041Z 
---
2019-12-16T11:34:54.0471022Z  finished in 17.716
2019-12-16T11:34:54.0677245Z Check compiletest suite=debuginfo mode=debuginfo-gdb+lldb (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-12-16T11:34:54.2378581Z 
2019-12-16T11:34:54.2379289Z running 124 tests
2019-12-16T11:35:17.2488981Z .iiiii..ii.....i..i...i..i.i.i..i..i..iii....ii.ii....ii..........iiii..........i.....i..ii.......ii 100/124
2019-12-16T11:35:21.1630165Z .i.iii.....iiiiii.....ii
2019-12-16T11:35:21.1631624Z 
2019-12-16T11:35:21.1634573Z  finished in 27.095
2019-12-16T11:35:21.1641154Z Uplifting stage1 rustc (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-12-16T11:35:21.1642836Z Copying stage2 rustc from stage1 (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu / x86_64-unknown-linux-gnu)
---
2019-12-16T11:46:57.7599046Z   local time: Mon Dec 16 11:46:57 UTC 2019
2019-12-16T11:46:58.3360040Z   network time: Mon, 16 Dec 2019 11:46:58 GMT
2019-12-16T11:46:58.3362745Z == end clock drift check ==
2019-12-16T11:46:59.3718128Z 
2019-12-16T11:46:59.3777200Z ##[error]Bash exited with code '1'.
2019-12-16T11:46:59.3835322Z ##[section]Starting: Checkout
2019-12-16T11:46:59.3838106Z ==============================================================================
2019-12-16T11:46:59.3838197Z Task         : Get sources
2019-12-16T11:46:59.3838247Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

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)

@dtolnay
Copy link
Member

dtolnay commented Dec 16, 2019

Thanks @derekdreery! This looks good to me. Could you please file a tracking issue and put the issue number into the #[unstable(...)] attribute in the PR? After that I'm happy to merge this.

@derekdreery derekdreery changed the title Implement DebugStruct::non_exhaustive and DebugStruct::opaque_field. Implement DebugStruct::non_exhaustive. Dec 17, 2019
@derekdreery
Copy link
Contributor Author

Tracking issue added :)

@Mark-Simulacrum
Copy link
Member

Could you also squash the commits down into just one? Thanks!

It would also be good to update the PR description to be slightly more commit-y -- e.g., removing open questions, etc. -- since it'll go into the bors merge commit, so is preserved for all history. This is more of a personal pet peeve of mine though :)

@CAD97
Copy link
Contributor

CAD97 commented Dec 17, 2019

It would also be good to update the PR description to be slightly more commit-y

Off topic question: bors-ng has a setting where you can ignore any part of the PR description after some special line, which I often set to e.g. ---. The desired effect, anyway, is that the PR author can insert a markdown line (<hr/>) to offset the committed PR description from temporary concerns without also making a new comment in the thread to host them.

Is this something that the rust-lang bors is capable of doing? If not, should we add it? If so, should we enable it and teach people to use it?

@derekdreery
Copy link
Contributor Author

Could you also squash the commits down into just one? Thanks!

It would also be good to update the PR description to be slightly more commit-y -- e.g., removing open questions, etc. -- since it'll go into the bors merge commit, so is preserved for all history. This is more of a personal pet peeve of mine though :)

Done and done.

@Mark-Simulacrum
Copy link
Member

@CAD97 bors isn't really the most capable of bots, and to my knowledge does not support such a thing.

@derekdreery This looks perfect, thank you!

@bors r=dtolnay

@bors
Copy link
Contributor

bors commented Dec 17, 2019

📌 Commit 985127c has been approved by dtolnay

@bors
Copy link
Contributor

bors commented Dec 17, 2019

🌲 The tree is currently closed for pull requests below priority 100, this pull request will be tested once the tree is reopened

@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-review Status: Awaiting review from the assignee but also interested parties. labels Dec 17, 2019
Mark-Simulacrum added a commit to Mark-Simulacrum/rust that referenced this pull request Dec 18, 2019
…=dtolnay

Implement `DebugStruct::non_exhaustive`.

This patch adds a function (finish_non_exhaustive) to add ellipsis before the closing brace when formatting using `DebugStruct`.

 ## Example

 ```rust
 #![feature(debug_non_exhaustive)]
 use std::fmt;

 struct Bar {
     bar: i32,
     hidden: f32,
 }

 impl fmt::Debug for Bar {
     fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
         fmt.debug_struct("Bar")
            .field("bar", &self.bar)
            .non_exhaustive(true) // Show that some other field(s) exist.
            .finish()
     }
 }

 assert_eq!(
     format!("{:?}", Bar { bar: 10, hidden: 1.0 }),
     "Bar { bar: 10, .. }",
 );
 ```
@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-aux of your PR failed (pretty log, 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.
2019-12-19T09:28:46.3394887Z   llvm-3.8-runtime llvm-runtime mesa-common-dev mime-support openssl patch
2019-12-19T09:28:46.3395403Z   perl perl-modules-5.22 python2.7-minimal x11proto-core-dev
2019-12-19T09:28:46.3395975Z   x11proto-damage-dev x11proto-dri2-dev x11proto-fixes-dev x11proto-gl-dev
2019-12-19T09:28:46.3396476Z   x11proto-input-dev x11proto-kb-dev x11proto-xext-dev
2019-12-19T09:28:46.3397046Z   x11proto-xf86vidmode-dev xorg-sgml-doctools xtrans-dev zlib1g-dev
2019-12-19T09:28:46.3397968Z   binutils-doc bzip2-doc codeblocks eclipse ninja-build cpp-doc gcc-5-locales
2019-12-19T09:28:46.3398533Z   debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg
2019-12-19T09:28:46.3399058Z   gcc-multilib manpages-dev autoconf automake libtool flex bison gdb gcc-doc
2019-12-19T09:28:46.3399633Z   gcc-5-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg
2019-12-19T09:28:46.3399633Z   gcc-5-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg
2019-12-19T09:28:46.3408099Z   libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg
2019-12-19T09:28:46.3410443Z   libmpx0-dbg libquadmath0-dbg gettext-base git-daemon-run
2019-12-19T09:28:46.3412322Z   | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch
2019-12-19T09:28:46.3414122Z   git-cvs git-mediawiki git-svn lrzip glibc-doc gnutls-bin krb5-doc krb5-user
2019-12-19T09:28:46.3416192Z   pciutils lm-sensors libstdc++-5-doc libxcb-doc libxext-doc llvm-3.8-doc
2019-12-19T09:28:46.3419545Z   | libterm-readline-perl-perl python2.7-doc
2019-12-19T09:28:46.3421525Z Recommended packages:
2019-12-19T09:28:46.3423301Z   build-essential fakeroot libalgorithm-merge-perl less rsync ssh-client
2019-12-19T09:28:46.3425013Z   manpages manpages-dev libfile-fcntllock-perl libtxc-dxtn-s2tc
---
2019-12-19T09:29:54.8629417Z Setting up libxcb-glx0:amd64 (1.11.1-1ubuntu1) ...
2019-12-19T09:29:54.9076605Z Setting up libxcb-present0:amd64 (1.11.1-1ubuntu1) ...
2019-12-19T09:29:54.9475210Z Setting up libxcb-sync1:amd64 (1.11.1-1ubuntu1) ...
2019-12-19T09:29:54.9934179Z Setting up libgl1-mesa-glx:amd64 (18.0.5-0ubuntu0~16.04.1) ...
2019-12-19T09:29:55.0230431Z update-alternatives: using /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in auto mode
2019-12-19T09:29:55.1092676Z Setting up libpthread-stubs0-dev:amd64 (0.3-4) ...
2019-12-19T09:29:55.1558754Z Setting up libpython2.7-stdlib:amd64 (2.7.12-1ubuntu0~16.04.9) ...
2019-12-19T09:29:55.2027949Z Setting up libssl-dev:amd64 (1.0.2g-1ubuntu4.15) ...
2019-12-19T09:29:55.2453389Z Setting up libtinfo-dev:amd64 (6.0+20160213-1ubuntu1) ...
---
2019-12-19T11:28:23.3093645Z    Compiling wayland-sys v0.21.13
2019-12-19T11:28:25.8679916Z error: failed to run custom build command for `servo-fontconfig-sys v4.0.4`
2019-12-19T11:28:25.8698452Z 
2019-12-19T11:28:25.8698594Z Caused by:
2019-12-19T11:28:25.8699188Z   process didn't exit successfully: `/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-c7284c5c6a30d3ba/build-script-build` (exit code: 101)
2019-12-19T11:28:25.8699498Z --- stdout
2019-12-19T11:28:25.8699851Z make[1]: Entering directory '/cargo/registry/src/git.luolix.top-1ecc6299db9ec823/servo-fontconfig-sys-4.0.4'
2019-12-19T11:28:25.8700200Z cd /checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out && \
2019-12-19T11:28:25.8700313Z  CC="gcc" \
2019-12-19T11:28:25.8700374Z  AR="ar" \
2019-12-19T11:28:25.8700455Z  FREETYPE_CFLAGS="" \
2019-12-19T11:28:25.8700522Z  FREETYPE_LIBS="" \
2019-12-19T11:28:25.8700767Z  CFLAGS=""" -fPIC" \
2019-12-19T11:28:25.8701114Z  /cargo/registry/src/git.luolix.top-1ecc6299db9ec823/servo-fontconfig-sys-4.0.4/configure \
2019-12-19T11:28:25.8701367Z  --disable-docs \
2019-12-19T11:28:25.8701601Z  --disable-shared \
2019-12-19T11:28:25.8701668Z   \
2019-12-19T11:28:25.8701959Z  --host=x86_64-unknown-linux-gnu --sysconfdir=/etc --localstatedir=/var
2019-12-19T11:28:25.8702341Z checking whether build environment is sane... yes
2019-12-19T11:28:25.8702606Z checking for x86_64-unknown-linux-gnu-strip... no
2019-12-19T11:28:25.8702699Z checking for strip... strip
2019-12-19T11:28:25.8702955Z checking for a thread-safe mkdir -p... /bin/mkdir -p
2019-12-19T11:28:25.8702955Z checking for a thread-safe mkdir -p... /bin/mkdir -p
2019-12-19T11:28:25.8703050Z checking for gawk... no
2019-12-19T11:28:25.8703134Z checking for mawk... mawk
2019-12-19T11:28:25.8703296Z checking whether make supports nested variables... yes
2019-12-19T11:28:25.8703379Z checking whether make supports nested variables... (cached) yes
2019-12-19T11:28:25.8703717Z checking whether to enable maintainer-specific portions of Makefiles... no
2019-12-19T11:28:25.8703989Z checking for x86_64-unknown-linux-gnu-gcc... gcc
---
2019-12-19T11:28:25.8708828Z checking whether make sets $(MAKE)... (cached) yes
2019-12-19T11:28:25.8709098Z checking for x86_64-unknown-linux-gnu-pkg-config... no
2019-12-19T11:28:25.8709374Z checking for pkg-config... /usr/bin/pkg-config
2019-12-19T11:28:25.8709632Z checking pkg-config is at least version 0.9.0... yes
2019-12-19T11:28:25.8709887Z checking for RM macro... rm -f
2019-12-19T11:28:25.8710435Z checking host system type... x86_64-unknown-linux-gnu
2019-12-19T11:28:25.8710531Z checking how to print strings... printf
2019-12-19T11:28:25.8710624Z checking for a sed that does not truncate output... /bin/sed
2019-12-19T11:28:25.8710889Z checking for fgrep... /bin/grep -F
2019-12-19T11:28:25.8710889Z checking for fgrep... /bin/grep -F
2019-12-19T11:28:25.8710962Z checking for ld used by gcc... /usr/bin/ld
2019-12-19T11:28:25.8711056Z checking if the linker (/usr/bin/ld) is GNU ld... yes
2019-12-19T11:28:25.8711336Z checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
2019-12-19T11:28:25.8711662Z checking the name lister (/usr/bin/nm -B) interface... BSD nm
2019-12-19T11:28:25.8711756Z checking the maximum length of command line arguments... 1572864
2019-12-19T11:28:25.8711869Z checking whether the shell understands some XSI constructs... yes
2019-12-19T11:28:25.8711973Z checking whether the shell understands "+="... yes
2019-12-19T11:28:25.8712433Z checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
2019-12-19T11:28:25.8712907Z checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
2019-12-19T11:28:25.8713215Z checking for /usr/bin/ld option to reload object files... -r
2019-12-19T11:28:25.8713612Z checking for x86_64-unknown-linux-gnu-objdump... no
2019-12-19T11:28:25.8713778Z checking how to recognize dependent libraries... pass_all
2019-12-19T11:28:25.8714035Z checking for x86_64-unknown-linux-gnu-dlltool... no
2019-12-19T11:28:25.8714127Z checking for dlltool... no
2019-12-19T11:28:25.8714219Z checking how to associate runtime and link libraries... printf %s\n
2019-12-19T11:28:25.8714219Z checking how to associate runtime and link libraries... printf %s\n
2019-12-19T11:28:25.8714473Z checking for x86_64-unknown-linux-gnu-ar... ar
2019-12-19T11:28:25.8714566Z checking for archiver @FILE support... @
2019-12-19T11:28:25.8714816Z checking for x86_64-unknown-linux-gnu-strip... strip
2019-12-19T11:28:25.8715087Z checking for x86_64-unknown-linux-gnu-ranlib... no
2019-12-19T11:28:25.8715160Z checking for ranlib... ranlib
2019-12-19T11:28:25.8715443Z checking command to parse /usr/bin/nm -B output from gcc object... ok
2019-12-19T11:28:25.8715530Z checking for sysroot... no
2019-12-19T11:28:25.8715904Z checking for x86_64-unknown-linux-gnu-mt... no
2019-12-19T11:28:25.8716007Z checking for mt... no
2019-12-19T11:28:25.8716071Z checking if : is a manifest tool... no
2019-12-19T11:28:25.8716155Z checking for dlfcn.h... yes
2019-12-19T11:28:25.8716220Z checking for objdir... .libs
2019-12-19T11:28:25.8716530Z checking if gcc supports -fno-rtti -fno-exceptions... no
2019-12-19T11:28:25.8716908Z checking for gcc option to produce PIC... -fPIC -DPIC
2019-12-19T11:28:25.8717186Z checking if gcc PIC flag -fPIC -DPIC works... yes
2019-12-19T11:28:25.8717441Z checking if gcc static flag -static works... yes
2019-12-19T11:28:25.8718018Z checking if gcc supports -c -o file.o... yes
2019-12-19T11:28:25.8718300Z checking if gcc supports -c -o file.o... (cached) yes
2019-12-19T11:28:25.8718641Z checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
2019-12-19T11:28:25.8718759Z checking dynamic linker characteristics... GNU/Linux ld.so
2019-12-19T11:28:25.8718974Z checking how to hardcode library paths into programs... immediate
2019-12-19T11:28:25.8719077Z checking whether stripping libraries is possible... yes
2019-12-19T11:28:25.8719156Z checking if libtool supports shared libraries... yes
2019-12-19T11:28:25.8719252Z checking whether to build shared libraries... no
2019-12-19T11:28:25.8719422Z checking for dirent.h that defines DIR... yes
2019-12-19T11:28:25.8719500Z checking for library containing opendir... none required
2019-12-19T11:28:25.8719596Z checking for ANSI C header files... (cached) yes
2019-12-19T11:28:25.8719686Z checking fcntl.h usability... yes
---
2019-12-19T11:28:25.8721119Z checking for sys/statfs.h... yes
2019-12-19T11:28:25.8721177Z checking sys/param.h usability... yes
2019-12-19T11:28:25.8721254Z checking sys/param.h presence... yes
2019-12-19T11:28:25.8721313Z checking for sys/param.h... yes
2019-12-19T11:28:25.8721394Z checking sys/mount.h usability... yes
2019-12-19T11:28:25.8721459Z checking sys/mount.h presence... yes
2019-12-19T11:28:25.8721534Z checking for sys/mount.h... yes
2019-12-19T11:28:25.8721598Z checking for stdint types... stdint.h (shortcircuit)
2019-12-19T11:28:25.8721687Z make use of stdint.h in src/fcstdint.h (assuming C99 compatible system)
2019-12-19T11:28:25.8722041Z checking for inline... inline
2019-12-19T11:28:25.8722120Z checking for flexible array members... yes
2019-12-19T11:28:25.8722180Z checking for pid_t... yes
2019-12-19T11:28:25.8722255Z checking for vprintf... yes
---
2019-12-19T11:28:25.8722582Z checking for getpagesize... yes
2019-12-19T11:28:25.8722665Z checking for working mmap... yes
2019-12-19T11:28:25.8722795Z checking for link... yes
2019-12-19T11:28:25.8722878Z checking for mkstemp... yes
2019-12-19T11:28:25.8722952Z checking for mkostemp... yes
2019-12-19T11:28:25.8723010Z checking for _mktemp_s... no
2019-12-19T11:28:25.8723141Z checking for getopt... yes
2019-12-19T11:28:25.8723216Z checking for getopt_long... yes
2019-12-19T11:28:25.8723275Z checking for getprogname... no
2019-12-19T11:28:25.8723350Z checking for getexecname... no
---
2019-12-19T11:28:25.8724207Z checking for fstatfs... yes
2019-12-19T11:28:25.8724281Z checking for lstat... yes
2019-12-19T11:28:25.8724344Z checking for posix_fadvise in fcntl.h... fcntl.h
2019-12-19T11:28:25.8724422Z checking for scandir... yes
2019-12-19T11:28:25.8724483Z checking for struct statvfs.f_basetype... no
2019-12-19T11:28:25.8724565Z checking for struct statvfs.f_fstypename... no
2019-12-19T11:28:25.8724627Z checking for struct statfs.f_flags... yes
2019-12-19T11:28:25.8724708Z checking for struct statfs.f_fstypename... no
2019-12-19T11:28:25.8724787Z checking for struct dirent.d_type... yes
2019-12-19T11:28:25.8724847Z checking for FREETYPE... yes
2019-12-19T11:28:25.8724922Z checking for FT_Get_Next_Char... yes
2019-12-19T11:28:25.8724981Z checking for FT_Get_BDF_Property... yes
2019-12-19T11:28:25.8725058Z checking for FT_Get_PS_Font_Info... yes
2019-12-19T11:28:25.8725131Z checking for FT_Has_PS_Glyph_Names... yes
2019-12-19T11:28:25.8725211Z checking for FT_Get_X11_Font_Format... yes
2019-12-19T11:28:25.8725270Z checking for FT_Select_Size... yes
2019-12-19T11:28:25.8725348Z checking for FT_Bitmap_Size.y_ppem... yes
2019-12-19T11:28:25.8725480Z checking expat.h usability... yes
2019-12-19T11:28:25.8725538Z checking expat.h presence... yes
2019-12-19T11:28:25.8725612Z checking for expat.h... yes
2019-12-19T11:28:25.8725612Z checking for expat.h... yes
2019-12-19T11:28:25.8725713Z checking for XML_SetDoctypeDeclHandler... yes
2019-12-19T11:28:25.8725776Z checking for Intel atomic primitives... true
2019-12-19T11:28:25.8725859Z checking for Solaris atomic operations... false
2019-12-19T11:28:25.8726140Z checking if compiler needs -Werror to reject unknown flags... no
2019-12-19T11:28:25.8726393Z checking for the pthreads library -lpthreads... no
2019-12-19T11:28:25.8726464Z checking whether pthreads work without any flags... no
2019-12-19T11:28:25.8726722Z checking whether pthreads work with -Kthread... no
2019-12-19T11:28:25.8726950Z checking whether pthreads work with -kthread... no
2019-12-19T11:28:25.8727194Z checking for the pthreads library -llthread... no
2019-12-19T11:28:25.8727419Z checking whether pthreads work with -pthread... yes
2019-12-19T11:28:25.8727511Z checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
2019-12-19T11:28:25.8727940Z checking if more special flags are required for pthreads... no
2019-12-19T11:28:25.8728032Z checking for PTHREAD_PRIO_INHERIT... yes
2019-12-19T11:28:25.8728119Z checking for docbook2html... no
2019-12-19T11:28:25.8728191Z checking whether byte ordering is bigendian... no
2019-12-19T11:28:25.8728279Z checking size of void *... 8
2019-12-19T11:28:25.8728345Z checking alignment of double... 8
2019-12-19T11:28:25.8728439Z checking that generated files are newer than configure... done
2019-12-19T11:28:25.8728610Z config.status: creating Makefile
2019-12-19T11:28:25.8728799Z config.status: creating fontconfig/Makefile
2019-12-19T11:28:25.8729137Z config.status: creating fc-lang/Makefile
2019-12-19T11:28:25.8729137Z config.status: creating fc-lang/Makefile
2019-12-19T11:28:25.8729409Z config.status: creating fc-glyphname/Makefile
2019-12-19T11:28:25.8729653Z config.status: creating fc-case/Makefile
2019-12-19T11:28:25.8729744Z config.status: creating src/Makefile
2019-12-19T11:28:25.8729812Z config.status: creating conf.d/Makefile
2019-12-19T11:28:25.8730073Z config.status: creating fc-cache/Makefile
2019-12-19T11:28:25.8730311Z config.status: creating fc-cat/Makefile
2019-12-19T11:28:25.8730570Z config.status: creating fc-list/Makefile
2019-12-19T11:28:25.8730810Z config.status: creating fc-match/Makefile
2019-12-19T11:28:25.8731074Z config.status: creating fc-pattern/Makefile
2019-12-19T11:28:25.8731413Z config.status: creating fc-query/Makefile
2019-12-19T11:28:25.8731647Z config.status: creating fc-scan/Makefile
2019-12-19T11:28:25.8731880Z config.status: creating fc-validate/Makefile
2019-12-19T11:28:25.8732123Z config.status: creating doc/version.sgml
2019-12-19T11:28:25.8732183Z config.status: creating test/Makefile
2019-12-19T11:28:25.8732260Z config.status: creating fontconfig.spec
2019-12-19T11:28:25.8732320Z config.status: creating fontconfig.pc
2019-12-19T11:28:25.8732320Z config.status: creating fontconfig.pc
2019-12-19T11:28:25.8732579Z config.status: creating fontconfig-zip
2019-12-19T11:28:25.8732643Z config.status: creating config.h
2019-12-19T11:28:25.8732722Z config.status: executing depfiles commands
2019-12-19T11:28:25.8732784Z config.status: executing libtool commands
2019-12-19T11:28:25.8732867Z config.status: executing src/fcstdint.h commands
2019-12-19T11:28:25.8732955Z config.status: creating src/fcstdint.h : _FONTCONFIG_SRC_FCSTDINT_H
2019-12-19T11:28:25.8733262Z cd /checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out && make -j2
2019-12-19T11:28:25.8733605Z make[2]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out'
2019-12-19T11:28:25.8734161Z make[3]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out'
2019-12-19T11:28:25.8734247Z Making all in fontconfig
2019-12-19T11:28:25.8775565Z make[4]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fontconfig'
2019-12-19T11:28:25.8776063Z make[4]: Nothing to be done for 'all'.
2019-12-19T11:28:25.8776063Z make[4]: Nothing to be done for 'all'.
2019-12-19T11:28:25.8776431Z make[4]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fontconfig'
2019-12-19T11:28:25.8776731Z Making all in fc-case
2019-12-19T11:28:25.8777102Z make[4]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-case'
2019-12-19T11:28:25.8777224Z   GEN      fcalias.h
2019-12-19T11:28:25.8777291Z   GEN      fcaliastail.h
2019-12-19T11:28:25.8778058Z make  all-am
2019-12-19T11:28:25.8778439Z make[5]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-case'
2019-12-19T11:28:25.8778753Z make[5]: Nothing to be done for 'all-am'.
2019-12-19T11:28:25.8779132Z make[5]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-case'
2019-12-19T11:28:25.8779543Z make[4]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-case'
2019-12-19T11:28:25.8779837Z Making all in fc-lang
2019-12-19T11:28:25.8780214Z make[4]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-lang'
2019-12-19T11:28:25.8780338Z   GEN      fcalias.h
2019-12-19T11:28:25.8780424Z   GEN      fcaliastail.h
2019-12-19T11:28:25.8780659Z make  all-am
2019-12-19T11:28:25.8781343Z make[5]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-lang'
2019-12-19T11:28:25.8781464Z   GEN      fclang.h
2019-12-19T11:28:25.8781860Z make[6]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-lang'
2019-12-19T11:28:25.8782095Z   GEN      fc-lang
2019-12-19T11:28:25.8782444Z make[6]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-lang'
2019-12-19T11:28:25.8782802Z make[5]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-lang'
2019-12-19T11:28:25.8783183Z make[4]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-lang'
2019-12-19T11:28:25.8783461Z Making all in fc-glyphname
2019-12-19T11:28:25.8784051Z make[4]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-glyphname'
2019-12-19T11:28:25.8784283Z   GEN      fcaliastail.h
2019-12-19T11:28:25.8784350Z   GEN      fcalias.h
2019-12-19T11:28:25.8784610Z make  all-am
2019-12-19T11:28:25.8784967Z make[5]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-glyphname'
2019-12-19T11:28:25.8785262Z make[5]: Nothing to be done for 'all-am'.
2019-12-19T11:28:25.8785644Z make[5]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-glyphname'
2019-12-19T11:28:25.8786034Z make[4]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/fc-glyphname'
2019-12-19T11:28:25.8786502Z make[4]: Entering directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/src'
2019-12-19T11:28:25.8786620Z   GEN      fcalias.h
2019-12-19T11:28:25.8786620Z   GEN      fcalias.h
2019-12-19T11:28:25.8786692Z   GEN      fcftalias.h
2019-12-19T11:28:25.8787046Z   GEN      stamp-fcstdint
2019-12-19T11:28:25.8787140Z config.status: executing src/fcstdint.h commands
2019-12-19T11:28:25.8787220Z config.status: creating src/fcstdint.h : _FONTCONFIG_SRC_FCSTDINT_H
2019-12-19T11:28:25.8787316Z config.status: src/fcstdint.h is unchanged
2019-12-19T11:28:25.8787383Z   GEN      fcobjshash.gperf
2019-12-19T11:28:25.8787950Z   GEN      fcobjshash.h
2019-12-19T11:28:25.8788296Z Makefile:882: recipe for target 'fcobjshash.h' failed
2019-12-19T11:28:25.8788678Z make[4]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/src'
2019-12-19T11:28:25.8788970Z Makefile:562: recipe for target 'all-recursive' failed
2019-12-19T11:28:25.8789342Z make[3]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out'
2019-12-19T11:28:25.8789636Z Makefile:445: recipe for target 'all' failed
2019-12-19T11:28:25.8789996Z make[2]: Leaving directory '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out'
2019-12-19T11:28:25.8790441Z makefile.cargo:61: recipe for target '/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/libfontconfig.a' failed
2019-12-19T11:28:25.8790807Z make[1]: Leaving directory '/cargo/registry/src/git.luolix.top-1ecc6299db9ec823/servo-fontconfig-sys-4.0.4'
2019-12-19T11:28:25.8791104Z --- stderr
2019-12-19T11:28:25.8791387Z make[2]: warning: -jN forced in submake: disabling jobserver mode.
2019-12-19T11:28:25.8791387Z make[2]: warning: -jN forced in submake: disabling jobserver mode.
2019-12-19T11:28:25.8791737Z /cargo/registry/src/git.luolix.top-1ecc6299db9ec823/servo-fontconfig-sys-4.0.4/missing: line 81: gperf: command not found
2019-12-19T11:28:25.8792028Z WARNING: 'gperf' is missing on your system.
2019-12-19T11:28:25.8792115Z          You might have modified some files without having the proper
2019-12-19T11:28:25.8792421Z          tools for further handling them.  Check the 'README' file, it
2019-12-19T11:28:25.8792759Z          often tells you about the needed prerequisites for installing
2019-12-19T11:28:25.8792855Z          this package.  You may also peek at any GNU archive site, in
2019-12-19T11:28:25.8793180Z          case some other package contains this missing 'gperf' program.
2019-12-19T11:28:25.8793259Z make[4]: *** [fcobjshash.h] Error 1
2019-12-19T11:28:25.8793348Z make[4]: *** Waiting for unfinished jobs....
2019-12-19T11:28:25.8793582Z make[3]: *** [all-recursive] Error 1
2019-12-19T11:28:25.8793671Z make[2]: *** [all] Error 2
2019-12-19T11:28:25.8794016Z make[1]: *** [/checkout/obj/build/ct/webrender/target/debug/build/servo-fontconfig-sys-6c491ff7095db0e4/out/libfontconfig.a] Error 2
2019-12-19T11:28:25.8794347Z thread 'main' panicked at 'assertion failed: Command::new("make").env("MAKEFLAGS",
2019-12-19T11:28:25.8794664Z                          env::var("CARGO_MAKEFLAGS").unwrap_or_default()).args(&["-R",
2019-12-19T11:28:25.8794963Z                                                                                  "-f",
2019-12-19T11:28:25.8795570Z                                                                                  "makefile.cargo"]).status().unwrap().success()', /cargo/registry/src/git.luolix.top-1ecc6299db9ec823/servo-fontconfig-sys-4.0.4/build.rs:17:5
2019-12-19T11:28:25.8795791Z 
2019-12-19T11:28:25.8795863Z warning: build failed, waiting for other jobs to finish...
2019-12-19T11:28:34.5166331Z warning: use of deprecated item 'try': use the `?` operator instead
2019-12-19T11:28:34.5167416Z    --> webrender/src/batch.rs:342:1
---
2019-12-19T11:30:36.9657853Z 
2019-12-19T11:30:36.9657904Z 
2019-12-19T11:30:36.9672153Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/test/run-fail/pretty src/test/run-pass-valgrind/pretty src/tools/cargo src/tools/cargotest
2019-12-19T11:30:36.9672571Z Build completed unsuccessfully in 1:57:43
2019-12-19T11:30:36.9721576Z Makefile:50: recipe for target 'check-aux' failed
2019-12-19T11:30:36.9722497Z make: *** [check-aux] Error 1
2019-12-19T11:30:36.9739533Z   local time: Thu Dec 19 11:30:36 UTC 2019
2019-12-19T11:30:37.2515660Z   network time: Thu, 19 Dec 2019 11:30:37 GMT
2019-12-19T11:30:37.2516423Z == end clock drift check ==
2019-12-19T11:30:51.8218795Z 
2019-12-19T11:30:51.8218795Z 
2019-12-19T11:30:51.8338577Z ##[error]Bash exited with code '2'.
2019-12-19T11:30:51.8387372Z ##[section]Starting: Checkout
2019-12-19T11:30:51.8389473Z ==============================================================================
2019-12-19T11:30:51.8389962Z Task         : Get sources
2019-12-19T11:30:51.8390106Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

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 Dec 19, 2019

💔 Test failed - checks-azure

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Dec 19, 2019
@bors
Copy link
Contributor

bors commented Dec 23, 2019

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

@dtolnay dtolnay 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 Jan 14, 2020
@dtolnay
Copy link
Member

dtolnay commented Jan 14, 2020

This needs a rebase but is otherwise ready to land.

@rust-highfive
Copy link
Collaborator

The job mingw-check of your PR failed (pretty log, 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.
2020-01-14T16:48:23.1522474Z ##[command]git remote add origin https://github.com/rust-lang/rust
2020-01-14T16:48:23.1534556Z ##[command]git config gc.auto 0
2020-01-14T16:48:23.1538835Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2020-01-14T16:48:23.1540851Z ##[command]git config --get-all http.proxy
2020-01-14T16:48:23.1546576Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/66716/merge:refs/remotes/pull/66716/merge
---
2020-01-14T16:51:21.2697219Z extracting /checkout/obj/build/cache/2019-12-18/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.gz
2020-01-14T16:51:21.3472860Z error: failed to resolve patches for `https://github.com/rust-lang/cargo`
2020-01-14T16:51:21.3472967Z 
2020-01-14T16:51:21.3473133Z Caused by:
2020-01-14T16:51:21.3473682Z   patch for `cargo` in `https://github.com/rust-lang/cargo` did not resolve to any crates. If this is unexpected, you may wish to consult: https://github.com/rust-lang/cargo/issues/4678
2020-01-14T16:51:21.3482582Z Build completed unsuccessfully in 0:00:10
2020-01-14T16:51:21.3534595Z == clock drift check ==
2020-01-14T16:51:21.3544492Z   local time: Tue Jan 14 16:51:21 UTC 2020
2020-01-14T16:51:21.4029751Z   network time: Tue, 14 Jan 2020 16:51:21 GMT
2020-01-14T16:51:21.4029751Z   network time: Tue, 14 Jan 2020 16:51:21 GMT
2020-01-14T16:51:21.4029862Z == end clock drift check ==
2020-01-14T16:51:28.8727737Z 
2020-01-14T16:51:28.8848759Z ##[error]Bash exited with code '1'.
2020-01-14T16:51:28.8878582Z ##[section]Starting: Checkout
2020-01-14T16:51:28.8880434Z ==============================================================================
2020-01-14T16:51:28.8880489Z Task         : Get sources
2020-01-14T16:51:28.8880657Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

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)

@derekdreery
Copy link
Contributor Author

Should be up-to-date now.

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-7 of your PR failed (pretty log, 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.
2020-01-14T16:59:00.3877795Z ##[command]git remote add origin https://github.com/rust-lang/rust
2020-01-14T16:59:00.3889384Z ##[command]git config gc.auto 0
2020-01-14T16:59:00.3892030Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2020-01-14T16:59:00.3895173Z ##[command]git config --get-all http.proxy
2020-01-14T16:59:00.3898060Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/66716/merge:refs/remotes/pull/66716/merge

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)

@dtolnay
Copy link
Member

dtolnay commented Jan 14, 2020

https://dev.azure.com/rust-lang/e71b0ddf-dd27-435a-873c-e30f86eea377/_apis/build/builds/18417/logs/66 looks like it wants a rustfmt of these files.

@kennytm kennytm added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jan 16, 2020
@derekdreery
Copy link
Contributor Author

ready for review

@dtolnay
Copy link
Member

dtolnay commented Jan 16, 2020

Thanks!

@bors r+

@bors
Copy link
Contributor

bors commented Jan 16, 2020

📌 Commit 73124df has been approved by dtolnay

@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-review Status: Awaiting review from the assignee but also interested parties. labels Jan 16, 2020
@bors
Copy link
Contributor

bors commented Jan 17, 2020

⌛ Testing commit 73124df with merge 8cacf50...

bors added a commit that referenced this pull request Jan 17, 2020
Implement `DebugStruct::non_exhaustive`.

This patch adds a function (finish_non_exhaustive) to add ellipsis before the closing brace when formatting using `DebugStruct`.

 ## Example

 ```rust
 #![feature(debug_non_exhaustive)]
 use std::fmt;

 struct Bar {
     bar: i32,
     hidden: f32,
 }

 impl fmt::Debug for Bar {
     fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
         fmt.debug_struct("Bar")
            .field("bar", &self.bar)
            .non_exhaustive(true) // Show that some other field(s) exist.
            .finish()
     }
 }

 assert_eq!(
     format!("{:?}", Bar { bar: 10, hidden: 1.0 }),
     "Bar { bar: 10, .. }",
 );
 ```
@bors
Copy link
Contributor

bors commented Jan 17, 2020

☀️ Test successful - checks-azure
Approved by: dtolnay
Pushing 8cacf50 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jan 17, 2020
@bors bors merged commit 73124df into rust-lang:master Jan 17, 2020
@derekdreery derekdreery deleted the debug_non_exhaustive branch January 17, 2020 09:31
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.