Repository navigation
compiler error: lifetimes in associated types leading to a compiler error. #58694
Copy link
Copy link
Closed
Labels
A-GATsArea: Generic associated types (GATs)Area: Generic associated types (GATs)A-associated-itemsArea: Associated items (types, constants & functions)Area: Associated items (types, constants & functions)C-bugCategory: This is a bug.Category: This is a bug.F-generic_associated_types`#![feature(generic_associated_types)]` a.k.a. GATs`#![feature(generic_associated_types)]` a.k.a. GATsI-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-mediumMedium priorityMedium priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Hello!
I am getting a compiler error when trying to define the following trait:
trait Foo {
type PublicKey<'a> : From<&'a [u8]>;
}
fn main() {
println!("hello, world!")
}I would have expected my code to compile successfully, or to exit with some error explaining why static compilation failed.
Instead, I am getting a:
error: internal compiler error: src/librustc/ty/subst.rs:426: Region parameter out of range when substituting in region 'a (root type=Some(&'a [u8])) (index=1)
More specifically, I'm having troubles trying to define some type PublicKey that must implement AsRef<[u8]> and From<&[u8]>. If I try with lifetimes I get this compiler error; if I replace the from trait with From<[u8; N]> for some const N: usize (enabling generic_associated_types and const_generics) I get:
error: const generics in any position are currently unsupported
--> foo.rs:4:24
|
4 | type PublicKey<const N: usize> : From<[u8; N]>;
| ^
Am I doing something terribly stupid here or const generics for associated types are not yet ready and lifetimes on associated types lead to a compiler error?
Here's the full traceback
--> foo.rs:3:3
|
3 | type PublicKey<'a> : From<&'a[u8]>;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: add #![feature(generic_associated_types)] to the crate attributes to enable
error: internal compiler error: src/librustc/ty/subst.rs:426: Region parameter out of range when substituting in region 'a (root type=Some(&'a [u8])) (index=1)
thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:558:9
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0658`.
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
note: rustc 1.34.0-nightly (aadbc459b 2019-02-23) running on x86_64-unknown-linux-gnu
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
A-GATsArea: Generic associated types (GATs)Area: Generic associated types (GATs)A-associated-itemsArea: Associated items (types, constants & functions)Area: Associated items (types, constants & functions)C-bugCategory: This is a bug.Category: This is a bug.F-generic_associated_types`#![feature(generic_associated_types)]` a.k.a. GATs`#![feature(generic_associated_types)]` a.k.a. GATsI-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-mediumMedium priorityMedium priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Activity
[-]compiler error: lifetimes in traits leading to a compiler error.[/-][+]compiler error: lifetimes in associated types leading to a compiler error.[/+]jonas-schievink commentedon Feb 24, 2019
type PublicKey<'a>defines a generic associated type, which aren't yet fully implemented.hellow554 commentedon Feb 25, 2019
That's correct, but even without enabled feature it crashes, which should not happen, or am I wrong? :/
emilyalbini commentedon Feb 25, 2019
cc @rust-lang/compiler @rust-lang/release
It's technically a stable-to-beta regression, but it goes from hard error to ICE so I don't think it's worth blocking the release on this.
(Also woops, mistakenly closed the issue)
Centril commentedon Feb 25, 2019
As long as we're not breaking working code it's not really a breakage and so I agree we should not block a release on it.
arielb1 commentedon Feb 25, 2019
Also +1 for not blocking the release on this.
This error does not only occur in code that is illegal, it (apparently) only occurs in code that has already triggered a visible, clear, feature-gate error. Therefore, it's not even a particularly-high risk for confusing users (unlike e.g. an ICE that occurs instead of a valid error message, or an ICE that occurs after an obscure error message).
pnkfelix commentedon Feb 28, 2019
triage: P-medium. Assigning to self for initial investigation.
(P-medium based on the reasons given by @arielb1 : the risks for end users here do seem quite low.)
3 remaining items
pnkfelix commentedon Jul 9, 2019
This seems like it was fixed. Going to bisect and see if a corresponding test was already added at time it was fixed.
pnkfelix commentedon Jul 9, 2019
Fixed between nightly-2019-05-25 (dec4c52 2019-05-24) and nightly-2019-05-26 (f492693 2019-05-25)
Here's what landed in that time frame:
pnkfelix commentedon Jul 9, 2019
Oh, I fixed this back in PR #61118 (to fix #60654), which was part of rollup #61150, but I didn't notice that #60654 was a duplicate of #58694.
hellow554 commentedon Jul 9, 2019
@pnkfelix it is not really fixed. It doesn't crash anymore with the above code, but it still ICEs with the feature gate: playground
pnkfelix commentedon Jul 9, 2019
well, if the ICE is not occurring any more when the feature attribute is omitted and we're back to a hard error, then its not a regression-from-stable-to-stable.
pnkfelix commentedon Jul 9, 2019
I'm going to open a fresh issue to track the problem with the feature gate enabled, because the comments in #58694 and #60654 make it hard to tell which bug (the ICE without feature-gate vs the ICE with feature-gate) is being discussed.
pnkfelix commentedon Jul 9, 2019
(the remaining bug, when the feature gate is enabled, is tracked in issue #62521)
pnkfelix commentedon Jul 9, 2019
closing as fixed as remaining bug is in #62521