Don't ICE on operator trait methods with generic methods
Emit a fatal error instead.
This commit is contained in:
parent
cc9b259b5e
commit
cedaaa640e
5 changed files with 50 additions and 1 deletions
23
src/test/ui/traits/invalid_operator_trait.rs
Normal file
23
src/test/ui/traits/invalid_operator_trait.rs
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
#![crate_type = "lib"]
|
||||
#![feature(lang_items)]
|
||||
#![feature(no_core)]
|
||||
#![no_core]
|
||||
|
||||
#[lang="sized"]
|
||||
pub trait Sized {
|
||||
// Empty.
|
||||
}
|
||||
|
||||
#[lang = "add"]
|
||||
trait Add<RHS=Self> {
|
||||
type Output;
|
||||
|
||||
fn add<Y>(self, _: RHS) -> Self::Output;
|
||||
//~^ ERROR `add` must not have any generic parameters
|
||||
}
|
||||
|
||||
#[allow(unreachable_code)]
|
||||
fn ice(a: usize) {
|
||||
let r = loop {};
|
||||
r = r + a;
|
||||
}
|
||||
8
src/test/ui/traits/invalid_operator_trait.stderr
Normal file
8
src/test/ui/traits/invalid_operator_trait.stderr
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
error: `add` must not have any generic parameters
|
||||
--> $DIR/invalid_operator_trait.rs:15:5
|
||||
|
|
||||
LL | fn add<Y>(self, _: RHS) -> Self::Output;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue