Commit Graph

19735 Commits

Author SHA1 Message Date
Manish Goregaokar
24ee599195 Rollup merge of #104338 - compiler-errors:pointer-sized, r=eholk
Enforce that `dyn*` coercions are actually pointer-sized

Implement a perma-unstable, rudimentary `PointerSized` trait to enforce `dyn*` casts are `usize`-sized for now, at least to prevent ICEs and weird codegen issues from cropping up after monomorphization since currently we enforce *nothing*.

This probably can/should be removed in favor of a more sophisticated trait for handling `dyn*` conversions when we decide on one, but I just want to get something up for discussion and experimentation for now.

r? ```@eholk``` cc ```@tmandry``` (though feel free to claim/reassign)

Fixes #102141
Fixes #102173
2022-11-18 17:48:18 -05:00
Charles Lew
b22cb90e0a Update crate documentation of rustc_baked_icu_data crate 2022-11-18 14:46:36 -08:00
Charles Lew
b21e0b82c5 Fix compilation issue after rebase 2022-11-18 14:46:36 -08:00
Charles Lew
707c035e00 Include zh locale in icu data 2022-11-18 14:46:35 -08:00
Charles Lew
d15b020278 Enable icu sync feature for parallel compiler 2022-11-18 14:46:35 -08:00
Charles Lew
bde2f9857b Import icu locale fallback data 2022-11-18 14:46:35 -08:00
Charles Lew
a775004322 Migrate diagnostics list output to use icu list formatter. 2022-11-18 14:46:35 -08:00
Charles Lew
42d3bda08c Add rustc_baked_icu_data crate. 2022-11-18 14:46:35 -08:00
Michael Benfield
31c0645b9d rustc_codegen_ssa: Fix for codegen_get_discr
When doing the optimized implementation of getting the discriminant, the
arithmetic needs to be done in the tag type so wrapping behavior works
correctly.

Fixes #104519
2022-11-18 21:16:12 +00: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
Daniel Paoliello
67e746cc68 Workaround for private global symbol issue 2022-11-18 11:38:31 -08:00
Michael Goulet
39e076a2e7 Only enforce ABI-mandated align, not preferred align is compatible 2022-11-18 18:23:48 +00:00
Michael Goulet
b3da04aa52 Check both align and size in PointerSized 2022-11-18 18:23:48 +00:00
Michael Goulet
da3c5397a6 Enforce that dyn* casts are actually pointer-sized 2022-11-18 18:23:48 +00:00
Michael Goulet
b8a92c1dd6 Revert "Normalize opaques with escaping bound vars"
This reverts commit 43119d6438.
2022-11-18 17:40:14 +00:00
Michael Howell
df7ecbcb11 diagnostics: only show one suggestion for method -> assoc fn
Fixes #102354
2022-11-18 10:39:26 -07:00
Michael Goulet
bb0cb9ae9f Add a detailed note for missing comma in FRU syntax typo 2022-11-18 17:27:55 +00:00
bors
70fe5f08ff Auto merge of #101562 - nnethercote:shrink-ast-Expr-harder, r=petrochenkov
Shrink `ast::Expr` harder

r? `@ghost`
2022-11-18 16:56:12 +00:00
Esteban Küber
bcb2655a9a review comment 2022-11-18 08:46:48 -08:00
Esteban Küber
3debf5006a Only use ... instead of _ for type elision
`_` might confuse people into believing that the type isn't known,
while `...` is not used anywhere else for types and is not valid
syntax, making it more likely to convey the right understanding.
2022-11-18 08:46:47 -08:00
Esteban Küber
4ed1376490 On E0275 do not print out the full type in the msg
When printing requirement overflow errors, do not print out the full
type name when it is longer than 50 characters long.
2022-11-18 08:46:47 -08:00
Esteban Küber
787e633d1a On overflow errors, do not print out long types 2022-11-18 08:46:47 -08:00
Esteban Küber
d49c10ac62 Make "long type" printing type aware
Instead of simple string cutting, use a custom printer to hide parts of
long printed types.
2022-11-18 08:42:59 -08:00
Boxy
45a09a4683 review comments 2 electric boogalo 2022-11-18 13:45:47 +00:00
Boxy
9ed348376f require an ErrorGuaranteed to taint infcx with errors 2022-11-18 13:25:17 +00:00
Boxy
1c48039a87 rename is_tainted_by_errors 2022-11-18 13:25:17 +00:00
Boxy
3fca95a597 track_errors use a delay_span_bug 2022-11-18 13:25:17 +00:00
Boxy
95a267bb34 make replaced_with_error store ErrorGuaranteed 2022-11-18 13:25:17 +00:00
Boxy
9c510048fd InferCtxt::is_tainted_by_errors returns ErrorGuaranteed 2022-11-18 13:25:17 +00:00
Boxy
c1ec8ff14d dont unchecked create ErrorGuaranteed in BorrowckErrors 2022-11-18 13:25:17 +00:00
Ralf Jung
09a887cebf review feedback 2022-11-18 14:24:48 +01:00
Matthias Krüger
7e5e520c7d Rollup merge of #104550 - RalfJung:typo, r=compiler-errors
fix a typo

r? `@lcnr`
2022-11-18 14:13:39 +01:00
Matthias Krüger
2ea012619e Rollup merge of #104006 - flip1995:lang-items-clippy, r=oli-obk
Add variant_name function to `LangItem`

Clippy has an internal lint that checks for the usage of hardcoded def paths and suggests to replace them with a lang or diagnostic item, if possible. This was implemented with a hack, by getting all the variants of the `LangItem` enum and then index into it with the position of the `LangItem` in the `items` list. This is no longer possible, because the `items` list can't be accessed anymore.

Follow up to #103603

cc `@camsteffen`
r? `@oli-obk`

This is blocking the sync between Clippy and Rust. I'm not sure if this is the best solution here, or if I should add a method `items()` to `LanguageItems` and keep the code in Clippy unchanged.
2022-11-18 14:13:37 +01:00
Matthias Krüger
3efbf30220 Rollup merge of #103405 - chenyukang:yukang/fix-103381-and-if, r=compiler-errors
Detect incorrect chaining of if and if let conditions and recover

Fixes #103381
2022-11-18 14:13:36 +01:00
Matthias Krüger
741f3cf383 Rollup merge of #103386 - compiler-errors:no-coerceunsized-to-dynstar, r=eholk
Don't allow `CoerceUnsized` into `dyn*` (except for trait upcasting)

This makes sure we don't accidentally allow coercions like `Box<T>` -> `Box<dyn* Trait>`, or in the case of this ICE, `&T` to `&dyn* Trait`. These coercions don't make sense, at least not via the `CoerceUnsized` trait.

Fixes #102172
Fixes #102429
2022-11-18 14:13:35 +01:00
Matthias Krüger
3e5965722c Rollup merge of #101162 - rajputrajat:master, r=davidtwco
Migrate rustc_resolve to use SessionDiagnostic, part # 1

crate a somewhat on larger size, so plz allow some time to get it finished.
2022-11-18 14:13:35 +01:00
bors
fd3bfb3551 Auto merge of #104330 - CastilloDel:ast_lowering, r=cjgillot
Remove allow(rustc::potential_query_instability) from rustc_ast_lowering

Related to https://github.com/rust-lang/rust/issues/84447.

`@cjgillot` Thanks for helping me!
2022-11-18 13:12:18 +00:00
Matthias Krüger
e3036df003 couple of clippy::perf fixes 2022-11-18 10:30:47 +01:00
Ralf Jung
4101889786 interpret: use Either over Result when it is not representing an error condition 2022-11-18 10:18:32 +01:00
Deadbeef
bc51f8783c rename to string_deref_patterns 2022-11-18 06:16:20 +00:00
Deadbeef
64a17a09a8 Rm diagnostic item, use lang item 2022-11-18 06:16:20 +00:00
Cameron Steffen
9cf6ce070d Remove more PlaceBuilder clones 2022-11-17 19:01:05 -06:00
Cameron Steffen
105abe39c0 Replace into_place with to_place 2022-11-17 19:01:05 -06:00
Cameron Steffen
be5b7778c8 Replace try_upvars_resolved with try_to_place 2022-11-17 19:01:05 -06:00
Cameron Steffen
1c819792a7 Introduce PlaceBuilder::resolve_upvar by ref 2022-11-17 19:01:05 -06:00
pierwill
19b63bc791 Edit docs for rustc_errors::Handler::stash_diagnostic
Clarify that the diagnostic can be retrieved with `steal_diagnostic`.
2022-11-17 15:45:46 -06:00
Matthias Krüger
239f84bc51 Rollup merge of #104545 - flip1995:diag_item_matches_macro, r=compiler-errors
Readd the matches_macro diag item

This is now used by Clippy

r? `@compiler-errors`

This was removed in #104383. But in the meantime Clippy now makes use of it dac600e32f/clippy_lints/src/manual_is_ascii_check.rs (L153)

---

This is blocking the Clippy sync. (kinda. I could work around it, but I don't want to play ping-pong with this change.)
2022-11-17 22:33:22 +01:00
Matthias Krüger
58292874e1 Rollup merge of #104515 - chenyukang:yukang/fix-104510-ice, r=compiler-errors
ICE fixing, remove is_tainted_by_errors since we have ty_error for delay bug

Fixes #104510
2022-11-17 22:33:21 +01:00
Matthias Krüger
43fa2918d1 Rollup merge of #104508 - compiler-errors:dyn-return, r=oli-obk
Check `dyn*` return type correctly

In `check_fn`, if the declared return type is `dyn Trait`, then we check the return type separately to produce better diagnostics, because this is never valid -- however, when `dyn*` was introduced, this check was never adjusted to only account for *unsized* `dyn Trait` and not *sized* `dyn* Trait`.

Fixes #104501
2022-11-17 22:33:21 +01:00
Matthias Krüger
ed97f245f1 Rollup merge of #104483 - oli-obk:santa-clauses-make-goals, r=compiler-errors
Convert predicates into Predicate in the Obligation constructor

instead of having almost all callers do that.

This reduces a bit of boilerplate, and also paves the way for my work towards https://github.com/rust-lang/compiler-team/issues/531 (as it makes it easier to accept both goals and clauses where right now it only accepts predicates).
2022-11-17 22:33:19 +01:00