error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:47:5
   |
LL |     invoke_with_crate!{input proc_macro_item}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `invoke_with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:48:5
   |
LL |     invoke_with_ident!{input proc_macro_item}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:49:5
   |
LL |     invoke_with_crate!{call proc_macro_item}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:50:5
   |
LL |     invoke_with_ident!{call proc_macro_item}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:51:5
   |
LL |     invoke_with_ident!{hello call proc_macro_item}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate::proc_macro_item`
  --> $DIR/mixed-site-span.rs:54:5
   |
LL |     invoke_with_ident!{krate input proc_macro_item}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---------------^
   |     |                              |
   |     |                              help: a similar name exists in the module: `proc_macro_rules`
   |     no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate::proc_macro_item`
  --> $DIR/mixed-site-span.rs:55:5
   |
LL |     with_crate!{krate input proc_macro_item}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^---------------^
   |     |                       |
   |     |                       help: a similar name exists in the module: `proc_macro_rules`
   |     no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:56:5
   |
LL |     with_crate!{krate call proc_macro_item}
   |     ^^^^^^^^^^^^^^^^^^^^^^^---------------^
   |     |                      |
   |     |                      help: a similar name exists in the module: `proc_macro_rules`
   |     no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:60:28
   |
LL |         invoke_with_ident!{$crate input proc_macro_item}
   |                            ^^^^^^       --------------- help: a similar name exists in the module: `proc_macro_rules`
   |                            |
   |                            no `proc_macro_item` in the root
...
LL |     test!();
   |     ------- in this macro invocation
   |
   = note: this error originates in the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:61:21
   |
LL |         with_crate!{$crate input proc_macro_item}
   |                     ^^^^^^       --------------- help: a similar name exists in the module: `proc_macro_rules`
   |                     |
   |                     no `proc_macro_item` in the root
...
LL |     test!();
   |     ------- in this macro invocation
   |
   = note: this error originates in the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:62:9
   |
LL |         with_crate!{$crate call proc_macro_item}
   |         ^^^^^^^^^^^^^^^^^^^^^^^^---------------^
   |         |                       |
   |         |                       help: a similar name exists in the module: `proc_macro_rules`
   |         no `proc_macro_item` in the root
...
LL |     test!();
   |     ------- in this macro invocation
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:67:5
   |
LL |     test!();
   |     ^^^^^^^ no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate::TokenItem`
  --> $DIR/mixed-site-span.rs:87:5
   |
LL |     invoke_with_ident!{krate input TokenItem}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/mixed-site-span.rs:59:34
   |
LL |     quote!(use $krate::$ident as token_site_span::TokenItem as _;)
   |                                  +++++++++++++++++++++++++++++

error[E0432]: unresolved import `$crate::TokenItem`
  --> $DIR/mixed-site-span.rs:88:5
   |
LL |     with_crate!{krate input TokenItem}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
   |
   = note: this error originates in the macro `with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/mixed-site-span.rs:59:34
   |
LL |     quote!(use $krate::$ident as token_site_span::TokenItem as _;)
   |                                  +++++++++++++++++++++++++++++

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:89:5
   |
LL |     with_crate!{krate call TokenItem}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
   |
   = note: this error originates in the macro `with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
   |
LL -     with_crate!{krate call TokenItem}
LL +     token_site_span::TokenItem as _
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:92:5
   |
LL |     invoke_with_crate!{mixed TokenItem}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:13:30
   |
LL -     ($s:ident $i:ident) => { with_crate!{$crate $s $i} };
LL +     ($s:ident $i:ident) => { token_site_span::TokenItem as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:93:5
   |
LL |     invoke_with_ident!{mixed TokenItem}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:18:30
   |
LL -     ($s:ident $i:ident) => { with_crate!{krate $s $i} };
LL +     ($s:ident $i:ident) => { token_site_span::TokenItem as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:94:5
   |
LL |     invoke_with_ident!{krate mixed TokenItem}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:19:39
   |
LL -     ($m:ident $s:ident $i:ident) => { with_crate!{$m $s $i} };
LL +     ($m:ident $s:ident $i:ident) => { token_site_span::TokenItem as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:95:5
   |
LL |     with_crate!{krate mixed TokenItem}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
   |
   = note: this error originates in the macro `with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
   |
LL -     with_crate!{krate mixed TokenItem}
LL +     token_site_span::TokenItem as _
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:99:28
   |
LL |         invoke_with_ident!{$crate input TokenItem}
   |                            ^^^^^^ no `TokenItem` in the root
...
LL |     test!();
   |     ------- in this macro invocation
   |
   = note: this error originates in the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
   |
LL -         invoke_with_ident!{$crate input TokenItem}
LL +         invoke_with_ident!{token_site_span::TokenItem as _ input TokenItem}
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:100:21
   |
LL |         with_crate!{$crate input TokenItem}
   |                     ^^^^^^ no `TokenItem` in the root
...
LL |     test!();
   |     ------- in this macro invocation
   |
   = note: this error originates in the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
   |
LL -         with_crate!{$crate input TokenItem}
LL +         with_crate!{token_site_span::TokenItem as _ input TokenItem}
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:101:9
   |
LL |         with_crate!{$crate call TokenItem}
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
...
LL |     test!();
   |     ------- in this macro invocation
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
   |
LL -         with_crate!{$crate call TokenItem}
LL +         token_site_span::TokenItem as _
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:108:5
   |
LL |     test!();
   |     ^^^^^^^ no `TokenItem` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:19:39
   |
LL -     ($m:ident $s:ident $i:ident) => { with_crate!{$m $s $i} };
LL +     ($m:ident $s:ident $i:ident) => { token_site_span::TokenItem as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:105:9
   |
LL |         with_crate!{$crate mixed TokenItem}
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
...
LL |     test!();
   |     ------- in this macro invocation
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
   |
LL -         with_crate!{$crate mixed TokenItem}
LL +         token_site_span::TokenItem as _
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:129:5
   |
LL |     invoke_with_crate!{input ItemUse}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `invoke_with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:13:42
   |
LL -     ($s:ident $i:ident) => { with_crate!{$crate $s $i} };
LL +     ($s:ident $i:ident) => { with_crate!{ItemUse as _ $s $i} };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:130:5
   |
LL |     invoke_with_ident!{input ItemUse}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:18:42
   |
LL -     ($s:ident $i:ident) => { with_crate!{krate $s $i} };
LL +     ($s:ident $i:ident) => { with_crate!{ItemUse as _ $s $i} };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:133:5
   |
LL |     invoke_with_crate!{mixed ItemUse}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:13:30
   |
LL -     ($s:ident $i:ident) => { with_crate!{$crate $s $i} };
LL +     ($s:ident $i:ident) => { ItemUse as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:134:5
   |
LL |     invoke_with_ident!{mixed ItemUse}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:18:30
   |
LL -     ($s:ident $i:ident) => { with_crate!{krate $s $i} };
LL +     ($s:ident $i:ident) => { ItemUse as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:135:5
   |
LL |     invoke_with_ident!{krate mixed ItemUse}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:19:39
   |
LL -     ($m:ident $s:ident $i:ident) => { with_crate!{$m $s $i} };
LL +     ($m:ident $s:ident $i:ident) => { ItemUse as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:136:5
   |
LL |     with_crate!{krate mixed ItemUse}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
   |
LL -     with_crate!{krate mixed ItemUse}
LL +     ItemUse as _
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:138:5
   |
LL |     invoke_with_crate!{call ItemUse}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_crate` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:13:30
   |
LL -     ($s:ident $i:ident) => { with_crate!{$crate $s $i} };
LL +     ($s:ident $i:ident) => { ItemUse as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:139:5
   |
LL |     invoke_with_ident!{call ItemUse}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:18:30
   |
LL -     ($s:ident $i:ident) => { with_crate!{krate $s $i} };
LL +     ($s:ident $i:ident) => { ItemUse as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:140:5
   |
LL |     invoke_with_ident!{hello call ItemUse}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `invoke_with_ident` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:19:39
   |
LL -     ($m:ident $s:ident $i:ident) => { with_crate!{$m $s $i} };
LL +     ($m:ident $s:ident $i:ident) => { ItemUse as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:148:5
   |
LL |     test!();
   |     ^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:19:39
   |
LL -     ($m:ident $s:ident $i:ident) => { with_crate!{$m $s $i} };
LL +     ($m:ident $s:ident $i:ident) => { ItemUse as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:144:9
   |
LL |         with_crate!{$crate mixed ItemUse}
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
...
LL |     test!();
   |     ------- in this macro invocation
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
   |
LL -         with_crate!{$crate mixed ItemUse}
LL +         ItemUse as _
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:148:5
   |
LL |     test!();
   |     ^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `with_crate` which comes from the expansion of the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:19:39
   |
LL -     ($m:ident $s:ident $i:ident) => { with_crate!{$m $s $i} };
LL +     ($m:ident $s:ident $i:ident) => { ItemUse as _ };
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:153:1
   |
LL | use_input_crate!{proc_macro_item}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `use_input_crate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:154:1
   |
LL | use_input_krate!{proc_macro_item}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `use_input_krate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:157:1
   |
LL | use_call_crate!{proc_macro_item}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `use_call_crate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:158:1
   |
LL | use_call_krate!{proc_macro_item}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `proc_macro_item` in the root
   |
   = note: this error originates in the macro `use_call_krate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:163:1
   |
LL | use_mixed_crate!{TokenItem}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
   |
   = note: this error originates in the macro `use_mixed_crate` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:24:5
   |
LL -     declare_macro!{$crate mixed use_mixed_crate}
LL +     token_site_span::TokenItem as _
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:164:1
   |
LL | use_mixed_krate!{TokenItem}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TokenItem` in the root
   |
   = note: this error originates in the macro `use_mixed_krate` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct instead
  --> $DIR/auxiliary/token-site-span.rs:29:1
   |
LL - declare_macro!{krate mixed use_mixed_krate}
LL + token_site_span::TokenItem as _
   |

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:169:1
   |
LL | use_input_crate!{ItemUse}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `use_input_crate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:170:1
   |
LL | use_input_krate!{ItemUse}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `use_input_krate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:171:1
   |
LL | use_mixed_crate!{ItemUse}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `use_mixed_crate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:172:1
   |
LL | use_mixed_krate!{ItemUse}
   | ^^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `use_mixed_krate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:173:1
   |
LL | use_call_crate!{ItemUse}
   | ^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `use_call_crate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved import `$crate`
  --> $DIR/mixed-site-span.rs:174:1
   |
LL | use_call_krate!{ItemUse}
   | ^^^^^^^^^^^^^^^^^^^^^^^^ no `ItemUse` in the root
   |
   = note: this error originates in the macro `use_call_krate` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0426]: use of undeclared label `'label_use`
  --> $DIR/mixed-site-span.rs:21:9
   |
LL |         proc_macro_rules!();
   |         ^^^^^^^^^^^^^^^^^^^ undeclared label `'label_use`
   |
   = note: this error originates in the macro `proc_macro_rules` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0412]: cannot find type `ItemUse` in crate `$crate`
  --> $DIR/mixed-site-span.rs:21:9
   |
LL |         proc_macro_rules!();
   |         ^^^^^^^^^^^^^^^^^^^ not found in `$crate`
   |
   = note: this error originates in the macro `proc_macro_rules` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this struct
   |
LL + use ItemUse;
   |

error[E0425]: cannot find value `local_use` in this scope
  --> $DIR/mixed-site-span.rs:21:9
   |
LL |         proc_macro_rules!();
   |         ^^^^^^^^^^^^^^^^^^^ help: a local variable with a similar name exists: `local_def`
   |
   = note: this error originates in the macro `proc_macro_rules` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0425]: cannot find value `local_def` in this scope
  --> $DIR/mixed-site-span.rs:26:9
   |
LL |         local_def;
   |         ^^^^^^^^^ help: a local variable with a similar name exists: `local_use`

error: aborting due to 52 previous errors

Some errors have detailed explanations: E0412, E0425, E0426, E0432.
For more information about an error, try `rustc --explain E0412`.
