Commit Graph

17597 Commits

Author SHA1 Message Date
Aaron Kofsky
30e8adb1a7 Use has_attr instead of get_attrs in has_must_use_attr 2022-06-04 20:16:56 -04:00
Aaron Kofsky
a7e2b3e879 Move local functions to outer scope. 2022-06-04 19:52:12 -04:00
cole
f3d93b6c62 Allow unstable items to be re-exported unstably without requiring the feature be enabled 2022-06-04 17:05:33 -05:00
Matthias Krüger
1794309e0a Rollup merge of #97737 - jackh726:verbose-pretty-printing-fix, r=compiler-errors
Fix pretty printing named bound regions under -Zverbose

Fixed regression introduced in #97023

r? `@compiler-errors`

cc `@cjgillot`
2022-06-04 23:42:04 +02:00
Matthias Krüger
01453219de Rollup merge of #97707 - Nilstrieb:data-structures-ub, r=cjgillot
Improve soundness of rustc_data_structures

Make it runnable in miri by adding some ignores and changing N in miri. Also fix a stacked borrows issue in sip128.
2022-06-04 23:42:02 +02:00
Matthias Krüger
326315bf54 Rollup merge of #97609 - Elliot-Roberts:unused-trait-refactor, r=cjgillot
Iterate over `maybe_unused_trait_imports` when checking dead trait imports

Closes #96873
r? `@cjgillot`

Some questions, if you have time:

- Is there a way to shorten the `rustc_data_structures::fx::FxIndexSet` path in the query declaration? I wasn't sure where to put a `use`.
- Was returning by reference from the query the right choice here?
- How would I go about evaluating the importance of the `is_dummy()` call in `check_crate`? I don't see failing tests when I comment it out. Should I just try to determine whether dummy spans can ever be put into `maybe_unused_trait_imports`?
- Am I doing anything silly with the various ID types?
- Is that `let-else` with `unreachable!()` bad? (i.e is there a better idiom? Would `panic!("<explanation>")` be better?)
- If I want to evaluate the perf of using a `Vec` as mentioned in #96873, is the best way to use the CI or is it feasible locally?

Thanks :)
2022-06-04 23:42:00 +02:00
Jack Huey
dd38fecb78 Fix pretty printing named bound regions under -Zverbose 2022-06-04 17:32:27 -04:00
Aaron Kofsky
6b179e3a67 Set let_underscore_lock to Deny by default.
Clippy sets this lint to Deny by default, and it having the lint be Deny
is useful for when we test the lint against a Crater run.
2022-06-04 16:47:21 -04:00
Ralf Jung
467e0f4446 use precise spans for recursive const evaluation 2022-06-04 16:18:03 -04:00
Ralf Jung
9ab4f876a1 const_prop_lint: ensure we have up-to-date cur_span() 2022-06-04 15:59:24 -04:00
Ralf Jung
7892e1cedb Move statement_index increment out of statement() function
That function is called by const_prop, where updating the index like that is totally meaningless.
2022-06-04 15:59:24 -04:00
Elliot Roberts
76c6845a85 Iterate over maybe_unused_trait_imports when checking dead trait imports 2022-06-04 12:38:55 -07:00
Aaron Kofsky
eba6c789dc Show code suggestions in let_undescore lint messages.
This commit uses `span_suggestion_verbose` to add what specific code
changes can be done as suggested by the lint--in this case, either binding
the expression to an unused variable or using `std::mem::drop` to drop
the value explicitly.
2022-06-04 15:35:13 -04:00
Aaron Kofsky
ae2ac3b4c5 Allow let_underscore_drop and let_underscore_must_use by default.
These lints are very noisy and are allow-by-default in clippy anyways.
Hence, setting them to allow-by-default here makes more sense than
warning constantly on these cases.
2022-06-04 15:35:11 -04:00
Aaron Kofsky
758a9fd0f9 Add let_underscore_must_use lint.
Similar to `let_underscore_drop`, this lint checks for statements similar
to `let _ = foo`, where `foo` is an expression marked `must_use`.
2022-06-04 15:35:08 -04:00
Aaron Kofsky
ad7587fedc Add let_underscore_lock lint.
Similar to `let_underscore_drop`, this lint checks for statements similar
to `let _ = foo`, where `foo` is a lock guard. These types of let
statements are especially problematic because the lock gets released
immediately, instead of at the end of the scope. This behavior is almost
always the wrong thing.
2022-06-04 15:34:02 -04:00
Chase Wilson
ba2f14e065 Fixed premature assertions that caused -Z randomize-layout to fail on alloc 2022-06-04 12:33:01 -05:00
Nilstrieb
7e3bee6d8e Fix stacked borrows invalidation in rustc_data_structures sip128
It creates the src pointer first, which is then invalidated by a
unique borrow of the destination pointer. Swap the borrows around
to fix this. Found with miri.
2022-06-04 17:46:36 +02:00
Nilstrieb
fc8b13cb96 Adapt rustc_data_structures tests to run in strict miri
Some tests took too long and owning_ref is fundamentally flawed,
so don't run these tests or run them with a shorter N. This makes
miri with `-Zmiri-strict-provenance` usable to find UB.
2022-06-04 17:46:29 +02:00
Ralf Jung
9e00fb0d89 tweak some bug!s 2022-06-04 11:15:36 -04:00
Camille GILLOT
af8739b96e Completely remove LifetimeScopeForPath. 2022-06-04 15:33:27 +02:00
Camille GILLOT
a07290047e Compute lifetimes in scope at diagnostic time. 2022-06-04 15:28:15 +02:00
Sean Cross
9f6e6872c2 riscv32imac-unknown-xous-elf: add target
Xous is a microkernel operating system designed to run on small systems.
The kernel contains a wide range of userspace processes that provide
common services such as console output, networking, and time access.

The kernel and its services are completely written in Rust using a
custom build of libstd. This adds support for this target to upstream
Rust so that we can drop support for our out-of-tree `target.json` file.

Add a Tier 3 target for Xous running on RISC-V.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-06-04 18:47:27 +08:00
Dylan DPC
8c4c698efb Rollup merge of #97722 - compiler-errors:tighten-copy-type-error-spans, r=Dylan-DPC
Tighten spans for bad fields in struct deriving `Copy`

r? `@estebank`

Closes #89137 for good, I think

Not sure if this is what you were looking for in https://github.com/rust-lang/rust/issues/89137#issuecomment-1146201791
2022-06-04 11:06:42 +02:00
Dylan DPC
9917f3816a Rollup merge of #97716 - compiler-errors:issue-97708, r=wesleywiser
Fix reachability analysis for const methods

Use `method_might_be_inlined` directly for `ImplItemKind::Fn` instead of duplicating the logic in `def_id_represents_local_inlined_item`.

This is parallel to how we use `item_might_be_inlined` for `ItemKind::Fn` in that same body.

Fixes #97708
2022-06-04 11:06:42 +02:00
Dylan DPC
9c794b46cf Rollup merge of #97715 - xFrednet:97650-expect-in-fuction-arg, r=wesleywiser
Support the `#[expect]` attribute on fn parameters (RFC-2383)

A small PR to allow the `#[expect]` attribute on function parameters.

Nothing more to say, I hope everyone reading this has a lovely day.

---

r? ``@wesleywiser``

closes: https://github.com/rust-lang/rust/issues/97650

cc: https://github.com/rust-lang/rust/issues/85549
2022-06-04 11:06:41 +02:00
Michael Goulet
4c6a6bc3f9 Tighten spans for bad fields in Copy struct 2022-06-03 19:17:12 -07:00
bors
c3384ea35c Auto merge of #97717 - matthiaskrgr:rollup-lalaii2, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #97446 (Make hir().get_generics and generics_of consistent.)
 - #97656 (Add a suggestion to replace parentheses with angle brackets on associated trait constraint)
 - #97692 (Add `#T-types/nominated` zulip notification)
 - #97696 (Do not ICE when failing to normalize during inlining.)
 - #97702 (Remove useless LocalDefId in ImplTraitContext::Universal.)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-06-04 02:10:35 +00:00
Michael Goulet
15cccb97d6 Encode MIR for 'unreachable' non-generic fns 2022-06-03 17:39:10 -07:00
bors
f15370b4e4 Auto merge of #97670 - spastorino:simplify-universal-impl-trait-lowering2, r=Dylan-DPC
Make params be SmallVec as originally was

r? `@cjgillot`
It was originally a [`SmallVec`](https://github.com/rust-lang/rust/pull/97598/files#diff-0a61b538a3cec072c76fecae4635af6a12ec3256860029ac70549c2aa53ab394L1497), I've mistakenly changed it [here](https://github.com/rust-lang/rust/pull/97598/files#diff-0a61b538a3cec072c76fecae4635af6a12ec3256860029ac70549c2aa53ab394R1377) to a `Vec`
2022-06-03 23:29:30 +00:00
xFrednet
b5eee17088 Support the #[expect] attribute on fn parameters (RFC-2383) 2022-06-04 00:50:45 +02:00
xFrednet
157e68d01b Fix delayed_good_path_bug ice for expected diagnostics (RFC 2383) 2022-06-04 00:43:24 +02:00
Matthias Krüger
a88d94b072 Rollup merge of #97702 - cjgillot:no-universal-did, r=spastorino
Remove useless LocalDefId in ImplTraitContext::Universal.
2022-06-04 00:42:52 +02:00
Matthias Krüger
74f0bcc9c7 Rollup merge of #97696 - cjgillot:normalize-inline, r=compiler-errors
Do not ICE when failing to normalize during inlining.

Fixes https://github.com/rust-lang/rust/issues/97695
2022-06-04 00:42:51 +02:00
Matthias Krüger
401be78f2c Rollup merge of #97656 - EdwinRy:error_ast_low_type_contraint_parentheses, r=cjgillot
Add a suggestion to replace parentheses with angle brackets on associated trait constraint

This implements a requested suggestion FIXME in [`compiler/rustc_ast_lowering/src/lib.rs` ](9598b4b594/compiler/rustc_ast_lowering/src/lib.rs (L921))

The suggestion asks for the parentheses to either be replaced with angle brackets or removed completely depending on whether there are arguments provided within.

![image](https://user-images.githubusercontent.com/20026256/171770414-ab60bfe2-ae27-44b0-964d-9ffcc32a7475.png)

![image](https://user-images.githubusercontent.com/20026256/171770383-ca8a2766-b3aa-43e3-8ba4-ae18874886ce.png)

r? `@oli-obk`
2022-06-04 00:42:50 +02:00
Jack Huey
410dcc9674 Fully stabilize NLL 2022-06-03 17:16:41 -04:00
Camille GILLOT
623ea5f5d2 Make hir().get_generics and generics_of consistent. 2022-06-03 23:07:04 +02:00
Camille GILLOT
bacd8adeda Fail gracefully when encountering an HRTB in APIT. 2022-06-03 22:50:14 +02:00
Nilstrieb
907ea55841 Adapt tests to be able to run in miri
Decrease the Ns of bug loops to a smaller N, which
makes them a lot faster in miri.
2022-06-03 22:46:01 +02:00
Michael Goulet
27af8e4585 Normalize consts' tys when relating with adt_const_params 2022-06-03 13:14:23 -07:00
Camille GILLOT
4120080d66 Remove useless LocalDefId in ImplTraitContext::Universal. 2022-06-03 20:17:12 +02:00
bors
7e9b92cb43 Auto merge of #85993 - bjorn3:serde_json, r=wesleywiser
Remove all json handling from rustc_serialize

Json is now handled using serde_json. Where appropriate I have replaced json usage with binary serialization (rmeta files) or manual string formatting (emcc linker arg generation).

This allowed for removing and simplifying a lot of code, which hopefully results in faster serialization/deserialization and faster compiles of rustc itself.

Where sensible we now use serde. Metadata and incr cache serialization keeps using a heavily modified (compared to crates.io) rustc-serialize version that in the future could probably be extended with zero-copy deserialization or other perf tricks that serde can't support due to supporting more than one serialization format.

Note that I had to remove `-Zast-json` and `-Zast-json-noexpand` as the relevant AST types don't implement `serde::Serialize`.

Fixes #40177

See also https://github.com/rust-lang/compiler-team/issues/418
2022-06-03 17:55:02 +00:00
Camille GILLOT
2e301c89c7 Do not ICE when failing to normalize during inlining. 2022-06-03 19:03:18 +02:00
bjorn3
5cc3593c17 Fix emscripten linker invocation 2022-06-03 17:02:14 +00:00
bjorn3
7381ea019c Remove emit_unit
It doesn't do anything for all encoders
2022-06-03 17:02:14 +00:00
bjorn3
22e8d5f80e Inline many methods of Encoder
They aren't overridden anyway
2022-06-03 17:01:53 +00:00
Nikolai Vazquez
24b1b7c8a8 Fix unsized field order 2022-06-03 12:58:36 -04:00
bjorn3
5cd29225a5 Remove all names from Encoder
They aren't used anymore now that the json format has been removed
2022-06-03 16:56:17 +00:00
bjorn3
ede5ac251c Remove json support from rustc_serialize 2022-06-03 16:46:20 +00:00
bjorn3
15e0d8bdb1 Remove support for -Zast-json and -Zast-json-noexpand 2022-06-03 16:46:20 +00:00