Remove metavariable fragment to make it reusable for `macro_rules`
Resetting span of `Group` will subtly forget that `Group` comes from metavariable
# Example
**Compile failed case**:
```rust,compile_fail
macro_rules! foo {
(1+2) => {};
}
macro_rules! bar {
($e:expr) => {
foo!($e)
};
}
bar!(1+2);
```
**Use identity macro**:
```rust
use identity_macro::identity;
macro_rules! foo {
(1+2) => {};
}
macro_rules! bar {
($e:expr) => {
identity!(foo!($e))
};
}
bar!(1+2);
```
After matching with objects like `$e:expr`,
the content will be wrapped in a `Group(Delimiter::None)`,
and marked with fragments using span related methods to prevent it from being matched by different fragments
This crate utilizes the fragment information lost when setting the span to enable it to be re matched
**NOTE**:
`macro_rules` will automatically flatten `Group(Delimiter::None)` without fragments,
so there is no need to manually unpack them,
but it is also not possible to use `tt` to pass the entire Group