Commit Graph

1009 Commits

Author SHA1 Message Date
Michael Goulet 928388bad2 Make fatal DiagnosticBuilder yield never 2022-03-27 22:25:32 -07:00
bors 3badf5c51c Auto merge of #95333 - GuillaumeGomez:auto-trait-perf-issue, r=oli-obk
Fix perf issue for auto trait selection

Follow-up of https://github.com/rust-lang/rust/pull/95069 which fixes the perf issue introduced by it.

r? `@oli-obk`
2022-03-28 00:01:01 +00:00
Dylan DPC c6bb219fc4 Rollup merge of #93469 - compiler-errors:issue-93450, r=estebank
Skip pointing out ambiguous impls in alloc/std crates too in inference errors

This generalizes the logic in `annotate_source_of_ambiguity` to skip printing ambiguity errors traits in `alloc` and `std` as well, not just `core`.

While this does spot-fix the issue mentioned below, it would be nicer to generalize this logic, for example to detect when the trait predicate's `self_ty` has any numerical inference variables. Is it worthwhile to scrap this solution for one like that?

Fixes #93450

r? `@estebank`
feel free to reassign
2022-03-27 05:36:08 +02:00
Guillaume Gomez bd51f174ed Remove SelectionContext::allow_negative_impls field 2022-03-27 03:01:34 +02:00
Guillaume Gomez ad88732254 Fix perf issue for auto trait selection 2022-03-26 14:58:19 +01:00
bors c74925438c Auto merge of #95149 - cjgillot:once-diag, r=estebank
Remove `Session::one_time_diagnostic`

This is untracked mutable state, which modified the behaviour of queries.
It was used for 2 things: some full-blown errors, but mostly for lint declaration notes ("the lint level is defined here" notes).

It is replaced by the diagnostic deduplication infra which already exists in the diagnostic emitter.
A new diagnostic level `OnceNote` is introduced specifically for lint notes, to deduplicate subdiagnostics.

As a drive-by, diagnostic emission takes a `&mut` to allow dropping the `SubDiagnostic`s.
2022-03-26 00:54:54 +00:00
bors 09be68c869 Auto merge of #95280 - InfRandomness:infrandomness/Dtorck_clarification, r=oli-obk
Swap DtorckConstraint to DropckConstraint

This change was made as per suspicion that this struct was never renamed after consistent use of DropCk.

This also clarifies the meaning behind the name of this structure.

Fixes https://github.com/rust-lang/rust/issues/94310
2022-03-25 14:16:13 +00:00
bors e70e211e99 Auto merge of #95082 - spastorino:overlap-inherent-impls, r=nikomatsakis
Overlap inherent impls

r? `@nikomatsakis`

Closes #94526
2022-03-25 09:09:48 +00:00
Dylan DPC 1fcb8fc3e0 Rollup merge of #95179 - b-naber:eval-in-try-unify, r=lcnr
Try to evaluate in try unify and postpone resolution of constants that contain inference variables

We want code like that in [`ui/const-generics/generic_const_exprs/eval-try-unify.rs`](https://github.com/rust-lang/rust/compare/master...b-naber:eval-in-try-unify?expand=1#diff-8027038201cf07a6c96abf3cbf0b0f4fdd8a64ce6292435f01c8ed995b87fe9b) to compile. To do that we need to try to evaluate constants in `try_unify_abstract_consts`, this requires us to be more careful about what constants we try to resolve, specifically we cannot try to resolve constants that still contain inference variables.

r? `@lcnr`
2022-03-25 01:34:30 +01:00
Dylan DPC d1d4613ead Rollup merge of #94391 - light4:issue-90319, r=estebank
Fix ice when error reporting recursion errors

Fixes: #90319, #92148, #93955
2022-03-25 01:34:28 +01:00
Santiago Pastorino 42e986f77b Implement impl_subject_and_oblig instead of repeating the impls 2022-03-24 18:41:30 -03:00
Santiago Pastorino d96faef913 Where bounds are checked on inherent impls 2022-03-24 17:47:10 -03:00
InfRandomness 645620b3b3 Swap DtorckConstraint to DropckConstraint
This change was made as per suspicion that this struct was never renamed after consistent use of DropCk.

This also clarifies the meaning behind the name of this structure.
2022-03-24 20:35:35 +01:00
lightning1141 85e67b9a59 Fix ice when error reporting recursion errors
Fixes: #90319, #92148, #93955
2022-03-25 02:53:30 +08:00
Santiago Pastorino f4bd1e14bd Normalize both trait and inherent 2022-03-24 14:17:54 -03:00
Santiago Pastorino 22b311bd82 Extract impl_subject_and_oglibations fn and make equate receive subjects 2022-03-24 12:44:06 -03:00
bors 8d8135f003 Auto merge of #94876 - b-naber:thir-abstract-const-changes, r=lcnr
Change Thir to lazily create constants

To allow `AbstractConst`s to work with the previous thir changes we made and those we want to make, i.e. to avoid problems due to `ValTree` and `ConstValue` conversions, we instead switch to a thir representation for constants that allows us to lazily create constants.

r? `@oli-obk`
2022-03-24 12:50:00 +00:00
bors d2df372bca Auto merge of #91030 - estebank:trait-bounds-are-tricky-2, r=oli-obk
Properly track `ImplObligations`

Instead of probing for all possible `impl`s that could have caused an
`ImplObligation`, keep track of its `DefId` and obligation spans for
accurate error reporting.

Follow to #89580. Addresses #89418.
2022-03-24 10:24:54 +00:00
Esteban Kuber 5fd37862d9 Properly track ImplObligations
Instead of probing for all possible impls that could have caused an
`ImplObligation`, keep track of its `DefId` and obligation spans for
accurate error reporting.

Follow up to #89580. Addresses #89418.

Remove some unnecessary clones.

Tweak output for auto trait impl obligations.
2022-03-24 02:08:49 +00:00
Matthias Krüger 0c79c862f0 Rollup merge of #95069 - GuillaumeGomez:auto-traits-rustdoc, r=oli-obk
Fix auto traits in rustdoc

Fixes #90324.

cc `@matthewjasper`
r? `@Aaron1011`
2022-03-23 22:13:23 +01:00
Matthias Krüger af19a50a26 Rollup merge of #94249 - compiler-errors:better-copy-errors, r=davidtwco
Better errors when a Copy impl on a Struct is not self-consistent

As discovered in a Zulip thread with `@nnethercote` and `@Mark-Simulacrum,` it's not immediately obvious why a field on an ADT doesn't implement `Copy`.  This PR attempts to give slightly more detailed information by spinning up a fulfillment context to try to dig down and discover transitive fulfillment errors that cause `is_copy_modulo_regions` to fail on a ADT field.

The error message still kinda sucks, but should only show up in the case that an existing error message was totally missing... so I think it's a good compromise for now?
2022-03-23 22:13:22 +01:00
b-naber 19041d995d dont use a query for lit_to_constant 2022-03-23 20:18:34 +01:00
b-naber 5fcccd1739 use NonHirLiteral instead of ScalarLiteral, move pattern related code to pat_is_poly in IsThirPolymorphic 2022-03-23 11:34:33 +01:00
b-naber 5e7f1380f6 move ExprKind::Repeat arm to expr_is_poly 2022-03-23 11:34:33 +01:00
b-naber 9cd8bb0456 use ParamConst in ExprKind::ConstParam 2022-03-23 11:34:33 +01:00
b-naber e2496b3cf4 remove thir::Visitor::visit_const 2022-03-23 11:34:32 +01:00
b-naber f713b5017c change thir to lazily create constants 2022-03-23 11:34:32 +01:00
Michael Goulet c8cbd3d03c better errors when a Copy impl is not coherent 2022-03-22 18:15:29 -07:00
b-naber 11a70dbc8a erase region in ParamEnvAnd and make ConstUnifyCtxt private 2022-03-22 16:13:28 +01:00
b-naber fe69a5cf0c dont canonicalize in try_unify_abstract_consts and erase regions instead 2022-03-22 15:27:20 +01:00
Santiago Pastorino 64df2ee1eb impl_header -> impl_subject 2022-03-22 10:35:17 -03:00
b-naber 8ff1edbe5e fix previous failures and address review 2022-03-22 11:35:59 +01:00
b-naber 47f78a2487 try to evaluate in try_unify 2022-03-21 18:47:23 +01:00
Deadbeef fe5b81348f Tidy up 2022-03-21 17:07:09 +11:00
Deadbeef 1f3ee7f32e Rename ~const Drop to ~const Destruct 2022-03-21 17:04:03 +11:00
Camille GILLOT 0b49d05ea3 Filter OnceNote in diagnostic infra. 2022-03-20 20:36:26 +01:00
Santiago Pastorino 0cd03c917c Extract ImplSubject information 2022-03-20 00:12:18 -03:00
Santiago Pastorino 91b52148eb Minor documentation type fixes h/t @pierwill 2022-03-18 14:13:06 -03:00
Santiago Pastorino f3ebafac91 Extract obligations_satisfiable fn 2022-03-18 14:11:04 -03:00
Santiago Pastorino 89fdb62331 Fix inherent impls on negative coherence 2022-03-18 14:11:04 -03:00
Guillaume Gomez 28b6d2c282 Fix incorrect auto trait displayed in rustdoc 2022-03-18 11:24:52 +01:00
Matthias Krüger 588d389dc5 Rollup merge of #95039 - spastorino:overlap-super-predicates, r=nikomatsakis
Make negative coherence work when there's impl negative on super predicates

r? `@nikomatsakis`
2022-03-18 05:21:55 +01:00
Dylan DPC 270a41c33e Rollup merge of #94960 - codehorseman:master, r=oli-obk
Fix many spelling mistakes

Signed-off-by: codehorseman <cricis@yeah.net>
2022-03-17 22:55:05 +01:00
Niko Matsakis 89a00cc8ae Update compiler/rustc_trait_selection/src/traits/coherence.rs 2022-03-17 16:51:30 -04:00
Santiago Pastorino ba8b4a4f82 Use let else here 2022-03-17 14:55:16 -03:00
Santiago Pastorino 9c076f3f90 Add more commments 2022-03-17 14:38:30 -03:00
Santiago Pastorino 91846fe12a This test now works 2022-03-17 14:38:27 -03:00
Santiago Pastorino 61a05ef8d6 Extract obligation resolution to function 2022-03-17 12:15:17 -03:00
Santiago Pastorino 64dfd3b234 Make negative coherence work when there's impl negative on super predicates 2022-03-17 12:15:11 -03:00
mark bb8d4307eb rustc_error: make ErrorReported impossible to construct
There are a few places were we have to construct it, though, and a few
places that are more invasive to change. To do this, we create a
constructor with a long obvious name.
2022-03-16 10:35:24 -05:00