]> git.lizzy.rs Git - rust.git/log
rust.git
19 months agoRemove unused symbols
Maybe Waffle [Sun, 13 Nov 2022 20:05:32 +0000 (20:05 +0000)]
Remove unused symbols

19 months agoRemove unused diagnostic items
Maybe Waffle [Sun, 13 Nov 2022 18:49:21 +0000 (18:49 +0000)]
Remove unused diagnostic items

19 months agoAuto merge of #104282 - cjgillot:intern-span, r=compiler-errors
bors [Sun, 13 Nov 2022 06:23:18 +0000 (06:23 +0000)]
Auto merge of #104282 - cjgillot:intern-span, r=compiler-errors

Hash spans when interning types

Ignoring hash for spans creates an inconsistency between the `Hash` impl for `WithStableHash`, which takes them into account, and the `HashStable` impl which does not.

cc `@compiler-errors`

Fixes https://github.com/rust-lang/rust/issues/104271
Fixes https://github.com/rust-lang/rust/issues/104255
Fixes https://github.com/rust-lang/rust/issues/104238

19 months agoAuto merge of #104078 - jyn514:dry-run-progress, r=Mark-Simulacrum
bors [Sun, 13 Nov 2022 03:38:31 +0000 (03:38 +0000)]
Auto merge of #104078 - jyn514:dry-run-progress, r=Mark-Simulacrum

Print "Checking/Building ..." message even when --dry-run is passed

Print "Checking/Building ..." message even when --dry-run is passed

This makes it a lot easier to understand what commands will be run without
having to parse the `-vv` output, which isn't meant to be user facing.

I also want to change these messages at some point (https://github.com/rust-lang/rust/issues/102003) and this change will make it easier to paste a before/after comparison without having to actually build a stage 2 compiler.

19 months agoAuto merge of #103311 - petrochenkov:pblfix, r=bjorn3
bors [Sat, 12 Nov 2022 23:29:11 +0000 (23:29 +0000)]
Auto merge of #103311 - petrochenkov:pblfix, r=bjorn3

linker: Refactoring and fixes to native library linking

This PR contains a bunch of code cleanup and comment rearrangements + 2 fixes for `-Zpacked-bundled-libs`.
It's better to look at individual commits.

19 months agoPrint "Checking/Building ..." message even when --dry-run is passed
Joshua Nelson [Sun, 6 Nov 2022 23:00:58 +0000 (17:00 -0600)]
Print "Checking/Building ..." message even when --dry-run is passed

This makes it a lot easier to understand what commands will be run without
having to parse the `-vv` output, which isn't meant to be user facing.

19 months agoDistinguish `--dry-run` from the automatic dry run check
Joshua Nelson [Sun, 6 Nov 2022 22:59:43 +0000 (16:59 -0600)]
Distinguish `--dry-run` from the automatic dry run check

19 months agoAuto merge of #103913 - Neutron3529:patch-1, r=thomcc
bors [Sat, 12 Nov 2022 20:48:27 +0000 (20:48 +0000)]
Auto merge of #103913 - Neutron3529:patch-1, r=thomcc

Improve performance of `rem_euclid()` for signed integers

such code is copy from
https://github.com/rust-lang/rust/blob/master/library/std/src/f32.rs and
https://github.com/rust-lang/rust/blob/master/library/std/src/f64.rs
using `r+rhs.abs()` is faster than calc it with an if clause. Bench result:
```
$ cargo bench
   Compiling div-euclid v0.1.0 (/me/div-euclid)
    Finished bench [optimized] target(s) in 1.01s
     Running unittests src/lib.rs (target/release/deps/div_euclid-7a4530ca7817d1ef)

running 7 tests
test tests::it_works ... ignored
test tests::bench_aaabs     ... bench:  10,498,793 ns/iter (+/- 104,360)
test tests::bench_aadefault ... bench:  11,061,862 ns/iter (+/- 94,107)
test tests::bench_abs       ... bench:  10,477,193 ns/iter (+/- 81,942)
test tests::bench_default   ... bench:  10,622,983 ns/iter (+/- 25,119)
test tests::bench_zzabs     ... bench:  10,481,971 ns/iter (+/- 43,787)
test tests::bench_zzdefault ... bench:  11,074,976 ns/iter (+/- 29,633)

test result: ok. 0 passed; 0 failed; 1 ignored; 6 measured; 0 filtered out; finished in 19.35s
```
It seems that, default `rem_euclid` triggered a branch prediction, thus `bench_default` is faster than `bench_aadefault` and `bench_aadefault`, which shuffles the order of calculations. but all of them slower than what it was in `f64`'s and `f32`'s `rem_euclid`, thus I submit this PR.

bench code:
```rust
#![feature(test)]
extern crate test;

fn rem_euclid(a:i32,rhs:i32)->i32{
    let r = a % rhs;
    if r < 0 { r + rhs.abs() } else { r }
}

#[cfg(test)]
mod tests {
    use super::*;
    use test::Bencher;
    use rand::prelude::*;
    use rand::rngs::SmallRng;
    const N:i32=1000;
    #[test]
    fn it_works() {
        let a: i32 = 7; // or any other integer type
        let b = 4;

        let d:Vec<i32>=(-N..=N).collect();
        let n:Vec<i32>=(-N..0).chain(1..=N).collect();

        for i in &d {
            for j in &n {
                assert_eq!(i.rem_euclid(*j),rem_euclid(*i,*j));
            }
        }

        assert_eq!(rem_euclid(a,b), 3);
        assert_eq!(rem_euclid(-a,b), 1);
        assert_eq!(rem_euclid(a,-b), 3);
        assert_eq!(rem_euclid(-a,-b), 1);
    }

    #[bench]
    fn bench_aaabs(b: &mut Bencher) {
        let mut d:Vec<i32>=(-N..=N).collect();
        let mut n:Vec<i32>=(-N..0).chain(1..=N).collect();
        let mut rng=SmallRng::from_seed([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,21]);
        n.shuffle(&mut rng);
        d.shuffle(&mut rng);
        n.shuffle(&mut rng);
        b.iter(||{
            let mut res=0;
            for i in &d {
                for j in &n {
                    res+=rem_euclid(*i,*j);
                }
            }
            res
        });
    }
    #[bench]
    fn bench_aadefault(b: &mut Bencher) {
        let mut d:Vec<i32>=(-N..=N).collect();
        let mut n:Vec<i32>=(-N..0).chain(1..=N).collect();
        let mut rng=SmallRng::from_seed([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,21]);
        n.shuffle(&mut rng);
        d.shuffle(&mut rng);
        n.shuffle(&mut rng);
        b.iter(||{
            let mut res=0;
            for i in &d {
                for j in &n {
                    res+=i.rem_euclid(*j);
                }
            }
            res
        });
    }

    #[bench]
    fn bench_abs(b: &mut Bencher) {
        let d:Vec<i32>=(-N..=N).collect();
        let n:Vec<i32>=(-N..0).chain(1..=N).collect();
        b.iter(||{
            let mut res=0;
            for i in &d {
                for j in &n {
                    res+=rem_euclid(*i,*j);
                }
            }
            res
        });
    }
    #[bench]
    fn bench_default(b: &mut Bencher) {
        let d:Vec<i32>=(-N..=N).collect();
        let n:Vec<i32>=(-N..0).chain(1..=N).collect();
        b.iter(||{
            let mut res=0;
            for i in &d {
                for j in &n {
                    res+=i.rem_euclid(*j);
                }
            }
            res
        });
    }

    #[bench]
    fn bench_zzabs(b: &mut Bencher) {
        let mut d:Vec<i32>=(-N..=N).collect();
        let mut n:Vec<i32>=(-N..0).chain(1..=N).collect();
        let mut rng=SmallRng::from_seed([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,21]);
        d.shuffle(&mut rng);
        n.shuffle(&mut rng);
        d.shuffle(&mut rng);
        b.iter(||{
            let mut res=0;
            for i in &d {
                for j in &n {
                    res+=rem_euclid(*i,*j);
                }
            }
            res
        });
    }
    #[bench]
    fn bench_zzdefault(b: &mut Bencher) {
        let mut d:Vec<i32>=(-N..=N).collect();
        let mut n:Vec<i32>=(-N..0).chain(1..=N).collect();
        let mut rng=SmallRng::from_seed([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,21]);
        d.shuffle(&mut rng);
        n.shuffle(&mut rng);
        d.shuffle(&mut rng);
        b.iter(||{
            let mut res=0;
            for i in &d {
                for j in &n {
                    res+=i.rem_euclid(*j);
                }
            }
            res
        });
    }
}
```

19 months agolinker: Link `profiler_builtins` even if it's marked as `NotLinked`
Vadim Petrochenkov [Sat, 12 Nov 2022 20:02:15 +0000 (23:02 +0300)]
linker: Link `profiler_builtins` even if it's marked as `NotLinked`

19 months agoUpdate run-make-fulldeps tests
Vadim Petrochenkov [Sun, 6 Nov 2022 11:44:07 +0000 (15:44 +0400)]
Update run-make-fulldeps tests

Adjacent identical native libraries are no longer deduplicated if they come from different crates

19 months agolinker: Support mixing crates built with different values of `-Zpacked_bundled_libs`
Vadim Petrochenkov [Sun, 6 Nov 2022 10:11:17 +0000 (14:11 +0400)]
linker: Support mixing crates built with different values of `-Zpacked_bundled_libs`

So you can change the value of `-Zpacked_bundled_libs` without rebuilding standard library

19 months agolinker: Move some inner functions to the outside
Vadim Petrochenkov [Thu, 20 Oct 2022 15:46:43 +0000 (19:46 +0400)]
linker: Move some inner functions to the outside

Inline `fn unlib`

19 months agolinker: Simplify linking of `compiler_builtins` and `profiler_builtins`
Vadim Petrochenkov [Thu, 20 Oct 2022 14:57:47 +0000 (18:57 +0400)]
linker: Simplify linking of `compiler_builtins` and `profiler_builtins`

This also fixes linking of native libraries bundled into these crates when `-Zpacked-bundled-libs` is enabled

19 months agolinker: Factor out native library linking to a separate function
Vadim Petrochenkov [Thu, 20 Oct 2022 10:11:59 +0000 (14:11 +0400)]
linker: Factor out native library linking to a separate function

19 months agoAuto merge of #104325 - GuillaumeGomez:rollup-19bzwoa, r=GuillaumeGomez
bors [Sat, 12 Nov 2022 17:39:11 +0000 (17:39 +0000)]
Auto merge of #104325 - GuillaumeGomez:rollup-19bzwoa, r=GuillaumeGomez

Rollup of 8 pull requests

Successful merges:

 - #104110 (prevent uninitialized access in black_box for zero-sized-types)
 - #104117 (Mark `trait_upcasting` feature no longer incomplete.)
 - #104144 (Suggest removing unnecessary `.` to use a floating point literal)
 - #104250 (Migrate no result page link color to CSS variables)
 - #104261 (More accurately report error when formal and expected signature types differ)
 - #104263 (Add a reference to ilog2 in leading_zeros integer docs)
 - #104308 (Remove the old `ValidAlign` name)
 - #104319 (Fix non clickable source link)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

19 months agoRollup merge of #104319 - GuillaumeGomez:fix-non-clickable-source-link, r=notriddle
Guillaume Gomez [Sat, 12 Nov 2022 16:25:04 +0000 (17:25 +0100)]
Rollup merge of #104319 - GuillaumeGomez:fix-non-clickable-source-link, r=notriddle

Fix non clickable source link

Fixes https://github.com/rust-lang/rust/issues/104313.

It was also fixed in https://github.com/rust-lang/rust/pull/104177. If https://github.com/rust-lang/rust/pull/104177 is merged first, I'll simply remove the first commit to keep the test.

r? ``@notriddle``

19 months agoRollup merge of #104308 - scottmcm:no-more-validalign, r=thomcc
Guillaume Gomez [Sat, 12 Nov 2022 16:25:03 +0000 (17:25 +0100)]
Rollup merge of #104308 - scottmcm:no-more-validalign, r=thomcc

Remove the old `ValidAlign` name

Since it looks like there won't be any reverts needed in `Layout` for https://github.com/rust-lang/rust/issues/101899#issuecomment-1290805223, finish off this change that I'd left out of #102072.

r? ``@thomcc``
cc tracking issue #102070

19 months agoRollup merge of #104263 - albertlarsan68:add-ilog2-to-leading-zeroes-docs, r=scottmcm
Guillaume Gomez [Sat, 12 Nov 2022 16:25:03 +0000 (17:25 +0100)]
Rollup merge of #104263 - albertlarsan68:add-ilog2-to-leading-zeroes-docs, r=scottmcm

Add a reference to ilog2 in leading_zeros integer docs

Fixes #104248

19 months agoRollup merge of #104261 - compiler-errors:formal-and-expected-differ, r=estebank
Guillaume Gomez [Sat, 12 Nov 2022 16:25:02 +0000 (17:25 +0100)]
Rollup merge of #104261 - compiler-errors:formal-and-expected-differ, r=estebank

More accurately report error when formal and expected signature types differ

Fixes #104242

19 months agoRollup merge of #104250 - GuillaumeGomez:migrate-not-found-link-color, r=notriddle
Guillaume Gomez [Sat, 12 Nov 2022 16:25:02 +0000 (17:25 +0100)]
Rollup merge of #104250 - GuillaumeGomez:migrate-not-found-link-color, r=notriddle

Migrate no result page link color to CSS variables

r? ``@notriddle``

19 months agoRollup merge of #104144 - TaKO8Ki:suggest-removing-unnecessary-dot, r=fee1-dead
Guillaume Gomez [Sat, 12 Nov 2022 16:25:01 +0000 (17:25 +0100)]
Rollup merge of #104144 - TaKO8Ki:suggest-removing-unnecessary-dot, r=fee1-dead

Suggest removing unnecessary `.` to use a floating point literal

Fixes a part of #101883

19 months agoRollup merge of #104117 - crlf0710:update_feature_gate, r=jackh726
Guillaume Gomez [Sat, 12 Nov 2022 16:25:01 +0000 (17:25 +0100)]
Rollup merge of #104117 - crlf0710:update_feature_gate, r=jackh726

Mark `trait_upcasting` feature no longer incomplete.

This marks the `trait_upcasting` feature no longer incomplete since #101336 has been settled for a little while.

r? ``````@jackh726``````

19 months agoRollup merge of #104110 - krasimirgg:msan-16, r=nagisa
Guillaume Gomez [Sat, 12 Nov 2022 16:25:00 +0000 (17:25 +0100)]
Rollup merge of #104110 - krasimirgg:msan-16, r=nagisa

prevent uninitialized access in black_box for zero-sized-types

Don't read the pointer location in black_box for zero sized types, just emit a memory clobber instead. Addresses  https://github.com/rust-lang/rust/issues/103304 when rust is build against LLVM at HEAD.

Zulip thread: https://rust-lang.zulipchat.com/#narrow/stream/187780-t-compiler.2Fwg-llvm/topic/.28with.20llvm.20at.20HEAD.29.3A.20msan.20error.20in.20core.3A.3Ahint.3A.3Ablack_box

19 months agoAuto merge of #103812 - clubby789:improve-include-bytes, r=petrochenkov
bors [Sat, 12 Nov 2022 14:30:34 +0000 (14:30 +0000)]
Auto merge of #103812 - clubby789:improve-include-bytes, r=petrochenkov

Delay `include_bytes` to AST lowering

Hopefully addresses #65818.
This PR introduces a new `ExprKind::IncludedBytes` which stores the path and bytes of a file included with `include_bytes!()`. We can then create a literal from the bytes during AST lowering, which means we don't need to escape the bytes into valid UTF8 which is the cause of most of the overhead of embedding large binary blobs.

19 months agoAdd GUI test to ensure that source links can be clicked
Guillaume Gomez [Sat, 12 Nov 2022 12:58:59 +0000 (13:58 +0100)]
Add GUI test to ensure that source links can be clicked

19 months agoFix impossibility to click on source link
Guillaume Gomez [Sat, 12 Nov 2022 12:52:43 +0000 (13:52 +0100)]
Fix impossibility to click on source link

19 months agoUse same color for links in no result search
Guillaume Gomez [Fri, 11 Nov 2022 19:39:20 +0000 (20:39 +0100)]
Use same color for links in no result search

19 months agoAdd GUI test for "no result found" links
Guillaume Gomez [Thu, 10 Nov 2022 17:51:08 +0000 (18:51 +0100)]
Add GUI test for "no result found" links

19 months agoMigrate no result page link color to CSS variables
Guillaume Gomez [Thu, 10 Nov 2022 17:16:22 +0000 (18:16 +0100)]
Migrate no result page link color to CSS variables

19 months agoAuto merge of #102701 - flba-eb:add_qnx_nostd_support, r=cjgillot
bors [Sat, 12 Nov 2022 11:03:33 +0000 (11:03 +0000)]
Auto merge of #102701 - flba-eb:add_qnx_nostd_support, r=cjgillot

Add tier 3 no_std AArch64/x86_64 support for the QNX Neutrino RTOS

This change allows to compile `no_std` applications for the QNX Neutrino Real-time operating system for ARM 64 bit CPUs.
Tested with QNX Neutrino 7.1.

Partially discussed in [zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Adding.20QNX.20as.20target).

---

> ## Tier 3 target policy
>
> At this tier, the Rust project provides no official support for a target, so we
place minimal requirements on the introduction of targets.
>
>A proposed new tier 3 target must be reviewed and approved by a member of the
compiler team based on these requirements. The reviewer may choose to gauge
broader compiler team consensus via a [Major Change Proposal (MCP)][MCP].
>
>A proposed target or target-specific patch that substantially changes code
shared with other targets (not just target-specific code) must be reviewed and
approved by the appropriate team for that shared code before acceptance.
>
>- A tier 3 target must have a designated developer or developers (the "target
  maintainers") on record to be CCed when issues arise regarding the target.
  (The mechanism to track and CC such developers may evolve over time.)

See also nto-qnx.md; designated developers are:

- Florian Bartels, `Florian.Bartels@elektrobit.com`, https://github.com/flba-eb
- Tristan Roach, `TRoach@blackberry.com`, https://github.com/gh-tr

> - Targets must use naming consistent with any existing targets; for instance, a
  target for the same CPU or OS as an existing Rust target should use the same
  name for that CPU or OS. Targets should normally use the same names and
  naming conventions as used elsewhere in the broader ecosystem beyond Rust
  (such as in other toolchains), unless they have a very good reason to
  diverge. Changing the name of a target can be highly disruptive, especially
  once the target reaches a higher tier, so getting the name right is important
  even for a tier 3 target.
>  - Target names should not introduce undue confusion or ambiguity unless
    absolutely necessary to maintain ecosystem compatibility. For example, if
    the name of the target makes people extremely likely to form incorrect
    beliefs about what it targets, the name should be changed or augmented to
    disambiguate it.

`aarch64-unknown-nto-qnx7.1.0` and `x86_64-pc-nto-qnx7.1.0` have been chosen as these
strings are used in the official QNX Neutrino toolchain (for `C`/`C++`). It should also
harmonize with the other Rust targets.

The version (`7.1.0 `) is needed because libc needs to distinguish between different
versions (`target_env` is set to `710` for QNX Neutrino 7.1): For example, functions are removed from 7.0
to 7.1, sometimes the signature of functions is slightly changed or size/alignment of structs.
I'm expecting the same for future versions.
This works very well in e.g. `libc` (tested with 7.0 which I'm not going to support).

> - Tier 3 targets may have unusual requirements to build or use, but must not
  create legal issues or impose onerous legal terms for the Rust project or for
  Rust developers or users.
>  - The target must not introduce license incompatibilities.

No issue as far as I can see.

>  - Anything added to the Rust repository must be under the standard Rust
    license (`MIT OR Apache-2.0`).

Ok

>  - The target must not cause the Rust tools or libraries built for any other
    host (even when supporting cross-compilation to the target) to depend
    on any new dependency less permissive than the Rust licensing policy. This
    applies whether the dependency is a Rust crate that would require adding
    new license exceptions (as specified by the `tidy` tool in the
    rust-lang/rust repository), or whether the dependency is a native library
    or binary. In other words, the introduction of the target must not cause a
    user installing or running a version of Rust or the Rust tools to be
    subject to any new license requirements.

No change for host tools. When cross-compiling for QNX Neutrino, the compiler/linker
driver "qcc" is called. It should be possible (but not tested) to use other
(OSS) compilers/linkers to produce working binaries.

>  - Compiling, linking, and emitting functional binaries, libraries, or other
    code for the target (whether hosted on the target itself or cross-compiling
    from another target) must not depend on proprietary (non-FOSS) libraries.
    Host tools built for the target itself may depend on the ordinary runtime
    libraries supplied by the platform and commonly used by other applications
    built for the target, but those libraries must not be required for code
    generation for the target; cross-compilation to the target must not require
    such libraries at all. For instance, `rustc` built for the target may
    depend on a common proprietary C runtime library or console output library,
    but must not depend on a proprietary code generation library or code
    optimization library. Rust's license permits such combinations, but the
    Rust project has no interest in maintaining such combinations within the
    scope of Rust itself, even at tier 3.

Only rustc is required for code generation (i.e. no additional libraries to
generate code). Linking of executables requires the ordinary runtime libraries
`crt` and `libc`.

>  - "onerous" here is an intentionally subjective term. At a minimum, "onerous"
    legal/licensing terms include but are *not* limited to: non-disclosure
    requirements, non-compete requirements, contributor license agreements
    (CLAs) or equivalent, "non-commercial"/"research-only"/etc terms,
    requirements conditional on the employer or employment of any particular
    Rust developers, revocable terms, any requirements that create liability
    for the Rust project or its developers or users, or any requirements that
    adversely affect the livelihood or prospects of the Rust project or its
    developers or users.
>- Neither this policy nor any decisions made regarding targets shall create any
  binding agreement or estoppel by any party. If any member of an approving
  Rust team serves as one of the maintainers of a target, or has any legal or
  employment requirement (explicit or implicit) that might affect their
  decisions regarding a target, they must recuse themselves from any approval
  decisions regarding the target's tier status, though they may otherwise
  participate in discussions.
>  - This requirement does not prevent part or all of this policy from being
    cited in an explicit contract or work agreement (e.g. to implement or
    maintain support for a target). This requirement exists to ensure that a
    developer or team responsible for reviewing and approving a target does not
    face any legal threats or obligations that would prevent them from freely
    exercising their judgment in such approval, even if such judgment involves
    subjective matters or goes beyond the letter of these requirements.

I see no issues with any of the above.

>- Tier 3 targets should attempt to implement as much of the standard libraries
  as possible and appropriate (`core` for most targets, `alloc` for targets
  that can support dynamic memory allocation, `std` for targets with an
  operating system or equivalent layer of system-provided functionality), but
  may leave some code unimplemented (either unavailable or stubbed out as
  appropriate), whether because the target makes it impossible to implement or
  challenging to implement. The authors of pull requests are not obligated to
  avoid calling any portions of the standard library on the basis of a tier 3
  target not implementing those portions.

`core` and `alloc` should be working (no change required). `std` implementation
is ongoing and will be provided separately.

>- The target must provide documentation for the Rust community explaining how
  to build for the target, using cross-compilation if possible. If the target
  supports running binaries, or running tests (even if they do not pass), the
  documentation must explain how to run such binaries or tests for the target,
  using emulation if possible or dedicated hardware if necessary.

see nto-qnx.md

>- Tier 3 targets must not impose burden on the authors of pull requests, or
  other developers in the community, to maintain the target. In particular,
  do not post comments (automated or manual) on a PR that derail or suggest a
  block on the PR based on a tier 3 target. Do not send automated messages or
  notifications (via any medium, including via ``@`)` to a PR author or others
  involved with a PR regarding a tier 3 target, unless they have opted into
  such messages.
>  - Backlinks such as those generated by the issue/PR tracker when linking to
    an issue or PR are not considered a violation of this policy, within
    reason. However, such messages (even on a separate repository) must not
    generate notifications to anyone involved with a PR who has not requested
    such notifications.

Ok

>- Patches adding or updating tier 3 targets must not break any existing tier 2
  or tier 1 target, and must not knowingly break another tier 3 target without
  approval of either the compiler team or the maintainers of the other tier 3
  target.
>  - In particular, this may come up when working on closely related targets,
    such as variations of the same architecture with different features. Avoid
    introducing unconditional uses of features that another variation of the
    target may not have; use conditional compilation or runtime detection, as
    appropriate, to let each target run code supported by that target.

Ok

19 months agoRemove example code as it does not compile in CI
Florian Bartels [Sat, 12 Nov 2022 08:25:34 +0000 (09:25 +0100)]
Remove example code as it does not compile in CI

Code is QNX/nto specific and will not link on Windows.

19 months agoAuto merge of #104310 - Dylan-DPC:rollup-wgt1z4a, r=Dylan-DPC
bors [Sat, 12 Nov 2022 08:03:01 +0000 (08:03 +0000)]
Auto merge of #104310 - Dylan-DPC:rollup-wgt1z4a, r=Dylan-DPC

Rollup of 7 pull requests

Successful merges:

 - #102049 (Add the `#[derive_const]` attribute)
 - #103970 (Unhide unknown spans)
 - #104206 (Remove `save_and_restore_in_snapshot_flag`, use `ObligationCtxt` more)
 - #104214 (Emit error in `collecting_trait_impl_trait_tys` on mismatched signatures)
 - #104267 (rustdoc: use checkbox instead of switch for settings toggles)
 - #104302 (Update cargo)
 - #104303 (UI tests can be assigned to T-compiler)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

19 months agoRollup merge of #104303 - compiler-errors:ui-test-triagebot, r=Mark-Simulacrum
Dylan DPC [Sat, 12 Nov 2022 06:32:54 +0000 (12:02 +0530)]
Rollup merge of #104303 - compiler-errors:ui-test-triagebot, r=Mark-Simulacrum

UI tests can be assigned to T-compiler

It's my understanding that while not *all* `src/test/ui` tests are compiler-related, the bulk of them are, so I think it makes sense for this to go to the compiler triagebot category (T-compiler and T-compiler-contributors) instead of fallback, which consists of just `@Mark-Simulacrum.` Though if anyone diagrees, feel free to close this PR.

19 months agoRollup merge of #104302 - weihanglo:update-cargo, r=weihanglo
Dylan DPC [Sat, 12 Nov 2022 06:32:53 +0000 (12:02 +0530)]
Rollup merge of #104302 - weihanglo:update-cargo, r=weihanglo

Update cargo

9 commits in 9286a1beba5b28b115bad67de2ae91fb1c61eb0b..a3dfea71ca0c888a88111086898aa833c291d497 2022-11-04 06:41:49 +0000 to 2022-11-11 03:50:47 +0000
- fix: return non UTF-8 error message (rust-lang/cargo#11321)
- Extract `two_kinds_of_msg_format_err` message to de-duplicate it (rust-lang/cargo#11358)
- Propagate change of artifact bin dep to its parent fingerprint (rust-lang/cargo#11353)
- Fix not a hyperlink warnings (rust-lang/cargo#11357)
- Fix wait-for-publish with sparse registry (rust-lang/cargo#11356)
- Add `rm` alias to configuration docs (rust-lang/cargo#11351)
- Add `registries.crates-io.protocol` docs (rust-lang/cargo#11350)
- test(features2): test to prevent regressing of optional host deps of dep (rust-lang/cargo#11342)
- Bump to 0.68.0, update changelog (rust-lang/cargo#11340)

r? ````@ghost````

19 months agoRollup merge of #104267 - notriddle:notriddle/checkbox, r=GuillaumeGomez
Dylan DPC [Sat, 12 Nov 2022 06:32:53 +0000 (12:02 +0530)]
Rollup merge of #104267 - notriddle:notriddle/checkbox, r=GuillaumeGomez

rustdoc: use checkbox instead of switch for settings toggles

Preview: http://notriddle.com/notriddle-rustdoc-demos/checkbox/test_dingus/index.html

## Before

![image](https://user-images.githubusercontent.com/1593513/201232887-dee27ef5-b091-49bb-be4a-103d2e7983f3.png)

## After

![image](https://user-images.githubusercontent.com/1593513/201232835-95b40b77-6535-4280-8719-44c992a07772.png)

## Description

The switch ("slider") is designed to give the application a "physical" feel, but nothing else in here really followed through. They didn't support the "flick" gesture that real iOS switches support, and the radio buttons that were also used in Rustdoc Settings were a more "classic" form element anyway.

Also, while switches are the exclusive toggle design on iOS (since [Apple HIG] reserves checkboxes for Mac only), the [Google Material] guidelines say that lists of switches are bad, and you should just use check boxes.

[Apple HIG]: https://developer.apple.com/design/human-interface-guidelines/components/selection-and-input/toggles
[Google Material]: https://m3.material.io/components/checkbox/guidelines#6902f23d-ceba-4b19-ae3b-b78b9b01d185

19 months agoRollup merge of #104214 - Nilstrieb:returns_impl_Ice, r=compiler-errors
Dylan DPC [Sat, 12 Nov 2022 06:32:52 +0000 (12:02 +0530)]
Rollup merge of #104214 - Nilstrieb:returns_impl_Ice, r=compiler-errors

Emit error in `collecting_trait_impl_trait_tys` on mismatched signatures

Previously, a `delay_span_bug` was isssued, failing normalization. This create a `TyKind::Error` in the signature, which caused `compare_predicate_entailment` to swallow its signature mismatch error, causing ICEs because no error was emitted.

fixes #104183

r? ``@compiler-errors``

19 months agoRollup merge of #104206 - compiler-errors:ocx-more-2, r=lcnr
Dylan DPC [Sat, 12 Nov 2022 06:32:52 +0000 (12:02 +0530)]
Rollup merge of #104206 - compiler-errors:ocx-more-2, r=lcnr

Remove `save_and_restore_in_snapshot_flag`, use `ObligationCtxt` more

r? ```@lcnr```

19 months agoRollup merge of #103970 - oli-obk:unhide_unknown_spans, r=estebank
Dylan DPC [Sat, 12 Nov 2022 06:32:51 +0000 (12:02 +0530)]
Rollup merge of #103970 - oli-obk:unhide_unknown_spans, r=estebank

Unhide unknown spans

r? ```@estebank```

19 months agoRollup merge of #102049 - fee1-dead-contrib:derive_const, r=oli-obk
Dylan DPC [Sat, 12 Nov 2022 06:32:50 +0000 (12:02 +0530)]
Rollup merge of #102049 - fee1-dead-contrib:derive_const, r=oli-obk

Add the `#[derive_const]` attribute

Closes #102371. This is a minimal patchset for the attribute to work. There are no restrictions on what traits this attribute applies to.

r? `````@oli-obk`````

19 months agoRemove the old `ValidAlign` name
Scott McMurray [Sat, 12 Nov 2022 05:44:27 +0000 (21:44 -0800)]
Remove the old `ValidAlign` name

Since it looks like there won't be any reverts needed in `Layout`, finish off this change.

19 months agoAuto merge of #103530 - cjgillot:hir-lifetimes-direct, r=estebank
bors [Sat, 12 Nov 2022 05:22:17 +0000 (05:22 +0000)]
Auto merge of #103530 - cjgillot:hir-lifetimes-direct, r=estebank

Resolve lifetimes independently for each item-like.

Now that the heavy-lifting is done on the AST and during lowering, we do not need to perform HIR lifetime resolution on a full item at once.  Instead, we can treat each item-like independently, and look at `generics_of` the parent exceptionally for associated items.

19 months agoAuto merge of #103150 - joboet:remove_lock_wrappers, r=m-ou-se
bors [Sat, 12 Nov 2022 01:31:39 +0000 (01:31 +0000)]
Auto merge of #103150 - joboet:remove_lock_wrappers, r=m-ou-se

Remove lock wrappers in `sys_common`

This moves the lazy allocation to `sys` (SGX and UNIX). While this leads to a bit more verbosity, it will simplify future improvements by making room in `sys_common` for platform-independent implementations.

This also removes the condvar check on SGX as it is not necessary for soundness and will be removed anyway once mutex has been made movable.

For simplicity's sake, `libunwind` also uses lazy allocation now on SGX. This will require an update to the C definitions before merging this (CC `@raoulstrackx).`

r? `@m-ou-se`

19 months agoUI tests can be assigned to T-compiler
Michael Goulet [Fri, 11 Nov 2022 22:16:14 +0000 (22:16 +0000)]
UI tests can be assigned to T-compiler

19 months agoUpdate cargo
Weihang Lo [Fri, 11 Nov 2022 22:07:29 +0000 (22:07 +0000)]
Update cargo

9 commits in 9286a1beba5b28b115bad67de2ae91fb1c61eb0b..a3dfea71ca0c888a88111086898aa833c291d497
2022-11-04 06:41:49 +0000 to 2022-11-11 03:50:47 +0000
- fix: return non UTF-8 error message (rust-lang/cargo#11321)
- Extract `two_kinds_of_msg_format_err` message to de-duplicate it (rust-lang/cargo#11358)
- Propagate change of artifact bin dep to its parent fingerprint (rust-lang/cargo#11353)
- Fix not a hyperlink warnings (rust-lang/cargo#11357)
- Fix wait-for-publish with sparse registry (rust-lang/cargo#11356)
- Add `rm` alias to configuration docs (rust-lang/cargo#11351)
- Add `registries.crates-io.protocol` docs (rust-lang/cargo#11350)
- test(features2): test to prevent regressing of optional host deps of dep (rust-lang/cargo#11342)
- Bump to 0.68.0, update changelog (rust-lang/cargo#11340)

19 months agoAuto merge of #104293 - Manishearth:rollup-xj92d0k, r=Manishearth
bors [Fri, 11 Nov 2022 20:11:07 +0000 (20:11 +0000)]
Auto merge of #104293 - Manishearth:rollup-xj92d0k, r=Manishearth

Rollup of 8 pull requests

Successful merges:

 - #95292 (Allow specialized const trait impls.)
 - #100386 (Make `Sized` coinductive, again)
 - #102215 (Implement the `+whole-archive` modifier for `wasm-ld`)
 - #103468 (Fix unused lint and parser caring about spaces to won't produce invalid code)
 - #103531 (Suggest calling the instance method of the same name when method not found)
 - #103960 (piece of diagnostic migrate)
 - #104051 (update Miri)
 - #104129 (rustdoc: use javascript to layout notable traits popups)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

19 months agoSkip stable hashing without incremental.
Camille GILLOT [Fri, 11 Nov 2022 20:03:33 +0000 (20:03 +0000)]
Skip stable hashing without incremental.

19 months agoAuto merge of #104289 - Dylan-DPC:rollup-v7wei2t, r=Dylan-DPC
bors [Fri, 11 Nov 2022 17:29:10 +0000 (17:29 +0000)]
Auto merge of #104289 - Dylan-DPC:rollup-v7wei2t, r=Dylan-DPC

Rollup of 9 pull requests

Successful merges:

 - #100633 (Consider `#[must_use]` annotation on `async fn` as also affecting the `Future::Output`)
 - #103445 (`#[test]`: Point at return type if `Termination` bound is unsatisfied)
 - #103924 (Fix broken link in description of error code E0706)
 - #104146 (Retry binding TCP Socket in remote-test-server)
 - #104169 (Migrate `:target` rules to use CSS variables)
 - #104202 (Fix ICE #103748)
 - #104216 (Don't ICE on operator trait methods with generic methods)
 - #104217 (Display help message when fluent arg was referenced incorrectly)
 - #104245 (Reduce default configuration's dependency upon static libstdcpp library (#103606))

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

19 months agoRollup merge of #104129 - notriddle:notriddle/102576-js-notable-trait, r=Manishearth
Manish Goregaokar [Fri, 11 Nov 2022 17:12:31 +0000 (12:12 -0500)]
Rollup merge of #104129 - notriddle:notriddle/102576-js-notable-trait, r=Manishearth

rustdoc: use javascript to layout notable traits popups

Fixes #102576

Preview: https://notriddle.com/notriddle-rustdoc-demos/102576-js-notable-trait/std/iter/trait.Iterator.html#method.step_by

## Before

![image](https://user-images.githubusercontent.com/1593513/200432713-23aa8d49-ba2b-469f-9eab-089e0c174039.png)

## After

![image](https://user-images.githubusercontent.com/1593513/200432735-edd5b53d-e99d-4fc5-9410-8a79e0efdc9d.png)

19 months agoRollup merge of #104051 - RalfJung:miri, r=RalfJung
Manish Goregaokar [Fri, 11 Nov 2022 17:12:31 +0000 (12:12 -0500)]
Rollup merge of #104051 - RalfJung:miri, r=RalfJung

update Miri

Notable PRs:
- https://github.com/rust-lang/miri/pull/2636
- https://github.com/rust-lang/miri/pull/2641
- https://github.com/rust-lang/miri/pull/2638

19 months agoRollup merge of #103960 - AndyJado:var_path_only_diag, r=davidtwco
Manish Goregaokar [Fri, 11 Nov 2022 17:12:30 +0000 (12:12 -0500)]
Rollup merge of #103960 - AndyJado:var_path_only_diag, r=davidtwco

piece of diagnostic migrate

r? `@davidtwco`

19 months agoRollup merge of #103531 - chenyukang:yukang/fix-103474, r=estebank
Manish Goregaokar [Fri, 11 Nov 2022 17:12:30 +0000 (12:12 -0500)]
Rollup merge of #103531 - chenyukang:yukang/fix-103474, r=estebank

Suggest calling the instance method of the same name when method not found

Fixes #103474

19 months agoRollup merge of #103468 - chenyukang:yukang/fix-103435-extra-parentheses, r=estebank
Manish Goregaokar [Fri, 11 Nov 2022 17:12:29 +0000 (12:12 -0500)]
Rollup merge of #103468 - chenyukang:yukang/fix-103435-extra-parentheses, r=estebank

Fix unused lint and parser caring about spaces to won't produce invalid code

Fixes #103435

19 months agoRollup merge of #102215 - alexcrichton:wasm-link-whole-archive, r=estebank
Manish Goregaokar [Fri, 11 Nov 2022 17:12:29 +0000 (12:12 -0500)]
Rollup merge of #102215 - alexcrichton:wasm-link-whole-archive, r=estebank

Implement the `+whole-archive` modifier for `wasm-ld`

This implements the `Linker::{link_whole_staticlib,link_whole_rlib}` methods for the `WasmLd` linker used on wasm targets. Previously these methods were noops since I think historically `wasm-ld` did not have support for `--whole-archive` but nowadays it does, so the flags are passed through.

19 months agoRollup merge of #100386 - compiler-errors:sized-coinductive-redux, r=lcnr
Manish Goregaokar [Fri, 11 Nov 2022 17:12:28 +0000 (12:12 -0500)]
Rollup merge of #100386 - compiler-errors:sized-coinductive-redux, r=lcnr

Make `Sized` coinductive, again

A revival of #83647

---

What exactly makes co-induction sound? Better question: are there any unsoundness risks from this? `Sized` can't be implemented by custom `impl` blocks, nor can it be conditionally implemented based on anything other than child fields being `Sized`, right?

r? `@nikomatsakis` for whenever he gets back from vacation

19 months agoRollup merge of #95292 - BGR360:const-trait-specialize, r=lcnr
Manish Goregaokar [Fri, 11 Nov 2022 17:12:27 +0000 (12:12 -0500)]
Rollup merge of #95292 - BGR360:const-trait-specialize, r=lcnr

Allow specialized const trait impls.

Fixes #95186.
Fixes #95187.

I've done my best to create a comprehensive test suite for the interaction between `min_specialization` and `const_trait_impls`. I wouldn't be surprised if there are interesting cases I haven't tested, please let me know.

19 months agorustdoc: fix HTML validation failure by escaping `data-ty`
Michael Howell [Fri, 11 Nov 2022 14:35:09 +0000 (07:35 -0700)]
rustdoc: fix HTML validation failure by escaping `data-ty`

19 months agorustdoc: add test cases for checkbox toggles
Michael Howell [Fri, 11 Nov 2022 16:57:58 +0000 (09:57 -0700)]
rustdoc: add test cases for checkbox toggles

19 months agoIntroduce `ExprKind::IncludedBytes`
clubby789 [Mon, 31 Oct 2022 18:30:09 +0000 (18:30 +0000)]
Introduce `ExprKind::IncludedBytes`

19 months agoAdd Tristan as maintainer
Florian Bartels [Fri, 11 Nov 2022 15:29:33 +0000 (16:29 +0100)]
Add Tristan as maintainer

19 months agoRollup merge of #104245 - kubycsolutions:master, r=jyn514
Dylan DPC [Fri, 11 Nov 2022 15:21:42 +0000 (20:51 +0530)]
Rollup merge of #104245 - kubycsolutions:master, r=jyn514

Reduce default configuration's dependency upon static libstdcpp library (#103606)

Fixes #103606

Remove default dependency on static libstdcpp except during dist llvm builds (where we want static libraries so `libLLVM.so` is self-contained).

19 months agoRollup merge of #104217 - Nilstrieb:funny-dollar-syntax, r=TaKO8Ki
Dylan DPC [Fri, 11 Nov 2022 15:21:41 +0000 (20:51 +0530)]
Rollup merge of #104217 - Nilstrieb:funny-dollar-syntax, r=TaKO8Ki

Display help message when fluent arg was referenced incorrectly

The fluent argument syntax is a little special and easy to get wrong, so we emit a small help message when someone gets it wrong.

Example:
```
parser_mismatched_closing_delimiter = mismatched closing delimiter: `${delimiter}`
```
panics with
```
thread 'rustc' panicked at 'Encountered errors while formatting message for `parser_mismatched_closing_delimiter`
help: Argument `delimiter` exists but was not referenced correctly. Try using `{$delimiter}` instead
attr: `None`
args: `FluentArgs([("delimiter", String("}"))])`
errors: `[ResolverError(Reference(Message { id: "delimiter", attribute: None }))]`', compiler/rustc_errors/src/translation.rs:123:21
```

fixes #103539

19 months agoRollup merge of #104216 - Nilstrieb:dont-ice-invalid-operator-traits, r=estebank
Dylan DPC [Fri, 11 Nov 2022 15:21:41 +0000 (20:51 +0530)]
Rollup merge of #104216 - Nilstrieb:dont-ice-invalid-operator-traits, r=estebank

Don't ICE on operator trait methods with generic methods

Emit a fatal error instead.
fixes #104213

19 months agoRollup merge of #104202 - camsteffen:103748, r=estebank
Dylan DPC [Fri, 11 Nov 2022 15:21:40 +0000 (20:51 +0530)]
Rollup merge of #104202 - camsteffen:103748, r=estebank

Fix ICE #103748

Fixes #103748

19 months agoRollup merge of #104169 - GuillaumeGomez:migrate-css-target, r=notriddle
Dylan DPC [Fri, 11 Nov 2022 15:21:40 +0000 (20:51 +0530)]
Rollup merge of #104169 - GuillaumeGomez:migrate-css-target, r=notriddle

Migrate `:target` rules to use CSS variables

There should be no GUI changes.

r? `@notriddle`

19 months agoRollup merge of #104146 - Ayush1325:remote-test-server, r=jyn514
Dylan DPC [Fri, 11 Nov 2022 15:21:39 +0000 (20:51 +0530)]
Rollup merge of #104146 - Ayush1325:remote-test-server, r=jyn514

Retry binding TCP Socket in remote-test-server

This allows retrying binding TCP Socket multiple times. This is useful when using emulators as network might not be available in the beginning.

This was orignally implemented in https://github.com/rust-lang/rust/pull/100316

Signed-off-by: Ayush Singh <ayushsingh1325@gmail.com>
19 months agoRollup merge of #103924 - PeteDevoy:patch-1, r=estebank
Dylan DPC [Fri, 11 Nov 2022 15:21:39 +0000 (20:51 +0530)]
Rollup merge of #103924 - PeteDevoy:patch-1, r=estebank

Fix broken link in description of error code E0706

Corresponding subsection in async book is `07.05` not `07.06`.

The information on the linked page is the same so it may be reasonable to remove the whole sentence.

19 months agoRollup merge of #103445 - fmease:fix-50291, r=estebank
Dylan DPC [Fri, 11 Nov 2022 15:21:38 +0000 (20:51 +0530)]
Rollup merge of #103445 - fmease:fix-50291, r=estebank

`#[test]`: Point at return type if `Termination` bound is unsatisfied

Together with #103142 (already merged) this fully fixes #50291.

I don't consider my current solution of changing a few spans “here and there” very clean since the\rfailed obligation is a `FunctionArgumentObligation` and we point at a type instead of a function argument.

If you agree with me on this point, I can offer to keep the spans of the existing nodes and instead inject\r`let _: AssertRetTyIsTermination<$ret_ty>;` (type to be defined in `libtest`) similar to `AssertParamIsEq` etc.\rused by some built-in derive-macros.

I haven't tried that approach yet though and cannot promise that it would actually work out or\rbe “cleaner” for that matter.

````@rustbot```` label A-libtest A-diagnostics
r? ````@estebank````

19 months agoRollup merge of #100633 - estebank:must_use_async_fn_return, r=tmandry
Dylan DPC [Fri, 11 Nov 2022 15:21:38 +0000 (20:51 +0530)]
Rollup merge of #100633 - estebank:must_use_async_fn_return, r=tmandry

Consider `#[must_use]` annotation on `async fn` as also affecting the `Future::Output`

No longer lint against `#[must_use] async fn foo()`.

When encountering a statement that awaits on a `Future`, check if the
`Future`'s parent item is annotated with `#[must_use]` and emit a lint
if so. This effectively makes `must_use` an annotation on the
`Future::Output` instead of only the `Future` itself.

Fix #78149.

19 months agoPrint all labels, even if they have no span. Fall back to main item's span.
Oli Scherer [Fri, 4 Nov 2022 16:04:47 +0000 (16:04 +0000)]
Print all labels, even if they have no span. Fall back to main item's span.

19 months agoDon't add message that will never be shown to users
Oli Scherer [Fri, 11 Nov 2022 14:45:18 +0000 (14:45 +0000)]
Don't add message that will never be shown to users

It will still be used in json, as seen by the ui test changes

19 months agoRemove some redundant arguments
Oli Scherer [Thu, 3 Nov 2022 17:06:41 +0000 (17:06 +0000)]
Remove some redundant arguments

19 months agoAuto merge of #102872 - mikebenfield:better-get-discr, r=nagisa
bors [Fri, 11 Nov 2022 13:50:32 +0000 (13:50 +0000)]
Auto merge of #102872 - mikebenfield:better-get-discr, r=nagisa

rustc_codegen_ssa: Better code generation for niche discriminants.

In some cases we can avoid arithmetic before checking whether a niche is a tag.

Also rename some identifiers around niches.

This is relevant to #101872

19 months agoUse the interned stable hash as plain hash.
Camille GILLOT [Fri, 11 Nov 2022 12:18:49 +0000 (12:18 +0000)]
Use the interned stable hash as plain hash.

19 months agoHash spans when interning.
Camille GILLOT [Fri, 11 Nov 2022 12:10:09 +0000 (12:10 +0000)]
Hash spans when interning.

19 months agoDo not rename bound variables when verbose-printing binders.
Camille GILLOT [Fri, 11 Nov 2022 12:10:53 +0000 (12:10 +0000)]
Do not rename bound variables when verbose-printing binders.

19 months agoTry another way
Albert Larsan [Fri, 11 Nov 2022 11:17:32 +0000 (12:17 +0100)]
Try another way

19 months agoClean-up formatting.
Camille GILLOT [Fri, 11 Nov 2022 10:32:49 +0000 (10:32 +0000)]
Clean-up formatting.

19 months agoVisit opaque types during type collection too.
Camille GILLOT [Fri, 11 Nov 2022 10:29:27 +0000 (10:29 +0000)]
Visit opaque types during type collection too.

19 months agoApply suggestions
Albert Larsan [Fri, 11 Nov 2022 09:53:58 +0000 (10:53 +0100)]
Apply suggestions

19 months agoResolve lifetimes using the regular logic for RPIT.
Camille GILLOT [Tue, 25 Oct 2022 16:10:19 +0000 (16:10 +0000)]
Resolve lifetimes using the regular logic for RPIT.

19 months agoResolve lifetimes independently for each item-like.
Camille GILLOT [Tue, 25 Oct 2022 15:08:20 +0000 (15:08 +0000)]
Resolve lifetimes independently for each item-like.

19 months agoTweak signatures in rustc_middle::hir::map.
Camille GILLOT [Tue, 25 Oct 2022 15:07:56 +0000 (15:07 +0000)]
Tweak signatures in rustc_middle::hir::map.

19 months agoAdd `nto` as known `target_os`
Florian Bartels [Wed, 5 Oct 2022 10:32:22 +0000 (12:32 +0200)]
Add `nto` as known `target_os`

19 months agoAdd no_std AArch64 support for the QNX Neutrino (nto) 7.1 RTOS
Florian Bartels [Mon, 5 Sep 2022 08:56:06 +0000 (10:56 +0200)]
Add no_std AArch64 support for the QNX Neutrino (nto) 7.1 RTOS

This change allows to compile no_std applications for the QNX Neutrino
realtime operating system for ARM 64 bit CPUs.
Tested with QNX Neutrino 7.1.

19 months agorustc_codegen_ssa: Better code generation for niche discriminants.
Michael Benfield [Mon, 10 Oct 2022 17:29:38 +0000 (17:29 +0000)]
rustc_codegen_ssa: Better code generation for niche discriminants.

In some cases we can avoid arithmetic before checking whether a niche
represents an untagged variant.

This is relevant to #101872

19 months agoAuto merge of #103898 - Nilstrieb:match-macro, r=nnethercote
bors [Fri, 11 Nov 2022 04:54:59 +0000 (04:54 +0000)]
Auto merge of #103898 - Nilstrieb:match-macro, r=nnethercote

Retry failed macro matching for diagnostics

When a declarative macro fails to match, retry the matching to collect diagnostic info instead of collecting it on the fly in the hot path. Split out of #103439.

You made a bunch of changes to declarative macro matching, so
r? `@nnethercote`

This change should produce a few small perf wins: https://github.com/rust-lang/rust/pull/103439#issuecomment-1294249602

19 months agoOops, bless this test.
Ben Reeves [Fri, 11 Nov 2022 04:14:08 +0000 (22:14 -0600)]
Oops, bless this test.

19 months agoFix tests after rebase
Esteban Küber [Fri, 11 Nov 2022 03:01:33 +0000 (19:01 -0800)]
Fix tests after rebase

19 months agoAuto merge of #99918 - WaffleLapkin:fnFnfun, r=estebank
bors [Fri, 11 Nov 2022 02:07:52 +0000 (02:07 +0000)]
Auto merge of #99918 - WaffleLapkin:fnFnfun, r=estebank

Recover wrong-cased keywords that start items

(_this pr was inspired by [this tweet](https://twitter.com/Azumanga/status/1552982326409367561)_)

r? `@estebank`

We've talked a bit about this recovery, but I just wanted to make sure that this is the right approach :)

For now I've only added the case insensitive recovery to `use`s, since most other items like `impl` blocks, modules, functions can start with multiple keywords which complicates the matter.

19 months agoreview comments
Esteban Küber [Wed, 17 Aug 2022 15:21:43 +0000 (08:21 -0700)]
review comments

19 months agoConsider `#[must_use]` annotation on `async fn` as also affecting the `Future::Output`
Esteban Küber [Tue, 16 Aug 2022 14:56:42 +0000 (07:56 -0700)]
Consider `#[must_use]` annotation on `async fn` as also affecting the `Future::Output`

No longer lint against `#[must_use] async fn foo()`.

When encountering a statement that awaits on a `Future`, check if the
`Future`'s parent item is annotated with `#[must_use]` and emit a lint
if so. This effectively makes `must_use` an annotation on the
`Future::Output` instead of only the `Future` itself.

Fix #78149.

19 months agoTweak span for `#[must_use]`
Esteban Küber [Tue, 16 Aug 2022 14:46:33 +0000 (07:46 -0700)]
Tweak span for `#[must_use]`

Do not point at whole statement, only at the expression (skip pointing at `;`)

19 months agoemit errors when using `RangeFrom` and `RangeTo`
Takayuki Maeda [Wed, 9 Nov 2022 22:24:22 +0000 (07:24 +0900)]
emit errors when using `RangeFrom` and `RangeTo`

19 months agoavoid unnecessary `format!`
Takayuki Maeda [Tue, 8 Nov 2022 10:45:48 +0000 (19:45 +0900)]
avoid unnecessary `format!`

19 months agosuggest removing unnecessary . to use a floating point literal
Takayuki Maeda [Tue, 8 Nov 2022 10:45:41 +0000 (19:45 +0900)]
suggest removing unnecessary . to use a floating point literal

19 months agoAvoid runtime dependency on static libstdc++
kubycsolutions [Wed, 9 Nov 2022 22:26:25 +0000 (17:26 -0500)]
Avoid runtime dependency on static libstdc++

Usually, we do want to use the static C++ library when building rustc_llvm, but do not want to have that dependency at compiler runtime. Change the defaults to Make It So.

19 months agorustdoc: use checkbox instead of switch for settings toggles
Michael Howell [Thu, 10 Nov 2022 23:51:14 +0000 (16:51 -0700)]
rustdoc: use checkbox instead of switch for settings toggles

The switch is designed to give the application a "physical" feel, but
nothing else in here really followed through. They didn't support the
"flick" gesture that real iOS switches support, and the radio
buttons that were also used in Rustdoc Settings were a more "classic"
form element anyway.

Also, while "switches" are the exclusive toggle design on iOS (since
[Apple HIG] reserves checkboxes for Mac only), the [Google Material]
guidelines say that lists of switches are bad, and you should just use
check boxes.

[Apple HIG]: https://developer.apple.com/design/human-interface-guidelines/components/selection-and-input/toggles
[Google Material]: https://m3.material.io/components/checkbox/guidelines#6902f23d-ceba-4b19-ae3b-b78b9b01d185

19 months agoAdd a reference to ilog2 in leading_zeros integer docs
Albert Larsan [Thu, 10 Nov 2022 21:26:10 +0000 (22:26 +0100)]
Add a reference to ilog2 in leading_zeros integer docs

Asked in #104248

19 months agoMore nits
Michael Goulet [Thu, 10 Nov 2022 21:29:20 +0000 (21:29 +0000)]
More nits

19 months agobless tests
Michael Goulet [Wed, 10 Aug 2022 16:47:26 +0000 (16:47 +0000)]
bless tests