Skip to content

Conversation

QuietMisdreavus
Copy link
Contributor

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
Contributor 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
Collaborator

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
Collaborator

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
Collaborator

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