Auto merge of #86332 - rylev:fix-ice-docalias, r=GuillaumeGomez

Fix ICE when doc aliases were put on function params

Fixes #86239

r? `@GuillaumeGomez`
This commit is contained in:
bors 2021-06-16 10:01:20 +00:00
commit 8daad743c4
3 changed files with 13 additions and 4 deletions

View file

@ -456,6 +456,8 @@ fn check_doc_alias_value(
_ => None,
}
}
// we check the validity of params elsewhere
Target::Param => return false,
_ => None,
} {
return err_fn(meta.span(), &format!("isn't allowed on {}", err));

View file

@ -1,9 +1,9 @@
#![crate_type="lib"]
#![crate_type = "lib"]
pub struct Bar;
pub trait Foo {
type X;
fn foo() -> Self::X;
fn foo(x: u32) -> Self::X;
}
#[doc(alias = "foo")] //~ ERROR
@ -19,7 +19,8 @@ impl Bar {
impl Foo for Bar {
#[doc(alias = "assoc")] //~ ERROR
type X = i32;
fn foo() -> Self::X {
fn foo(#[doc(alias = "qux")] _x: u32) -> Self::X {
//~^ ERROR
0
}
}

View file

@ -1,3 +1,9 @@
error: allow, cfg, cfg_attr, deny, forbid, and warn are the only allowed built-in attributes in function parameters
--> $DIR/check-doc-alias-attr-location.rs:22:12
|
LL | fn foo(#[doc(alias = "qux")] _x: u32) -> Self::X {
| ^^^^^^^^^^^^^^^^^^^^^
error: `#[doc(alias = "...")]` isn't allowed on extern block
--> $DIR/check-doc-alias-attr-location.rs:9:7
|
@ -22,5 +28,5 @@ error: `#[doc(alias = "...")]` isn't allowed on type alias in implementation blo
LL | #[doc(alias = "assoc")]
| ^^^^^^^^^^^^^^^
error: aborting due to 4 previous errors
error: aborting due to 5 previous errors