From f8deed3a3a1431bc40e7f9165c30de11ca9d2532 Mon Sep 17 00:00:00 2001 From: Ayaz Hafiz Date: Tue, 7 Jul 2020 07:31:09 -0700 Subject: [PATCH] Include const generic type bounds in their spans Closes #4310 --- src/items.rs | 3 +-- src/spanned.rs | 3 ++- tests/target/issue-4310.rs | 9 +++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 tests/target/issue-4310.rs diff --git a/src/items.rs b/src/items.rs index 70cd7faad8b..f1d191783c9 100644 --- a/src/items.rs +++ b/src/items.rs @@ -2217,11 +2217,10 @@ fn rewrite_fn_base( // Skip `pub(crate)`. let lo_after_visibility = get_bytepos_after_visibility(&fn_sig.visibility, span); - // A conservative estimation, to goal is to be over all parens in generics + // A conservative estimation, the goal is to be over all parens in generics let params_start = fn_sig .generics .params - .iter() .last() .map_or(lo_after_visibility, |param| param.span().hi()); let params_end = if fd.inputs.is_empty() { diff --git a/src/spanned.rs b/src/spanned.rs index 9e3658dd22f..1f6d0023e68 100644 --- a/src/spanned.rs +++ b/src/spanned.rs @@ -132,7 +132,8 @@ impl Spanned for ast::GenericParam { }; let ty_hi = if let ast::GenericParamKind::Type { default: Some(ref ty), - } = self.kind + } + | ast::GenericParamKind::Const { ref ty, .. } = self.kind { ty.span().hi() } else { diff --git a/tests/target/issue-4310.rs b/tests/target/issue-4310.rs new file mode 100644 index 00000000000..6cf494fc5b8 --- /dev/null +++ b/tests/target/issue-4310.rs @@ -0,0 +1,9 @@ +#![feature(const_generics)] + +fn foo< + const N: [u8; { + struct Inner<'a>(&'a ()); + 3 + }], +>() { +}