clubby789
3851a4bb91
Improve error for self: Box<self>
2023-05-11 13:21:10 +01:00
Boxy
73b3ce26ec
improve diagnostics and bless tests
2023-05-05 21:42:54 +01:00
Matthias Krüger
1187ce7213
Rollup merge of #111020 - cjgillot:validate-self-ctor, r=petrochenkov
...
Validate resolution for SelfCtor too.
Fixes https://github.com/rust-lang/rust/issues/89868
r? `@petrochenkov`
2023-05-04 08:09:04 +02:00
Camille GILLOT
83453408a0
Validate resolution for SelfCtor too.
2023-05-03 17:55:27 +00:00
Nicholas Nethercote
6b62f37402
Restrict From<S>
for {D,Subd}iagnosticMessage
.
...
Currently a `{D,Subd}iagnosticMessage` can be created from any type that
impls `Into<String>`. That includes `&str`, `String`, and `Cow<'static,
str>`, which are reasonable. It also includes `&String`, which is pretty
weird, and results in many places making unnecessary allocations for
patterns like this:
```
self.fatal(&format!(...))
```
This creates a string with `format!`, takes a reference, passes the
reference to `fatal`, which does an `into()`, which clones the
reference, doing a second allocation. Two allocations for a single
string, bleh.
This commit changes the `From` impls so that you can only create a
`{D,Subd}iagnosticMessage` from `&str`, `String`, or `Cow<'static,
str>`. This requires changing all the places that currently create one
from a `&String`. Most of these are of the `&format!(...)` form
described above; each one removes an unnecessary static `&`, plus an
allocation when executed. There are also a few places where the existing
use of `&String` was more reasonable; these now just use `clone()` at
the call site.
As well as making the code nicer and more efficient, this is a step
towards possibly using `Cow<'static, str>` in
`{D,Subd}iagnosticMessage::{Str,Eager}`. That would require changing
the `From<&'a str>` impls to `From<&'static str>`, which is doable, but
I'm not yet sure if it's worthwhile.
2023-05-03 08:44:39 +10:00
Matthias Krüger
1795bf8222
Rollup merge of #110404 - matthiaskrgr:mapmap, r=Nilstrieb
...
fix clippy::toplevel_ref_arg and ::manual_map
r? ``@Nilstrieb``
2023-04-17 08:09:40 +02:00
Matthias Krüger
543f8bc38c
fix clippy::toplevel_ref_arg and ::manual_map
2023-04-16 13:28:13 +02:00
Matthias Krüger
bcc15bba95
use matches! macro in more places
2023-04-16 12:08:30 +02:00
Michael Goulet
8ed2dc0bce
Make span a bit better
2023-04-06 16:52:17 +00:00
Michael Goulet
00d54c879b
Label non_exhaustive on privacy errors
2023-04-06 16:49:43 +00:00
Matthias Krüger
ac229c2819
fix clippy::iter_kv_map
2023-04-01 23:44:16 +02:00
Vadim Petrochenkov
b3ee735993
resolve: Remove struct_field_names_untracked
2023-03-13 17:31:55 +04:00
Vadim Petrochenkov
2a716f3563
resolve: Centralize retrieval of items span and item name
2023-03-13 17:31:54 +04:00
Vadim Petrochenkov
901f1c9c62
resolve: Partially remove item_attrs_untracked
2023-03-13 17:31:54 +04:00
Vadim Petrochenkov
c83553da31
rustc_middle: Remove trait DefIdTree
...
This trait was a way to generalize over both `TyCtxt` and `Resolver`, but now `Resolver` has access to `TyCtxt`, so this trait is no longer necessary.
2023-03-02 23:46:44 +04:00
Michael Howell
f058bb0fcf
diagnostics: avoid querying associated_item
in the resolver
...
Fixes #108529
2023-02-27 09:22:51 -07:00
bors
0978711950
Auto merge of #108324 - notriddle:notriddle/assoc-fn-method, r=compiler-errors,davidtwco,estebank,oli-obk
...
diagnostics: if AssocFn has self argument, describe as method
Discussed in https://rust-lang.zulipchat.com/#narrow/stream/147480-t-compiler.2Fwg-diagnostics/topic/.22associated.20function.22.20vs.20.22method.22/near/329265515
This commit also changes the tooltips on rustdoc intra-doc links targeting methods.
For anyone not sure why this is being done, see the Reference definitions of these terms in <https://doc.rust-lang.org/1.67.1/reference/items/associated-items.html#methods >
> Associated functions whose first parameter is named `self` are called methods and may be invoked using the [method call operator](https://doc.rust-lang.org/1.67.1/reference/expressions/method-call-expr.html ), for example, `x.foo()`, as well as the usual function call notation.
In particular, while this means it's technically correct for rustc to refer to a method as an associated function (and there are a few cases where it'll still do so), rustc *must never* use the term "method" to refer to an associated function that does not have a `self` parameter.
2023-02-23 00:19:12 +00:00
Vadim Petrochenkov
d275114bda
resolve: Remove ImportResolver
...
It's a trivial wrapper over `Resolver` that doesn't bring any benefits
2023-02-22 21:29:38 +04:00
Michael Howell
3d056c3125
diagnostics: if AssocFn has self argument, describe as method
...
Discussed in
https://rust-lang.zulipchat.com/#narrow/stream/147480-t-compiler.2Fwg-diagnostics/topic/.22associated.20function.22.20vs.20.22method.22/near/329265515
This commit also changes the tooltips on rustdoc intra-doc links
targeting methods.
2023-02-22 08:40:33 -07:00
Oli Scherer
a04e78730e
Use source_span
query instead of passing the untracked vec around
2023-02-21 08:29:55 +00:00
bors
2deff71719
Auto merge of #105462 - oli-obk:feeding_full, r=cjgillot,petrochenkov
...
give the resolver access to TyCtxt
The resolver is now created after TyCtxt is created. Then macro expansion and name resolution are run and the results fed into queries just like before this PR.
Since the resolver had (before this PR) mutable access to the `CStore` and the source span table, these two datastructures are now behind a `RwLock`. To ensure that these are not mutated anymore after the resolver is done, a read lock to them is leaked right after the resolver finishes.
### PRs split out of this one and leading up to it:
* https://github.com/rust-lang/rust/pull/105423
* https://github.com/rust-lang/rust/pull/105357
* https://github.com/rust-lang/rust/pull/105603
* https://github.com/rust-lang/rust/pull/106776
* https://github.com/rust-lang/rust/pull/106810
* https://github.com/rust-lang/rust/pull/106812
* https://github.com/rust-lang/rust/pull/108032
2023-02-21 01:19:25 +00:00
Oli Scherer
4953d70e2f
Stuff a TyCtxt into the Resolver
2023-02-20 15:28:59 +00:00
Oli Scherer
6924e3c374
Make untracked.source_span lockable so that resolution can still write to it when using TyCtxt
2023-02-20 15:28:58 +00:00
Oli Scherer
e8e227aec8
Prepare crate loader for LockGuard
2023-02-20 10:49:42 +00:00
Oli Scherer
d191de63f0
Prepare for adding a TyCtxt
to Resolver
2023-02-20 10:38:48 +00:00
Jacob Pratt
378c4ab9ab
Make public API, docs algorithm-agnostic
2023-02-19 04:11:10 +00:00
Oli Scherer
43a5cc383d
Separate the lifetime of the session and the arena in the resolver
2023-02-14 10:01:25 +00:00
Maybe Waffle
9fe8ae792e
Rename rust_2015
=> is_rust_2015
2023-02-02 08:17:13 +00:00
Guillaume Gomez
fe44f3bdd0
Rollup merge of #107508 - WaffleLapkin:uneq'15, r=oli-obk
...
`Edition` micro refactor
r? ``@oli-obk``
2023-01-31 23:38:53 +01:00
Maybe Waffle
03158f40d2
Don't do .edition().rust_*()
2023-01-31 10:09:23 +00:00
Maybe Waffle
fd5774a4d7
Use Edition
methods a bit more
2023-01-31 10:09:22 +00:00
Maybe Waffle
fd649a3cc5
Replace enum ==
s with match
es where it makes sense
2023-01-30 12:26:26 +00:00
bors
85da15c016
Auto merge of #107133 - pnkfelix:revert-pr-84022-for-issue-106337, r=Mark-Simulacrum
...
Revert "Make PROC_MACRO_DERIVE_RESOLUTION_FALLBACK a hard error"
This reverts commit 7d82cadd97
aka PR #84022
I am doing this to buy us some time with respect to issue #106337 w.r.t. the 1.67 release.
2023-01-22 03:58:52 +00:00
Felix S. Klock II
5fa1347331
Revert "Make PROC_MACRO_DERIVE_RESOLUTION_FALLBACK a hard error"
...
This reverts commit 7d82cadd97
.
I am doing this to buy us some time with respect to issue #106337 w.r.t. the
1.67 release.
2023-01-20 17:13:55 -05:00
Michael Howell
c07a722847
diagnostics: remvoe unnecessary use of source_map.start_point
2023-01-20 14:53:34 -07:00
Michael Howell
dca160a06a
diagnostics: use module_path
to check crate import instead of strings
2023-01-20 14:53:34 -07:00
Michael Howell
e237690a28
diagnostics: add };
only if {
was added too
2023-01-20 14:53:33 -07:00
Michael Howell
e9d8d238ef
diagnostics: suggest changing s@self::{macro}@::macro
for exported
...
Fixes #99695
2023-01-20 14:52:24 -07:00
Michael Goulet
21725774a2
note -> help
2023-01-17 03:09:49 +00:00
Michael Goulet
716ea5f19c
Fix use suggestion span
2023-01-17 03:06:38 +00:00
Michael Goulet
950b47fb96
Render missing generics suggestion verbosely
2023-01-12 22:04:30 +00:00
Esteban Küber
41e66d9025
review comments: Tweak output
...
* Account for `struct S(pub(super)Ty);` in suggestion
* Suggest changing field visibility in E0603 too
2023-01-11 21:36:02 +00:00
Michael Goulet
1d66a675bb
review comment
2023-01-09 18:07:34 +00:00
Michael Goulet
d2404d6dca
Dont clobber as ..
rename in import suggestion
2022-12-27 07:05:45 +00:00
Michael Goulet
9e2536b938
Note alternative import candidates in nested use tree
2022-12-27 05:09:43 +00:00
Oli Scherer
75ff5c7dd3
Fold Definitions
into the untracked data
2022-12-09 14:59:39 +00:00
Oli Scherer
1c1d3570ee
Move the untracked cstore and source_span into a struct
2022-12-09 14:53:24 +00:00
Oli Scherer
2cd36f2c89
Generate crate loaders on the fly
2022-12-09 14:53:23 +00:00
yukang
fb004e9a95
fix #101749 , use . instead of :: when accessing a method of an object
2022-12-03 22:41:12 +08:00
bors
b833ad56f4
Auto merge of #104573 - matthiaskrgr:rollup-k36ybtp, r=matthiaskrgr
...
Rollup of 8 pull requests
Successful merges:
- #101162 (Migrate rustc_resolve to use SessionDiagnostic, part # 1)
- #103386 (Don't allow `CoerceUnsized` into `dyn*` (except for trait upcasting))
- #103405 (Detect incorrect chaining of if and if let conditions and recover)
- #103594 (Fix non-associativity of `Instant` math on `aarch64-apple-darwin` targets)
- #104006 (Add variant_name function to `LangItem`)
- #104494 (Migrate GUI test to use functions)
- #104516 (rustdoc: clean up sidebar width CSS)
- #104550 (fix a typo)
Failed merges:
- #104554 (Use `ErrorGuaranteed::unchecked_claim_error_was_emitted` less)
r? `@ghost`
`@rustbot` modify labels: rollup
2022-11-18 20:26:58 +00:00