-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Overlap checking with downstream impl is insufficient w.r.t. fundamental types; causes ICE #43355
Labels
C-bug
Category: This is a bug.
I-ICE
Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
P-high
High priority
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
Comments
The nightly ICE should be a different bug, related to trait Trait1 {
type Output;
}
fn f<T: Trait1>() {
::std::mem::size_of::<T::Output>();
}
fn main() {} |
Mark-Simulacrum
added
I-ICE
Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
C-bug
Category: This is a bug.
labels
Jul 26, 2017
arielb1
added
I-nominated
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
labels
Nov 22, 2017
Yeah I always hated that check. So now we see it is insufficient. Let's hope we can fix this without nuking the entire ecosystem. |
This was referenced Nov 22, 2017
bors
added a commit
that referenced
this issue
Nov 23, 2017
coherence: fix is_knowable logic A trait-ref that passes the orphan-check rules can still be implemented in a crate downstream from our crate (for example, `LocalType for LocalTrait<_>` might be matched by a `LocalType for LocalTrait<TypeFromDownstreamCrate>`), and this should be known by the `is_knowable` logic. Trait selection had a hackfix for this, but it's an hacky fix that does not handle all cases. This patch removes it. cc #43355. FIXME: make this a soft error. I suppose we'll crater first. r? @nikomatsakis Needs a crater run
bors
added a commit
that referenced
this issue
Dec 6, 2017
coherence: fix is_knowable logic A trait-ref that passes the orphan-check rules can still be implemented in a crate downstream from our crate (for example, `LocalType for LocalTrait<_>` might be matched by a `LocalType for LocalTrait<TypeFromDownstreamCrate>`), and this should be known by the `is_knowable` logic. Trait selection had a hackfix for this, but it's an hacky fix that does not handle all cases. This patch removes it. fixes #43355. r? @nikomatsakis Needs a crater run
bors
added a commit
that referenced
this issue
Dec 6, 2017
coherence: fix is_knowable logic A trait-ref that passes the orphan-check rules can still be implemented in a crate downstream from our crate (for example, `LocalType for LocalTrait<_>` might be matched by a `LocalType for LocalTrait<TypeFromDownstreamCrate>`), and this should be known by the `is_knowable` logic. Trait selection had a hackfix for this, but it's an hacky fix that does not handle all cases. This patch removes it. fixes #43355. r? @nikomatsakis Needs a crater run
bors
added a commit
that referenced
this issue
Feb 8, 2020
Improve performance of coherence checks The biggest perf improvement in here is expected to come from the removal of the remaining #43355 warning code since the effectively runs the expensive parts of coherence *twice* (which can even be visualized by obtaining a flamegraph https://twitter.com/sheevink/status/1225963187511709696).
Dylan-DPC-zz
pushed a commit
to Dylan-DPC-zz/rust
that referenced
this issue
Feb 10, 2020
…arkor Improve performance of coherence checks The biggest perf improvement in here is expected to come from the removal of the remaining rust-lang#43355 warning code since that effectively runs the expensive parts of coherence *twice*, which can even be visualized by obtaining a flamegraph: ![image](https://user-images.githubusercontent.com/5047365/74091959-e1f41200-4a8b-11ea-969d-2849d3f86c63.png)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
C-bug
Category: This is a bug.
I-ICE
Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
P-high
High priority
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
Overlap checker considers possible downstream
impl
, but it is insufficient if it may contain fundamental types. May cause ICE.In stable (1.18.0), ICE is triggered when compiling downstream main.
In nightly, ICE is triggered when compiling even upstream
foo
. Perhaps this is a different bug.The text was updated successfully, but these errors were encountered: