Open AZMCode opened 3 years ago
Good idea! I'm definitely interested in this, I'll try implementing this
I implemented the idea, but after testing it, it feels underwhelming since proc-macro are compile-time you can't really interact with them in the repl.
You can test the code here https://github.com/sigmaSd/IRust/commit/0617d14b507e4ee102d58de919604ebc672f2ecd . The idea was to enable proc macros with :proc_macro
and to switch between writing to main.rs
and lib.rs
using :file {file}
Like I said trying it out in practice its doesn't feel really interesting, on the other hand I want to mention you can already interact with proc macros crate using irust in a different way:
Any change made to the crate will be immediately reflected, which I think has some of the advantages of supporting procmacros
Here is a demo
One thing I noticed, is dbg! in proc-macros only appears if the compilation is not successful, I think that something that can be improved on.
Wait wait, I think we might be talking about different things here. What I at least intended to suggest in this specific issue was the ability to use the proc_macro
API in irust (TokenStream
, TokenTree
, etc) to test out code for later use within a proc_macro
crate. At least I tested the new version and had no luck getting it to work.
In any case, I'm not sure I fully understand the changes you've done. I tried doing the process enabling the proc_macro
flag first, and no dice.
Here's an asciinema clip to show what i mean. In case you wonder what ./new_irust
is, it's just a symlink to the compiled version of the commit you sent. In any case, very much thanks for the lightning fast response and enthusiasm!
Here is how you can use the new commit
(note: to be able to write #[proc_macro]fn ...
-> after writing #[proc_macro]
you can use alt+enter
to add a new line instead of evaluating the input)
But I see what you're trying to do, It would be nice if there was an ergonomic way to call proc_macros apis
Think this is a way to achieve what you want https://github.com/sigmaSd/procmacro/blob/master/src/main.rs
Cool! Do I close the issue or do you wish to keep improving the feature?
I prefer to keep the issue open till I figure it out, thanks!
Recently I've been trying to test some ideas for a
proc_macro
crate I'm building, and despite being able to load theproc_macro
crate through theextern crate proc_macro
, access toproc_macro
APIs is followed by this error:Perhaps there could be a command to enable or disable these APIs?