Fix a span in parse_ty_bare_fn
.
It currently goes one token too far. Example: line 259 of `tests/ui/abi/compatibility.rs`: ``` test_abi_compatible!(fn_fn, fn(), fn(i32) -> i32); ``` This commit changes the span for the second element from `fn(),` to `fn()`, i.e. removes the extraneous comma.
This commit is contained in:
parent
c290e9de32
commit
cf0251d92c
4 changed files with 5 additions and 4 deletions
|
@ -2126,7 +2126,8 @@ pub struct BareFnTy {
|
||||||
pub ext: Extern,
|
pub ext: Extern,
|
||||||
pub generic_params: ThinVec<GenericParam>,
|
pub generic_params: ThinVec<GenericParam>,
|
||||||
pub decl: P<FnDecl>,
|
pub decl: P<FnDecl>,
|
||||||
/// Span of the `fn(...) -> ...` part.
|
/// Span of the `[unsafe] [extern] fn(...) -> ...` part, i.e. everything
|
||||||
|
/// after the generic params (if there are any, e.g. `for<'a>`).
|
||||||
pub decl_span: Span,
|
pub decl_span: Span,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -608,7 +608,7 @@ impl<'a> Parser<'a> {
|
||||||
self.dcx().emit_err(FnPointerCannotBeAsync { span: whole_span, qualifier: span });
|
self.dcx().emit_err(FnPointerCannotBeAsync { span: whole_span, qualifier: span });
|
||||||
}
|
}
|
||||||
// FIXME(gen_blocks): emit a similar error for `gen fn()`
|
// FIXME(gen_blocks): emit a similar error for `gen fn()`
|
||||||
let decl_span = span_start.to(self.token.span);
|
let decl_span = span_start.to(self.prev_token.span);
|
||||||
Ok(TyKind::BareFn(P(BareFnTy { ext, safety, generic_params: params, decl, decl_span })))
|
Ok(TyKind::BareFn(P(BareFnTy { ext, safety, generic_params: params, decl, decl_span })))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ error: function pointers cannot be declared with `safe` safety qualifier
|
||||||
--> $DIR/safe-outside-extern.rs:24:14
|
--> $DIR/safe-outside-extern.rs:24:14
|
||||||
|
|
|
|
||||||
LL | type FnPtr = safe fn(i32, i32) -> i32;
|
LL | type FnPtr = safe fn(i32, i32) -> i32;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to 5 previous errors
|
error: aborting due to 5 previous errors
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ error: function pointers cannot be declared with `safe` safety qualifier
|
||||||
--> $DIR/safe-outside-extern.rs:24:14
|
--> $DIR/safe-outside-extern.rs:24:14
|
||||||
|
|
|
|
||||||
LL | type FnPtr = safe fn(i32, i32) -> i32;
|
LL | type FnPtr = safe fn(i32, i32) -> i32;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0658]: `unsafe extern {}` blocks and `safe` keyword are experimental
|
error[E0658]: `unsafe extern {}` blocks and `safe` keyword are experimental
|
||||||
--> $DIR/safe-outside-extern.rs:4:1
|
--> $DIR/safe-outside-extern.rs:4:1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue