Skip to content

Prevent the full-file "error[E0601]: main function not found in crate" error #24

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

DusterTheFirst
Copy link

@DusterTheFirst DusterTheFirst commented Apr 1, 2021

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!.

@DusterTheFirst DusterTheFirst marked this pull request as ready for review April 1, 2021 21:28
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant