1

I have a procedural macro I have implemented which depends on the proc-macro-error crate. My client project depends on this macro crate.

When I build for native, everything works perfectly, but when I build for wasm, I get a number of errors thrown from proc-macro-error:

error[E0599]: no method named `unwrap` found for struct `proc_macro2::Span` in the current scope
  --> /Users/spencerkohan/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/imp/delegate.rs:33:38
   |
33 |     let span = span_range.collapse().unwrap();
   |                                      ^^^^^^ method not found in `proc_macro2::Span`

error[E0599]: no method named `unwrap` found for struct `proc_macro2::Span` in the current scope
  --> /Users/spencerkohan/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/imp/delegate.rs:49:53
   |
49 |                 res.span_note(span_range.collapse().unwrap(), msg)
   |                                                     ^^^^^^ method not found in `proc_macro2::Span`

error[E0599]: no method named `unwrap` found for struct `proc_macro2::Span` in the current scope
  --> /Users/spencerkohan/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/imp/delegate.rs:52:53
   |
52 |                 res.span_help(span_range.collapse().unwrap(), msg)
   |                                                     ^^^^^^ method not found in `proc_macro2::Span`

error[E0599]: no method named `unwrap` found for struct `proc_macro2::Span` in the current scope
  --> /Users/spencerkohan/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/imp/delegate.rs:60:42
   |
60 |         let span = span_range.collapse().unwrap();
   |                                          ^^^^^^ method not found in `proc_macro2::Span`

error[E0277]: the trait bound `proc_macro::TokenStream: From<TokenStream2>` is not satisfied
   --> /Users/spencerkohan/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/lib.rs:459:29
    |
459 |                 gen_error().into()
    |                             ^^^^ the trait `From<TokenStream2>` is not implemented for `proc_macro::TokenStream`
    |
    = help: the trait `From<proc_macro::TokenTree>` is implemented for `proc_macro::TokenStream`
    = note: required because of the requirements on the impl of `Into<proc_macro::TokenStream>` for `TokenStream2`

error[E0277]: the trait bound `proc_macro::TokenStream: From<TokenStream2>` is not satisfied
   --> /Users/spencerkohan/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/lib.rs:464:34
    |
464 |             Ok(_) => gen_error().into(),
    |                                  ^^^^ the trait `From<TokenStream2>` is not implemented for `proc_macro::TokenStream`
    |
    = help: the trait `From<proc_macro::TokenTree>` is implemented for `proc_macro::TokenStream`
    = note: required because of the requirements on the impl of `Into<proc_macro::TokenStream>` for `TokenStream2`

error[E0277]: the trait bound `proc_macro2::Span: From<proc_macro::Span>` is not satisfied
   --> /Users/spencerkohan/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/lib.rs:549:37
    |
549 |                 first: self.clone().into(),
    |                                     ^^^^ the trait `From<proc_macro::Span>` is not implemented for `proc_macro2::Span`
    |
    = note: required because of the requirements on the impl of `Into<proc_macro2::Span>` for `proc_macro::Span`

error[E0277]: the trait bound `proc_macro2::Span: From<proc_macro::Span>` is not satisfied
   --> /Users/spencerkohan/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/lib.rs:550:36
    |
550 |                 last: self.clone().into(),
    |                                    ^^^^ the trait `From<proc_macro::Span>` is not implemented for `proc_macro2::Span`
    |
    = note: required because of the requirements on the impl of `Into<proc_macro2::Span>` for `proc_macro::Span`

It doesn't make sense to me why there should be an issue: this code is not actually compiled for wasm, it's only called inside the proc macro, which is used at compile time.

How can I solve this issue?

markalex
  • 8,623
  • 2
  • 7
  • 32
sak
  • 2,612
  • 24
  • 55
  • How does you `Cargo.toml` look like? More specifically, what section this proc-macro crate is in? – Cerberus Oct 15 '22 at 16:26
  • The proc macro crate is just in the main dependencies section. Where should it be? – sak Oct 15 '22 at 16:46

0 Answers0