async-attributes
async-attributes copied to clipboard
Prevent the full-file "error[E0601]: `main` function not found in crate" error
The What
When using the #[async_attributes::main] macro and compiling a rust program with a syntax error in the main function, the user would be met with a big, intrusive, unhelpful error that there is no main function in the file. This can get very annoying, especially when paired with rust-analyzer and its on screen errors (taking up the whole file).
The Why
This error is caused when the main proc-macro fails to parse the inputted function with the syn::parse_macro_input!, causing it to return early, producing no main function.
The Fix
This PR uses the syn::parse function directly so that a parsing error can be caught, producing a placeholder empty main function to suppress the extraneous error. This placeholder main function will never be able to compile into a final executable since the macro also emits a compiler_error!.