Mara Bos
4bd415f70a
Clarify what attribute and derive macros look like.
2021-08-23 16:57:58 +02:00
Mara Bos
5dea5d7549
Say what things are, instead of what they are not.
2021-08-23 16:57:58 +02:00
Mara Bos
d834d2a742
Silence confusing 'unused import' warnings.
2021-08-23 16:57:58 +02:00
Mara Bos
7977cb43b0
Look for macro names in all namespaces for diagnostics.
2021-08-23 16:43:54 +02:00
Mara Bos
fed6131c41
Add note to 'macro not found' to point to identically-named imports.
2021-08-23 16:43:54 +02:00
Guillaume Gomez
3e8e8d2dad
Rollup merge of #88238 - m-ou-se:used-imports-no-track-namespace, r=estebank
...
Stop tracking namespace in used_imports.
This changes `used_imports` from a `FxHashSet<(NodeId, Namespace)>` to a `FxHashSet<NodeId>`, as the Namespace information isn't used.
The only point that uses it did three lookups, `|=`'ing them together.
r? `@estebank`
2021-08-22 20:52:56 +02:00
Mara Bos
abab99e02b
Stop tracking namespce in used_imports.
...
The information was tracked, but unused.
2021-08-22 16:50:59 +02:00
Mara Bos
bcc5ecb969
Suggest importing the right kind of macro.
2021-08-22 14:07:41 +02:00
Esteban Kuber
9349046ed5
review comment: use newtype to deduplicate logic
2021-08-18 14:05:15 +00:00
Esteban Kuber
12a776b41d
review comment: reduce duplication
2021-08-18 11:29:29 +00:00
Esteban Kuber
14add46e94
Use more accurate spans when proposing adding lifetime to item
2021-08-18 10:25:15 +00:00
Caio
6aa9937a76
Introduce hir::ExprKind::Let - Take 2
2021-08-15 16:18:26 -03:00
bors
dfe5fd0902
Auto merge of #87975 - m-ou-se:unused-import-attributes, r=nagisa
...
Include attributes in removal span for unused imports.
Fixes https://github.com/rust-lang/rust/issues/87973
2021-08-15 07:40:53 +00:00
Deadbeef
32390a0df6
move Constness into TraitPredicate
2021-08-13 09:26:33 +00:00
Mara Bos
f1860d1901
Include attributes in removal span for unused imports.
2021-08-12 17:35:52 +02:00
Jakub Beránek
d0d4947775
Add hint for unresolved associated trait items if the trait has a single item
2021-08-06 11:31:52 +02:00
bors
aadd6189ad
Auto merge of #87449 - matthiaskrgr:clippyy_v2, r=nagisa
...
more clippy::complexity fixes
(also a couple of clippy::perf fixes)
2021-08-01 09:15:15 +00:00
bors
fd853c00e2
Auto merge of #83484 - JulianKnodt:infer, r=oli-obk,lcnr
...
Add hir::GenericArg::Infer
In order to extend inference to consts, make an Infer type on hir::GenericArg.
2021-07-27 16:24:45 +00:00
kadmin
8759f00c73
Actually infer args in visitors
2021-07-26 21:15:18 +00:00
bors
478126c0f3
Auto merge of #86438 - FabianWolff:issue-83693, r=jackh726
...
Fix the ICE described in #83693
This pull request fixes #83693 and fixes #84768 .
2021-07-25 16:17:58 +00:00
Matthias Krüger
3fd8cbb404
clippy::useless_format
2021-07-25 12:26:03 +02:00
Camille GILLOT
36a28060f1
Merge the BTreeMap in hir::Crate.
2021-07-25 12:18:56 +02:00
kadmin
417b098cfc
Add generic arg infer
2021-07-25 07:28:51 +00:00
Aaron Hill
ddd544856e
Compute a better lint_node_id
during expansion
...
When we need to emit a lint at a macro invocation, we currently use the
`NodeId` of its parent definition (e.g. the enclosing function). This
means that any `#[allow]` / `#[deny]` attributes placed 'closer' to the
macro (e.g. on an enclosing block or statement) will have no effect.
This commit computes a better `lint_node_id` in `InvocationCollector`.
When we visit/flat_map an AST node, we assign it a `NodeId` (earlier
than we normally would), and store than `NodeId` in current
`ExpansionData`. When we collect a macro invocation, the current
`lint_node_id` gets cloned along with our `ExpansionData`, allowing it
to be used if we need to emit a lint later on.
This improves the handling of `#[allow]` / `#[deny]` for
`SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` and some `asm!`-related lints.
The 'legacy derive helpers' lint retains its current behavior
(I've inlined the now-removed `lint_node_id` function), since
there isn't an `ExpansionData` readily available.
2021-07-17 23:03:56 -05:00
Camille GILLOT
078dd37f88
Use LocalExpnId where possible.
2021-07-17 19:41:02 +02:00
Yuki Okushi
6d0d80e181
Rollup merge of #87134 - BoxyUwU:cgd-self-ty-error, r=lcnr
...
Make SelfInTyParamDefault wording not be specific to type defaults
r? ```@lcnr```
2021-07-15 21:19:20 +09:00
Ellen
da189d9514
Change type param -> generic param
2021-07-14 19:22:39 +01:00
Camille GILLOT
3fba5a4844
Shrink the CrateStore dynamic interface.
2021-07-14 16:37:56 +02:00
Camille GILLOT
616ce3c5c0
Cache expansion hash.
2021-07-13 23:10:56 +02:00
Vadim Petrochenkov
28f4dba438
rustc_span: Revert addition of proc_macro
field to ExpnKind::Macro
...
The flag has a vague meaning and is used for a single diagnostic change that is low benefit and appears only under `-Z macro_backtrace`.
2021-07-10 23:03:35 +03:00
Fabian Wolff
6f0fe9b91b
Fix the ICE described in #83693
2021-07-09 23:05:41 +02:00
bors
d04ec47358
Auto merge of #86143 - bjorn3:revert_revert_merge_crate_disambiguator, r=michaelwoerister
...
Reland "Merge CrateDisambiguator into StableCrateId"
Reverts https://github.com/rust-lang/rust/pull/85891 as this revert of #85804 made perf even worse.
r? `@Mark-Simulacrum`
2021-07-06 11:31:59 +00:00
bjorn3
489ad8b8b5
Revert "Revert "Merge CrateDisambiguator into StableCrateId""
...
This reverts commit 8176ab8bc18fdd7d3c2cf7f720c51166364c33a3.
2021-07-06 11:28:04 +02:00
Camille GILLOT
3162c37b59
Store macro parent module in ExpnData.
2021-07-06 08:07:06 +02:00
Fabian Wolff
f333b4795c
Fix garbled suggestion for missing lifetime specifier
2021-06-28 00:56:24 +02:00
bors
d95745e5fa
Auto merge of #85427 - ehuss:fix-use-placement, r=jackh726
...
Fix use placement for suggestions near main.
This fixes an edge case for the suggestion to add a `use`. When running with `--test`, the `main` function will be annotated with an `#[allow(dead_code)]` attribute. The `UsePlacementFinder` would end up using the dummy span of that synthetic attribute. If there are top-level inner attributes, this would place the `use` in the wrong position. The solution here is to ignore attributes with dummy spans.
In the process of working on this, I discovered that the `use_suggestion_placement` test was broken. `UsePlacementFinder` is unaware of active attributes. Attributes like `#[derive]` don't exist in the AST since they are removed. Fixing that is difficult, since the AST does not retain enough information. I considered trying to place the `use` towards the top of the module after any `extern crate` items, but I couldn't find a way to get a span for the start of a module block (the `mod` span starts at the `mod` keyword, and it seems tricky to find the spot just after the opening bracket and past inner attributes). For now, I just put some comments about the issue. This appears to have been a known issue in #44215 where the test for it was introduced, and the fix seemed to be deferred to later.
2021-06-24 14:56:28 +00:00
Vadim Petrochenkov
3f0729f378
expand: Move some more derive logic to rustc_builtin_macros
2021-06-20 18:48:42 +03:00
Yuki Okushi
5936ecc24f
Rollup merge of #85608 - scottmcm:stabilize-control-flow-enum-basics, r=m-ou-se
...
Stabilize `ops::ControlFlow` (just the type)
Tracking issue: https://github.com/rust-lang/rust/issues/75744 (which also tracks items *not* closed by this PR).
With the new `?` desugar implemented, [it's no longer possible to mix `Result` and `ControlFlow`](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=13feec97f5c96a9d791d97f7de2d49a6 ). (At the time of making this PR, godbolt was still on the 2021-05-01 nightly, where you can see that [the mixing example compiled](https://rust.godbolt.org/z/13Ke54j16 ).) That resolves the only blocker I know of, so I'd like to propose that `ControlFlow` be considered for stabilization.
Its basic existence was part of https://github.com/rust-lang/rfcs/pull/3058 , where it got a bunch of positive comments (examples [1](https://github.com/rust-lang/rfcs/pull/3058#issuecomment-758277325 ) [2](https://github.com/rust-lang/rfcs/pull/3058#pullrequestreview-592106494 ) [3](https://github.com/rust-lang/rfcs/pull/3058#issuecomment-784444155 ) [4](https://github.com/rust-lang/rfcs/pull/3058#issuecomment-797031584 )). Its use in the compiler has been well received (https://github.com/rust-lang/rust/pull/78182#issuecomment-713695594 ), and there are ecosystem updates interested in using it (https://github.com/rust-itertools/itertools/issues/469#issuecomment-677729589 , https://github.com/jonhoo/rust-imap/issues/194 ).
As this will need an FCP, picking a libs member manually:
r? `@m-ou-se`
## Stabilized APIs
```rust
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ControlFlow<B, C = ()> {
/// Exit the operation without running subsequent phases.
Break(B),
/// Move on to the next phase of the operation as normal.
Continue(C),
}
```
As well as using `?` on a `ControlFlow<B, _>` in a function returning `ControlFlow<B, _>`. (Note, in particular, that there's no `From::from`-conversion on the `Break` value, the way there is for `Err`s.)
## Existing APIs *not* stabilized here
All the associated methods and constants: `break_value`, `is_continue`, `map_break`, [`CONTINUE`](https://doc.rust-lang.org/nightly/std/ops/enum.ControlFlow.html#associatedconstant.CONTINUE ), etc.
Some of the existing methods in nightly seem reasonable, some seem like they should be removed, and some need more discussion to decide. But none of them are *essential*, so [as in the RFC](https://rust-lang.github.io/rfcs/3058-try-trait-v2.html#methods-on-controlflow ), they're all omitted from this PR.
They can be considered separately later, as further usage demonstrates which are important.
2021-06-15 17:40:08 +09:00
bors
0a8629bff6
Auto merge of #85885 - bjorn3:remove_box_region, r=cjgillot
...
Don't use a generator for BoxedResolver
The generator is non-trivial and requires unsafe code anyway. Using regular unsafe code without a generator is much easier to follow.
Based on #85810 as it touches rustc_interface too.
2021-06-11 16:11:20 +00:00
Ryan Levick
6936349233
Add support for using qualified paths with structs in expression and pattern
...
position.
2021-06-10 13:18:41 +02:00
bjorn3
db4d8e2cab
Store boxed metadata loader in CrateLoader
2021-06-08 19:24:16 +02:00
Yuki Okushi
b7fadfddcb
Rollup merge of #86103 - camsteffen:lifetime-hack, r=jackh726
...
Remove lifetime hack
It compiles without the hack. But I don't know why. I can't get the example in the referenced issue to compile...
2021-06-08 13:26:38 +09:00
Cameron Steffen
fb92c92a72
Remove lifetime hack
2021-06-07 10:00:58 -05:00
bjorn3
8176ab8bc1
Revert "Merge CrateDisambiguator into StableCrateId"
...
This reverts commit d0ec85d3fb6d322496cb8f4bc1c21e19f23284ad.
2021-06-07 10:37:45 +02:00
Yuki Okushi
7ee817e4c4
Rollup merge of #85896 - BoxyUwU:remove-fixme-fwd-declared-const-default, r=petrochenkov
...
Add test for forward declared const param defaults
2021-06-03 14:35:36 +09:00
Camille GILLOT
93b25bd293
Make trait_map an Option.
2021-06-01 21:59:48 +02:00
Camille GILLOT
0839cd5e9a
Rename take_trait_map.
2021-06-01 20:53:04 +02:00
Camille GILLOT
c11691b460
Check that trait_map is not moved twice.
2021-06-01 20:53:04 +02:00
Camille GILLOT
e291be3649
Only compute the trait_map once.
2021-06-01 20:43:50 +02:00
Ellen
ba680aa5f2
Add test for forward declared const param defaults
2021-06-01 17:44:54 +01:00