Nicholas Nethercote
22379bd9db
Use &'hir Mod
everywhere.
...
For consistency, and because it makes HIR measurement simpler and more
accurate.
2022-08-29 06:35:14 +10:00
Nicholas Nethercote
a847d5e4ce
Use &'hir Ty
everywhere.
...
For consistency, and because it makes HIR measurement simpler and more
accurate.
2022-08-29 06:35:14 +10:00
Nicholas Nethercote
db35b685a7
Use &'hir Expr
everywhere.
...
For consistency, and because it makes HIR measurement simpler and more
accurate.
2022-08-29 06:35:14 +10:00
Nicholas Nethercote
854219d2ad
Expand the HIR (and AST) size assertions.
2022-08-29 06:35:14 +10:00
Yuki Okushi
76dd5c58a0
Remove register_attr
feature
...
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-08-28 21:23:23 +09:00
Camille GILLOT
20012ea4eb
Merge implementations of HIR fn_decl and fn_sig.
2022-08-26 21:38:20 +02:00
Nathan Stocks
82d609c8df
have LangItemError derive everything LangItem does
2022-08-25 11:06:45 -06:00
Nathan Stocks
30c7506655
allow non-monomorphize modules to access hard-coded error message through new struct, use fluent message in monomorphize
2022-08-25 11:06:45 -06:00
Jack Wrenn
f46fffc276
safe transmute: use Assume
struct to provide analysis options
...
This was left as a TODO in #92268 , and brings the trait more in
line with what was defined in MCP411.
`Assume::visibility` has been renamed to `Assume::safety`, as
library safety is what's actually being assumed; visibility is
just the mechanism by which it is currently checked (this may
change).
ref: https://github.com/rust-lang/compiler-team/issues/411
ref: https://github.com/rust-lang/rust/issues/99571
2022-08-22 18:37:54 +00:00
5225225
09ea9f0a87
Add diagnostic translation lints to crates that don't emit them
2022-08-18 19:29:02 +01:00
Dylan DPC
2e78db3858
Rollup merge of #100610 - nnethercote:ast-and-parser-tweaks, r=spastorino
...
Ast and parser tweaks
r? `@spastorino`
2022-08-16 18:16:13 +05:30
bors
ef9810a3e2
Auto merge of #100237 - cjgillot:no-special-hash-hir, r=nagisa
...
Remove manual implementations of HashStable for hir::Expr and hir::Ty.
We do not need to force hashing HIR bodies inside those nodes. The contents of bodies are not accessible from the `hir_owner` query which used `hash_without_bodies`. When the content of a body is required, the access is still done using `hir_owner_nodes`, which continues hashing HIR bodies.
2022-08-16 02:32:47 +00:00
Nicholas Nethercote
3e04fed6fa
Remove {ast,hir}::WhereEqPredicate::id
.
...
These fields are unused.
2022-08-16 12:13:23 +10:00
Eric Huss
dcd5177fd4
Add visitors for PatField and ExprField.
...
This helps simplify the code. It also fixes it to use the correct parent
when lowering. One consequence is the `non_snake_case` lint needed
to change the way it looked for parent nodes in a struct pattern.
This also includes a small fix to use the correct `Target` for
expression field attribute validation.
2022-08-11 21:48:39 -07:00
Eric Huss
b651c1cebe
Check attributes on struct expression fields.
...
Attributes on struct expression fields were not being checked for
validity. This adds the fields as HIR nodes so that `CheckAttrVisitor`
can visit those nodes to check their attributes.
2022-08-11 21:48:39 -07:00
Eric Huss
1b464c73b7
Check attributes on pattern fields.
...
Attributes on pattern struct fields were not being checked for validity.
This adds the fields as HIR nodes so that the `CheckAttrVisitor` can
visit those nodes to check their attributes.
2022-08-11 21:48:39 -07:00
Matthias Krüger
8237efc52d
Rollup merge of #100392 - nnethercote:simplify-visitors, r=cjgillot
...
Simplify visitors
By removing some unused arguments.
r? `@cjgillot`
2022-08-11 22:53:08 +02:00
Nicholas Nethercote
b8b851f42e
Simplify rustc_hir::intravisit::Visitor::visit_enum_def
.
...
It is passed an argument that is never used.
2022-08-11 11:10:03 +10:00
Nicholas Nethercote
8c5303898e
Simplify rustc_hir::intravisit::Visitor::visit_variant_data
.
...
It has four arguments that are never used. This avoids lots of argument
passing in functions that feed into `visit_variant_data`.
2022-08-11 10:54:01 +10:00
Nicholas Nethercote
574ba831d4
Avoid repeating qualifiers on static_assert_size
calls.
...
Some of these don't need a `use` statement because there is already a
`#[macro_use] extern crate rustc_data_structures` item in the crate.
2022-08-10 11:51:21 +10:00
Michael Goulet
6b2eab2310
Add Tuple marker trait
2022-08-07 16:28:24 -07:00
Camille GILLOT
8a4cbcf220
Derive HashStable for HIR Expr and Ty.
2022-08-07 17:30:45 +02:00
Matthias Krüger
f8e6617239
Rollup merge of #100029 - hdelc:master, r=cjgillot
...
Prevent ICE for `doc_alias` on match arm, statement, expression
Fixes #99777 .
This is a pretty minimal fix that should be safe, since rustdoc doesn't generate documentation for match arms, statements, or expressions. I mentioned in the linked issue that the `doc_alias` target checking should probably be improved to avoid future ICEs, but as a new contributor, I'm not confident enough with the HIR types to make a larger change.
2022-08-03 22:29:31 +02:00
hdelc
2be00947bf
Add items to DocAliasBadLocation
check error match arm
...
- Added `Impl`, `Closure`, ForeignMod` targets
- `Target::name` changed for `Target::Impl`
- Error output for `Target::ForeignMod` changed to "foreign module"
2022-08-02 23:11:22 -04:00
bors
e4417cf020
Auto merge of #92268 - jswrenn:transmute, r=oli-obk
...
Initial implementation of transmutability trait.
*T'was the night before Christmas and all through the codebase, not a miri was stirring — no hint of `unsafe`!*
This PR provides an initial, **incomplete** implementation of *[MCP 411: Lang Item for Transmutability](https://github.com/rust-lang/compiler-team/issues/411 )*. The `core::mem::BikeshedIntrinsicFrom` trait provided by this PR is implemented on-the-fly by the compiler for types `Src` and `Dst` when the bits of all possible values of type `Src` are safely reinterpretable as a value of type `Dst`.
What this PR provides is:
- [x] [support for transmutations involving primitives](https://github.com/jswrenn/rust/tree/transmute/src/test/ui/transmutability/primitives )
- [x] [support for transmutations involving arrays](https://github.com/jswrenn/rust/tree/transmute/src/test/ui/transmutability/arrays )
- [x] [support for transmutations involving structs](https://github.com/jswrenn/rust/tree/transmute/src/test/ui/transmutability/structs )
- [x] [support for transmutations involving enums](https://github.com/jswrenn/rust/tree/transmute/src/test/ui/transmutability/enums )
- [x] [support for transmutations involving unions](https://github.com/jswrenn/rust/tree/transmute/src/test/ui/transmutability/unions )
- [x] [support for weaker validity checks](https://github.com/jswrenn/rust/blob/transmute/src/test/ui/transmutability/unions/should_permit_intersecting_if_validity_is_assumed.rs ) (i.e., `Assume::VALIDITY`)
- [x] visibility checking
What isn't yet implemented:
- [ ] transmutability options passed using the `Assume` struct
- [ ] [support for references](https://github.com/jswrenn/rust/blob/transmute/src/test/ui/transmutability/references.rs )
- [ ] smarter error messages
These features will be implemented in future PRs.
2022-08-02 21:17:31 +00:00
hdelc
1e8abe7da2
Make Target::name
method pass by copy
2022-08-02 16:30:09 -04:00
hdelc
6b37a79581
Refactor Display
impl for Target
to Target::name
method
2022-08-02 09:41:32 -04:00
Camille GILLOT
212a06ee69
Match on TraitItem exhaustively.
2022-08-01 21:39:59 +02:00
Camille GILLOT
110f0656cb
Store associated item defaultness in impl_defaultness.
2022-08-01 21:38:16 +02:00
Matthias Krüger
e6bb00fff5
Rollup merge of #100003 - nnethercote:improve-size-assertions, r=lqd
...
Improve size assertions.
- For any file with four or more size assertions, move them into a
separate module (as is already done for `hir.rs`).
- Add some more for AST nodes and THIR nodes.
- Put the `hir.rs` ones in alphabetical order.
r? `@lqd`
2022-08-01 16:49:33 +02:00
Goldstein
d9f28b7b70
fix ICE in Definitions::create_def
2022-08-01 16:15:55 +03:00
Nicholas Nethercote
9037ebba0c
Improve size assertions.
...
- For any file with four or more size assertions, move them into a
separate module (as is already done for `hir.rs`).
- Add some more for AST nodes and THIR nodes.
- Put the `hir.rs` ones in alphabetical order.
2022-08-01 09:15:05 +10:00
Jack Wrenn
bc4a1dea41
Initial (incomplete) implementation of transmutability trait.
...
This initial implementation handles transmutations between types with specified layouts, except when references are involved.
Co-authored-by: Igor null <m1el.2027@gmail.com>
2022-07-27 17:33:56 +00:00
Camille GILLOT
10be0dd8df
Replace LifetimeRes::Anonymous by LifetimeRes::Infer.
2022-07-26 19:00:31 +02:00
Camille GILLOT
ab63591f00
Remove the distinction between LifetimeName::Implicit and LifetimeName::Underscore.
2022-07-26 19:00:31 +02:00
bors
6dbae3ad19
Auto merge of #97313 - cjgillot:ast-lifetimes-anon, r=petrochenkov
...
Resolve function lifetime elision on the AST
~Based on https://github.com/rust-lang/rust/pull/97720~
Lifetime elision for functions is purely syntactic in nature, so can be resolved on the AST.
This PR replicates the elision logic and diagnostics on the AST, and replaces HIR-based resolution by a `delay_span_bug`.
This refactor allows for more consistent diagnostics, which don't have to guess the original code from HIR.
r? `@petrochenkov`
2022-07-25 20:02:55 +00:00
Camille GILLOT
3c5048d2ec
Report elision failures on the AST.
2022-07-25 19:19:23 +02:00
Michael Goulet
3eef023da0
Address more nits
2022-07-21 16:43:10 +00:00
Michael Goulet
99c32570bb
Do if-expression obligation stuff less eagerly
2022-07-21 07:39:28 +00:00
Camille GILLOT
bfd0435fd7
Introduce AnonymousLifetimeRib::Elided and use it for implied 'static.
2022-07-20 22:12:12 +02:00
Michael Woerister
88f6c6d8a0
Remove unused StableMap and StableSet types from rustc_data_structures
2022-07-20 13:11:39 +02:00
Michael Woerister
b8138db0ff
Use FxIndexMap instead of otherwise unused StableMap for WEAK_ITEMS_REFS.
2022-07-20 12:40:51 +02:00
Dylan DPC
24f0e1499e
Rollup merge of #99119 - TaKO8Ki:remove-string-matching-about-methods, r=cjgillot
...
Refactor: remove a string matching about methods
This patch remove a string matching about methods and adds some rustfix tests.
2022-07-15 15:53:38 +05:30
Takayuki Maeda
45b88aff10
simplify suggest_deref_ref_or_into
2022-07-15 14:29:15 +09:00
Dylan DPC
e5a86d7358
Rollup merge of #98705 - WaffleLapkin:closure_binder, r=cjgillot
...
Implement `for<>` lifetime binder for closures
This PR implements RFC 3216 ([TI](https://github.com/rust-lang/rust/issues/97362 )) and allows code like the following:
```rust
let _f = for<'a, 'b> |a: &'a A, b: &'b B| -> &'b C { b.c(a) };
// ^^^^^^^^^^^--- new!
```
cc ``@Aaron1011`` ``@cjgillot``
2022-07-14 14:14:21 +05:30
Maybe Waffle
d2923b4007
Add back expr size checks
2022-07-12 21:00:13 +04:00
Maybe Waffle
df4fee9841
Add an indirection for closures in hir::ExprKind
...
This helps bring `hir::Expr` size down, `Closure` was the biggest
variant, especially after `for<>` additions.
2022-07-12 21:00:13 +04:00
Maybe Waffle
c2dbd62c7c
Lower closure binders to hir & properly check them
2022-07-12 21:00:03 +04:00
Maybe Waffle
f89ef3cf66
Comment out expr size check
2022-07-12 16:26:08 +04:00
Ding Xiang Fei
5374688e1d
add tests for async await
2022-07-11 23:20:39 +02:00