Use Group::span_open and span_close in error spans
Macro 1:
input.parse::<Ident>()?;
Before:
error: expected identifier
--> src/main.rs:3:4
|
3 | m!([a]);
| ^^^
After:
error: expected identifier
--> src/main.rs:3:4
|
3 | m!([a]);
| ^
Macro 2:
let content;
bracketed!(content in input);
content.parse::<Ident>()?;
content.parse::<Ident>()?;
Before:
error: unexpected end of input, expected identifier
--> src/main.rs:3:4
|
3 | m!([a]);
| ^^^
After:
error: unexpected end of input, expected identifier
--> src/main.rs:3:6
|
3 | m!([a]);
| ^
diff --git a/src/group.rs b/src/group.rs
index 7a6556c..272e435 100644
--- a/src/group.rs
+++ b/src/group.rs
@@ -74,9 +74,13 @@
fn parse_delimited(input: ParseStream, delimiter: Delimiter) -> Result<(Span, ParseBuffer)> {
input.step(|cursor| {
if let Some((content, span, rest)) = cursor.group(delimiter) {
- let unexpected = private::get_unexpected(input);
+ #[cfg(procmacro2_semver_exempt)]
+ let scope = private::close_span_of_group(*cursor);
+ #[cfg(not(procmacro2_semver_exempt))]
+ let scope = span;
let nested = private::advance_step_cursor(cursor, content);
- let content = private::new_parse_buffer(span, nested, unexpected);
+ let unexpected = private::get_unexpected(input);
+ let content = private::new_parse_buffer(scope, nested, unexpected);
Ok(((span, content), rest))
} else {
let message = match delimiter {