Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[beta] rustdoc: semi-revert libsyntax doctest parsing if a macro is wrapping main #57019

Merged
merged 1 commit into from
Jan 5, 2019

Conversation

QuietMisdreavus
Copy link
Member

Fixes #56898

This is a patch to doctest parsing on beta (that i plan to "forward-port" to master) that reverts to the old text-based fn main scan if it found a macro invocation in the doctest but did not find a main function. This should solve situations like allocator_api which wrap their main functions in a macro invocation, but doesn't solve something like the initial version of quicli which used a macro to generate the main function. (Properly doing the latter involves running macro expansion before checking, which is a bit too involved for a beta fix.)

@pietroalbini
Copy link
Member

Ping @rust-lang/rustdoc, can someone review this?

@pietroalbini pietroalbini added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 1, 2019
@QuietMisdreavus
Copy link
Member Author

r? @GuillaumeGomez

@GuillaumeGomez
Copy link
Member

I feel like this is getting more and more hackish code. But at least it does the job. Thanks!

@bors: r+

@bors
Copy link
Contributor

bors commented Jan 3, 2019

📌 Commit 339148d has been approved by GuillaumeGomez

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 3, 2019
@bors
Copy link
Contributor

bors commented Jan 5, 2019

⌛ Testing commit 339148d with merge 2bde39b...

bors added a commit that referenced this pull request Jan 5, 2019
…=GuillaumeGomez

[beta] rustdoc: semi-revert libsyntax doctest parsing if a macro is wrapping main

Fixes #56898

This is a patch to doctest parsing on beta (that i plan to "forward-port" to master) that reverts to the old text-based `fn main` scan if it found a macro invocation in the doctest but did not find a main function. This should solve situations like `allocator_api` which wrap their main functions in a macro invocation, but doesn't solve something like the initial version of `quicli` which used a macro to *generate* the main function. (Properly doing the latter involves running macro expansion before checking, which is a bit too involved for a beta fix.)
@bors
Copy link
Contributor

bors commented Jan 5, 2019

☀️ Test successful - status-appveyor, status-travis
Approved by: GuillaumeGomez
Pushing 2bde39b to beta...

@bors bors merged commit 339148d into rust-lang:beta Jan 5, 2019
@QuietMisdreavus QuietMisdreavus deleted the semi-revert-doctest-parsing branch January 7, 2019 17:19
Centril added a commit to Centril/rust that referenced this pull request Jan 12, 2019
…-parsing, r=GuillaumeGomez

rustdoc: use text-based doctest parsing if a macro is wrapping main

This is a "forward-port" of rust-lang#57019, intended to get rust-lang#56898 on nightly, since it's now fixed on beta (and already worked on stable).

To recap:

* The libsyntax-based doctest parsing now checks to see whether there is a top-level macro invocation in the doctest while it's checking for `fn main` and an `extern crate` statement.
* If it finds a macro invocation and *didn't* find `fn main`, then it performs the older text-based scan to allow doctests like the ones in `allocator_api` to still compile.

A "proper" fix will involve changing how `make_test` works to call it later in the `run_test` function, after the initial steps of compilation have completed. I've filed [a separate issue](rust-lang#57415) for that, though.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants